Bologna 28/29 Ottobre 2011 Aumentiamo la sicurezza in TYPO3 Mauro Lorenzutti T3Camp Italia  Il secondo evento italiano ded...
Mauro Lorenzutti <ul><li>CTO di Webformat </li></ul><ul><li>Sviluppatore e consulente TYPO3 dal 2004 </li></ul><ul><li>TYP...
Sicurezza? <ul><li>Cosa si intende per sicurezza informatica? </li></ul><ul><ul><li>Confidenzialità </li></ul></ul><ul><ul...
Voglio un sito sicuro! <ul><li>La sicurezza al 100% non esiste! </li></ul><ul><li>Un'applicazione non potrà mai essere *si...
Vulnerabilità <ul><li>Una vulnerabilità è una mancanza o una debolezza nell’applicazione che consente ad un intruso di cau...
OWASP TOP 10 <ul><li>A1: Injection </li></ul><ul><li>A2: Cross-Site Scripting (XSS) </li></ul><ul><li>A3: Broken Authentic...
Di cosa parleremo <ul><li>Configuriamo TYPO3 correttamente </li></ul><ul><li>Proteggiamo le nostre estensioni </li></ul><u...
Di cosa NON parleremo <ul><li>Configurazioni di: </li></ul><ul><ul><li>Sistema Operativo </li></ul></ul><ul><ul><li>Apache...
<ul><li>CONFIGURIAMO </li></ul><ul><li>TYPO3 </li></ul><ul><li>CORRETTAMENTE </li></ul>http://www.t3campitalia.it/ Pag.
1. Permessi sui file <ul><li>Abilitare la struttura su: </li></ul><ul><ul><li>fileadmin </li></ul></ul><ul><ul><li>typo3co...
2. Dummy <ul><li>Usare il pacchetto Dummy quando si inizia lo sviluppo di un nuovo sito </li></ul><ul><li>Non usare i pacc...
3. Admin user <ul><li>Cambiare la password dell’utente “admin” </li></ul><ul><li>Rinominare lo username dell’utente “admin...
4.1 Configurazioni  dedicate <ul><li>[strictFormmail] </li></ul><ul><ul><li>Impedisce l’invio di email mediante il modulo ...
4.2 Configurazioni dedicate <ul><li>[fileDenyPattern] </li></ul><ul><ul><li>tipologie di file che gli utenti di backend no...
4.3 Configurazioni dedicate <ul><li>[enabledBeUserIPLock] </li></ul><ul><ul><li>blocca la sessione utente di backend ad un...
5. config.baseURL=1 <ul><li>Evitare l’uso di: </li></ul><ul><ul><li>config.baseURL=1 </li></ul></ul><ul><li>Preferire l’us...
6. SSL <ul><li>Considerare l’uso del protocollo  HTTPS per il backend </li></ul><ul><li>Considerare l’uso del protocollo  ...
7. Policy password <ul><li>Le password degli utenti di backend sono già cifrate in md5 </li></ul><ul><li>md5 = sicuro? NO ...
8. Cifratura password <ul><li>TYPO3 salva la password degli utenti di frontend in chiaro!!! </li></ul><ul><li>Attivare la ...
9. Aggiornamenti continui <ul><li>Aggiornare costantemente il core di TYPO3 </li></ul><ul><li>Aggiornare costantemente tut...
10. Rimuovere codice non usato <ul><li>Disinstallare un’estensione  non è sufficiente </li></ul><ul><ul><li>Il codice PHP ...
11. Protezione htaccess <ul><li>Aggiungere barriere! </li></ul><ul><li>Proteggere le seguenti  cartelle mediante htaccess:...
12. Rinominare cartella typo3/ <ul><li>Confondiamo le acque: rinominamo la cartella typo3 </li></ul><ul><li>Usare un nome ...
13. Rimuovere l’Install Tool <ul><li>Dopo l’installazione e configurazione di TYPO3  è possibile rimuovere i file PHP dell...
14. localconf.php <ul><li>Spostare il file localconf.php (o parte del suo contenuto) fuori dalla cartella htdocs </li></ul...
Riassumendo: <ul><li>1. Permessi sui file </li></ul><ul><li>2. Pacchetto dummy </li></ul><ul><li>3. Admin user </li></ul><...
<ul><li>PROTEGGIAMO  LE NOSTRE  ESTENSIONI </li></ul>http://www.t3campitalia.it/ Pag.
Form di ricerca <ul><li>Una semplice form di ricerca pagine: </li></ul>http://www.t3campitalia.it/ Pag.
Trova l’errore http://www.t3campitalia.it/ Pag.
SQL Injection <ul><li>Proviamo a fare la query seguente: </li></ul><ul><ul><li>About&quot; OR 1=&quot;1 </li></ul></ul><ul...
Solo le pagine? <ul><li>Dite che cmq ho solo listato delle pagine nascoste? </li></ul><ul><li>Proviamo con questa ricerca:...
Oddio gli utenti!?!?!?! <ul><li>Siamo riusciti a listare gli utenti di backend e le relative password!!!! </li></ul>http:/...
Ecco la query <ul><li>SELECT uid, title, fe_group  FROM pages  WHERE title LIKE &quot;%About&quot;  UNION SELECT uid, pass...
Come proteggersi? <ul><li>Do not trust users!!! </li></ul><ul><li>È necessario fare un casting o una pulizia dei parametri...
XSS <ul><li>Cross Site Scripting? </li></ul><ul><li>Proviamo a fare questa ricerca: </li></ul><ul><ul><li>About<script typ...
Come proteggersi <ul><li>E questo è niente: mediante XSS è possibile rubare la sessione dell’utente </li></ul><ul><li>Mai,...
Altri attacchi <ul><li>Malicious File Upload </li></ul><ul><ul><li>Gli utenti potrebbero riuscire ad uploadare file PHP, ....
E se trovo una vulnerabilità… <ul><li>…  in un’estensione pubblica o nel core? </li></ul><ul><li>NON segnalare la vulnerab...
<ul><li>ESTENSIONI UTILI </li></ul>http://www.t3campitalia.it/ Pag.
Captcha <ul><li>Per prevenire l’invio di spam mediante i moduli TYPO3 è utile dotarsi di un captcha </li></ul><ul><li>Ci s...
Spamshield <ul><li>wt_spamshield </li></ul><ul><li>Utilizza alcuni semplici controlli per riconoscere lo spam </li></ul><u...
checkmysite <ul><li>Tutte le pagine di TYPO3 sono servite dal file index.php </li></ul><ul><li>Questa estensione verifica ...
wt_doorman <ul><li>Filtra le variabili passate in GET e in POST contro XSS e SQL Injection </li></ul><ul><li>Può essere us...
Testiamolo sulla nostra estensione http://www.t3campitalia.it/ Pag.
PHP IDS <ul><li>PHP Intrusion Detection System –  http://www.phpids.org </li></ul><ul><li>PHP IDS è un layer di sicurezza ...
Testiamolo sulla nostra estensione <ul><li>Proviamo ad eseguire le tre ricerche «malevole» che abbiamo eseguito in precede...
Reagiamo! <ul><li>In base al punteggio di impatto possiamo reagire: </li></ul><ul><ul><li>Salvare un log in un file </li><...
E se mi hanno hackerato? <ul><li>Analizzare i log! </li></ul><ul><ul><li>sys_log table </li></ul></ul><ul><ul><li>access l...
TYPO3 Security Cookbook <ul><li>http://typo3.org/fileadmin/security- team/typo3_security_cookbook_v-0.5.pdf  </li></ul>htt...
Ora so tutto? <ul><li>NO!!! </li></ul><ul><li>La sicurezza non è un risultato, la sicurezza è un processo! </li></ul><ul><...
Discussione aperta <ul><li>Questi sono solo dei suggerimenti per iniziare, ora sta a voi! </li></ul><ul><li>Qualcuno ha qu...
Grazie ! <ul><li>Grazie a tutti per l’attenzione </li></ul><ul><li>I miei riferimenti: </li></ul><ul><ul><li>[email_addres...
Upcoming SlideShare
Loading in...5
×

Aumentiamo la sicurezza in TYPO3

498

Published on

Queste sono le slide della mia presentazione al T3CampItalia 2011. Argomento della presentazione è stata la sicurezza in TYPO3, dalle impostazioni in fase di installazione, alle estensioni utili (es. il PHPIDS: Intrusion detection system), fino alle tecniche di programmazione per evitare gli attacchi più comuni (es. sql injection e cross site scripting).

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
498
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aumentiamo la sicurezza in TYPO3

  1. 1. Bologna 28/29 Ottobre 2011 Aumentiamo la sicurezza in TYPO3 Mauro Lorenzutti T3Camp Italia Il secondo evento italiano dedicato a TYPO3
  2. 2. Mauro Lorenzutti <ul><li>CTO di Webformat </li></ul><ul><li>Sviluppatore e consulente TYPO3 dal 2004 </li></ul><ul><li>TYPO3 Certified Integrator dal 2009 </li></ul><ul><li>Sviluppatore di numerose estensioni, tra cui: </li></ul><ul><ul><li>DB Integration (wfqbe) </li></ul></ul><ul><ul><li>Webformat Shop System (extendedshop) </li></ul></ul><ul><ul><li>TYPO3-Alfresco Connector (alfresco) </li></ul></ul><ul><li>Contacts : </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>www.webformat.com </li></ul></ul>http://www.t3campitalia.it/ Pag.
  3. 3. Sicurezza? <ul><li>Cosa si intende per sicurezza informatica? </li></ul><ul><ul><li>Confidenzialità </li></ul></ul><ul><ul><ul><li>la protezione dei dati e delle informazioni scambiate tra un mittente e uno o più destinatari nei confronti di terze parti. </li></ul></ul></ul><ul><ul><li>Disponibilità </li></ul></ul><ul><ul><ul><li>l'attitudine di un’entità ad essere in grado di svolgere una funzione richiesta in determinate condizioni ad un dato istante, o durante un dato intervallo di tempo, supponendo che siano assicurati i mezzi esterni eventualmente necessari. </li></ul></ul></ul><ul><ul><li>Integrità del dato </li></ul></ul><ul><ul><ul><li>la protezione dei dati e delle informazioni nei confronti delle modifiche del contenuto, accidentali oppure effettuate da una terza parte, essendo compreso nell'alterazione anche il caso limite della generazione ex novo di dati ed informazioni </li></ul></ul></ul>http://www.t3campitalia.it/ Pag.
  4. 4. Voglio un sito sicuro! <ul><li>La sicurezza al 100% non esiste! </li></ul><ul><li>Un'applicazione non potrà mai essere *sicura*, ma solo non insicura in un dato momento temporale </li></ul><ul><li>la sicurezza ha un costo e va valutata in relazione ai possibili rischi </li></ul>http://www.t3campitalia.it/ Pag.
  5. 5. Vulnerabilità <ul><li>Una vulnerabilità è una mancanza o una debolezza nell’applicazione che consente ad un intruso di causare danni o disagi </li></ul><ul><li>Una vulnerabilità può essere causata da un errore di progettazione o da un bug </li></ul><ul><li>OWASP: Open Web Application Security Project ( http://owasp.org ) – un’organizzazione no-profit che ha lo scopo di migliorare la sicurezza nelle applicazioni </li></ul>http://www.t3campitalia.it/ Pag.
  6. 6. OWASP TOP 10 <ul><li>A1: Injection </li></ul><ul><li>A2: Cross-Site Scripting (XSS) </li></ul><ul><li>A3: Broken Authentication and Session Management </li></ul><ul><li>A4: Insecure Direct Object References </li></ul><ul><li>A5: Cross-Site Request Forgery (CSRF) </li></ul><ul><li>A6: Security Misconfiguration </li></ul><ul><li>A7: Insecure Cryptographic Storage </li></ul><ul><li>A8: Failure to Restrict URL Access </li></ul><ul><li>A9: Insufficient Transport Layer Protection </li></ul><ul><li>A10: Unvalidated Redirects and Forwards </li></ul>http://www.t3campitalia.it/ Pag.
  7. 7. Di cosa parleremo <ul><li>Configuriamo TYPO3 correttamente </li></ul><ul><li>Proteggiamo le nostre estensioni </li></ul><ul><li>Estensioni utili </li></ul><ul><li>Aaahhh, mi hanno bucato, e adesso??? </li></ul>http://www.t3campitalia.it/ Pag.
  8. 8. Di cosa NON parleremo <ul><li>Configurazioni di: </li></ul><ul><ul><li>Sistema Operativo </li></ul></ul><ul><ul><li>Apache / IIS </li></ul></ul><ul><ul><li>PHP </li></ul></ul><ul><ul><li>Mysql </li></ul></ul><ul><ul><li>Firewall </li></ul></ul><ul><ul><li>Ecc… </li></ul></ul>http://www.t3campitalia.it/ Pag.
  9. 9. <ul><li>CONFIGURIAMO </li></ul><ul><li>TYPO3 </li></ul><ul><li>CORRETTAMENTE </li></ul>http://www.t3campitalia.it/ Pag.
  10. 10. 1. Permessi sui file <ul><li>Abilitare la struttura su: </li></ul><ul><ul><li>fileadmin </li></ul></ul><ul><ul><li>typo3conf </li></ul></ul><ul><ul><li>typo3temp </li></ul></ul><ul><ul><li>uploads </li></ul></ul><ul><li>NON abilitare la scrittura su: </li></ul><ul><ul><li>t3lib </li></ul></ul><ul><ul><li>typo3 </li></ul></ul><ul><ul><li>index_php </li></ul></ul><ul><ul><li>.htaccess </li></ul></ul>http://www.t3campitalia.it/ Pag.
  11. 11. 2. Dummy <ul><li>Usare il pacchetto Dummy quando si inizia lo sviluppo di un nuovo sito </li></ul><ul><li>Non usare i pacchetti “Introduction package”, “Quickstart” o “Testsite” per nuovi siti </li></ul><ul><li>Almeno ricordarsi di eliminare tutti gli utenti di frontend e di backend… </li></ul>http://www.t3campitalia.it/ Pag.
  12. 12. 3. Admin user <ul><li>Cambiare la password dell’utente “admin” </li></ul><ul><li>Rinominare lo username dell’utente “admin” </li></ul><ul><li>Meglio ancora: cancellare l’utente “admin” e create un nuovo utente amministratore </li></ul><ul><li>Configurare il lockToDomain di utenti e gruppi di backend </li></ul><ul><li>Ricordarsi anche di cambiare la password dell’Install Tool </li></ul>http://www.t3campitalia.it/ Pag.
  13. 13. 4.1 Configurazioni dedicate <ul><li>[strictFormmail] </li></ul><ul><ul><li>Impedisce l’invio di email mediante il modulo mailform a indirizzi inputati dagli utenti (default=1) </li></ul></ul><ul><li>[encryptionKey] </li></ul><ul><ul><li>Viene usata in diversi punti per la generazione di codici univoci (da settare!) </li></ul></ul><ul><li>[warning_email_addr] </li></ul><ul><ul><li>Indirizzo email che riceve notifiche di accessi faliti a backend e install tool </li></ul></ul><ul><li>[lockIP] </li></ul><ul><ul><li>blocca la sessione utente ad un determinato IP </li></ul></ul><ul><li>[lockRootPath] </li></ul><ul><ul><li>filtro per verificare eventuali percorsi autorizzati al di fuori dal PATH_site </li></ul></ul><ul><li>[fileCreateMask] </li></ul><ul><ul><li>permessi usati per la creazione dei file </li></ul></ul>http://www.t3campitalia.it/ Pag.
  14. 14. 4.2 Configurazioni dedicate <ul><li>[fileDenyPattern] </li></ul><ul><ul><li>tipologie di file che gli utenti di backend non possono caricare / modificare (es. php, htaccess, ecc.) </li></ul></ul><ul><li>[folderCreateMask] </li></ul><ul><ul><li>permessi usati per la creazione di cartelle </li></ul></ul><ul><li>[warning_mode] </li></ul><ul><ul><li>specifica quando viene inviata la warning_email a seguito di accessi al backend </li></ul></ul><ul><li>[IPmaskList] </li></ul><ul><ul><li>maschera IP autorizzati ad accedere al backend </li></ul></ul><ul><li>[lockBeUserToDBmounts] </li></ul><ul><ul><li>limita le modifiche al solo dbmount da parte degli utenti di backend (default=1) </li></ul></ul><ul><li>[lockSSL] </li></ul><ul><ul><li>abilita il backend solo via HTTPS </li></ul></ul>http://www.t3campitalia.it/ Pag.
  15. 15. 4.3 Configurazioni dedicate <ul><li>[enabledBeUserIPLock] </li></ul><ul><ul><li>blocca la sessione utente di backend ad un determinato IP </li></ul></ul><ul><li>[disable_exec_function] </li></ul><ul><ul><li>disabilita la funzione PHP exec() </li></ul></ul><ul><li>[usePHPFileFunctions] </li></ul><ul><ul><li>gestisce i file mediante funzioni PHP invece che mediante la funzione exec() </li></ul></ul><ul><li>[noPHPscriptInclude] </li></ul><ul><ul><li>impedisce l’inclusione di script PHP via TypoScript (utile se altri utenti hanno accesso ai template) </li></ul></ul><ul><li>[lockHashKeyWords] </li></ul><ul><ul><li>lista di parametri coi quali bloccare la sessione utente di frontend </li></ul></ul><ul><li>[devIPmask] </li></ul><ul><ul><li>lista di IP ai quali vengono mostrati i messaggi di debug </li></ul></ul>http://www.t3campitalia.it/ Pag.
  16. 16. 5. config.baseURL=1 <ul><li>Evitare l’uso di: </li></ul><ul><ul><li>config.baseURL=1 </li></ul></ul><ul><li>Preferire l’uso di: </li></ul><ul><ul><li>config.baseURL=http://www.mysite.org/ </li></ul></ul><ul><li>In vecchie versioni di TYPO3 questa configurazione poteva essere sfruttata per iniettare pagine “malevole” nella cache </li></ul>http://www.t3campitalia.it/ Pag.
  17. 17. 6. SSL <ul><li>Considerare l’uso del protocollo HTTPS per il backend </li></ul><ul><li>Considerare l’uso del protocollo HTTPS per la form di login degli utenti di frontend </li></ul>http://www.t3campitalia.it/ Pag.
  18. 18. 7. Policy password <ul><li>Le password degli utenti di backend sono già cifrate in md5 </li></ul><ul><li>md5 = sicuro? NO  md5.rednoize.com </li></ul><ul><li>Usare password complesse: </li></ul><ul><ul><li>Almeno 9 caratteri </li></ul></ul><ul><ul><li>Mescolare minuscole, maiuscole e numeri </li></ul></ul><ul><ul><li>Usare almeno un carattere speciale </li></ul></ul><ul><ul><li>Ovviamente: non usare la stessa password di altri servizi </li></ul></ul>http://www.t3campitalia.it/ Pag.
  19. 19. 8. Cifratura password <ul><li>TYPO3 salva la password degli utenti di frontend in chiaro!!! </li></ul><ul><li>Attivare la cifratura delle password: </li></ul><ul><ul><li>rsaauth </li></ul></ul><ul><ul><li>saltedpasswords </li></ul></ul><ul><li>Anche per gli utenti di backend (algoritmo di cifratura più sicuro) </li></ul>http://www.t3campitalia.it/ Pag.
  20. 20. 9. Aggiornamenti continui <ul><li>Aggiornare costantemente il core di TYPO3 </li></ul><ul><li>Aggiornare costantemente tutte le estensioni </li></ul><ul><li>Iscriversi al feed del security team per ricevere le notifiche: </li></ul><ul><ul><li>http://news.typo3.org/news/teams/security/rss.xml </li></ul></ul>http://www.t3campitalia.it/ Pag.
  21. 21. 10. Rimuovere codice non usato <ul><li>Disinstallare un’estensione non è sufficiente </li></ul><ul><ul><li>Il codice PHP rimane sul server </li></ul></ul><ul><li>È necessario cancellare fisicamente la cartella dell’estensione da typo3conf/ext/ </li></ul>http://www.t3campitalia.it/ Pag.
  22. 22. 11. Protezione htaccess <ul><li>Aggiungere barriere! </li></ul><ul><li>Proteggere le seguenti cartelle mediante htaccess: </li></ul><ul><ul><li>typo3 </li></ul></ul><ul><ul><li>typo3conf </li></ul></ul><ul><ul><li>t3lib </li></ul></ul>http://www.t3campitalia.it/ Pag.
  23. 23. 12. Rinominare cartella typo3/ <ul><li>Confondiamo le acque: rinominamo la cartella typo3 </li></ul><ul><li>Usare un nome non standard </li></ul><ul><ul><li>(evitare “admin”, “backend”, “backoffice”, “amministrazione”, ecc.) </li></ul></ul>http://www.t3campitalia.it/ Pag. <ul><li>Richiede modifiche al core di TYPO3 </li></ul><ul><li>Può non essere compatibile con alcune estensioni </li></ul>
  24. 24. 13. Rimuovere l’Install Tool <ul><li>Dopo l’installazione e configurazione di TYPO3 è possibile rimuovere i file PHP dell’Install Tool </li></ul><ul><li>Se serviranno si potranno rimettere in un secondo momento </li></ul>http://www.t3campitalia.it/ Pag.
  25. 25. 14. localconf.php <ul><li>Spostare il file localconf.php (o parte del suo contenuto) fuori dalla cartella htdocs </li></ul><ul><li><?php require(&quot;<directory outside htdocs>/localconf.php&quot;); ?> </li></ul>http://www.t3campitalia.it/ Pag.
  26. 26. Riassumendo: <ul><li>1. Permessi sui file </li></ul><ul><li>2. Pacchetto dummy </li></ul><ul><li>3. Admin user </li></ul><ul><li>4. Configurazioni Install tool </li></ul><ul><li>5. config.baseURL </li></ul><ul><li>6. SSL </li></ul><ul><li>7. Policy Password </li></ul>http://www.t3campitalia.it/ Pag. <ul><li>8. Cifratura password </li></ul><ul><li>9. Aggiornamenti continui </li></ul><ul><li>10. Rimuovere codice non usato </li></ul><ul><li>11. htaccess </li></ul><ul><li>12. Rinominare typo3/ </li></ul><ul><li>13. Rimuovere l’install tool </li></ul><ul><li>14. localconf.php </li></ul>Qualche suggerimento?
  27. 27. <ul><li>PROTEGGIAMO LE NOSTRE ESTENSIONI </li></ul>http://www.t3campitalia.it/ Pag.
  28. 28. Form di ricerca <ul><li>Una semplice form di ricerca pagine: </li></ul>http://www.t3campitalia.it/ Pag.
  29. 29. Trova l’errore http://www.t3campitalia.it/ Pag.
  30. 30. SQL Injection <ul><li>Proviamo a fare la query seguente: </li></ul><ul><ul><li>About&quot; OR 1=&quot;1 </li></ul></ul><ul><li>La query diventa: </li></ul><ul><ul><li>SELECT uid, title, fe_group FROM pages WHERE title LIKE &quot;%About&quot; OR 1=&quot;1%&quot; AND pages.deleted=0 AND […] </li></ul></ul><ul><li>Otteniamo tutte le pagine, anche quelle nascoste o visibili solo agli utenti loggati </li></ul>http://www.t3campitalia.it/ Pag.
  31. 31. Solo le pagine? <ul><li>Dite che cmq ho solo listato delle pagine nascoste? </li></ul><ul><li>Proviamo con questa ricerca: </li></ul><ul><ul><li>About&quot; UNION select uid, password, username FROM be_users UNION select uid,fe_group,title from pages WHERE 1=&quot;0 </li></ul></ul>http://www.t3campitalia.it/ Pag.
  32. 32. Oddio gli utenti!?!?!?! <ul><li>Siamo riusciti a listare gli utenti di backend e le relative password!!!! </li></ul>http://www.t3campitalia.it/ Pag.
  33. 33. Ecco la query <ul><li>SELECT uid, title, fe_group FROM pages WHERE title LIKE &quot;%About&quot; UNION SELECT uid, password, username FROM be_users UNION SELECT uid,fe_group,title FROM pages WHERE 1=&quot;0%&quot; AND pages.deleted=0 AND pages.t3ver_state<=0 AND pages.pid!=-1 AND pages.hidden=0 AND pages.starttime<=1319042880 AND (pages.endtime=0 OR pages.endtime>1319042880) AND (pages.fe_group='' OR pages.fe_group IS NULL OR pages.fe_group='0' OR FIND_IN_SET('0',pages.fe_group) OR FIND_IN_SET('-1',pages.fe_group)) AND tx_wfmobile_nodesktop=0 </li></ul>http://www.t3campitalia.it/ Pag.
  34. 34. Come proteggersi? <ul><li>Do not trust users!!! </li></ul><ul><li>È necessario fare un casting o una pulizia dei parametri passati in GET, in POST o anche nel COOKIE </li></ul><ul><ul><li>intval($params['cerca']) </li></ul></ul><ul><ul><li>addslashes($params['cerca']) </li></ul></ul><ul><li>Correggiamo la query: </li></ul><ul><ul><li>$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 'uid, title, fe_group', 'pages', 'title LIKE &quot;%'. addslashes($params['cerca']) .'%&quot; '.$this->cObj->enableFields('pages') ); </li></ul></ul>http://www.t3campitalia.it/ Pag.
  35. 35. XSS <ul><li>Cross Site Scripting? </li></ul><ul><li>Proviamo a fare questa ricerca: </li></ul><ul><ul><li>About<script type=&quot;text/javascript&quot;> $(document).ready(function(){alert('XSS riuscita!!!');});</script> </li></ul></ul>http://www.t3campitalia.it/ Pag.
  36. 36. Come proteggersi <ul><li>E questo è niente: mediante XSS è possibile rubare la sessione dell’utente </li></ul><ul><li>Mai, stampare contenuto fornito dall’utente senza prima pulirlo: </li></ul><ul><ul><li>htmlspecialchars </li></ul></ul><ul><ul><li>strip_tags </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Puliamo l’output: </li></ul><ul><ul><li>$content .= '<p>Parola ricercata: <strong>'. htmlspecialchars($params['cerca']) .'</strong></p>'; </li></ul></ul>http://www.t3campitalia.it/ Pag.
  37. 37. Altri attacchi <ul><li>Malicious File Upload </li></ul><ul><ul><li>Gli utenti potrebbero riuscire ad uploadare file PHP, .htaccess o altri file pericolosi </li></ul></ul><ul><ul><li>Controllare sempre il formato del file che si sta caricando </li></ul></ul><ul><ul><li>Impedire l’upload di file .php, .htaccess, ecc. </li></ul></ul><ul><li>Ci sono molte altre possibili vulnerabilità </li></ul><ul><ul><li>http://owasp.org </li></ul></ul>http://www.t3campitalia.it/ Pag.
  38. 38. E se trovo una vulnerabilità… <ul><li>… in un’estensione pubblica o nel core? </li></ul><ul><li>NON segnalare la vulnerabilità alla mailing list! </li></ul><ul><li>Scrivere a: </li></ul><ul><li>[email_address] </li></ul>http://www.t3campitalia.it/ Pag.
  39. 39. <ul><li>ESTENSIONI UTILI </li></ul>http://www.t3campitalia.it/ Pag.
  40. 40. Captcha <ul><li>Per prevenire l’invio di spam mediante i moduli TYPO3 è utile dotarsi di un captcha </li></ul><ul><li>Ci sono diverse estensioni disponibili </li></ul><ul><ul><li>sr_freecap </li></ul></ul><ul><ul><li>captcha </li></ul></ul><ul><ul><li>jm_recaptcha </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>E se il captcha fa scappare i miei utenti? </li></ul>http://www.t3campitalia.it/ Pag.
  41. 41. Spamshield <ul><li>wt_spamshield </li></ul><ul><li>Utilizza alcuni semplici controlli per riconoscere lo spam </li></ul><ul><li>Utilizza “Akismet”, un servizio online per verificare se il contenuto è spam </li></ul><ul><ul><li>http://akismet.com/how/ </li></ul></ul><ul><li>Supporta: </li></ul><ul><ul><li>mailform standard </li></ul></ul><ul><ul><li>powermail </li></ul></ul><ul><ul><li>ve_guestbook </li></ul></ul><ul><ul><li>tx_comments </li></ul></ul>http://www.t3campitalia.it/ Pag.
  42. 42. checkmysite <ul><li>Tutte le pagine di TYPO3 sono servite dal file index.php </li></ul><ul><li>Questa estensione verifica la presenza di codice malevolo iniettato nel file index.php </li></ul><ul><li>Si basa su 60 regole diverse per verificare un’eventuale presenza di codice malevolo </li></ul><ul><li>Se riscontra la presenza di codice malevolo avvisa l’amministratore via mail e redirige tutti gli utenti ad una pagina di manutenzione </li></ul>http://www.t3campitalia.it/ Pag.
  43. 43. wt_doorman <ul><li>Filtra le variabili passate in GET e in POST contro XSS e SQL Injection </li></ul><ul><li>Può essere usata per filtrare i parametri di TYPO3 e quelli delle proprie estensioni </li></ul><ul><li>Può pulire tutte i parametri non espressamente autorizzati </li></ul><ul><li>Ciascun parametro va configurato: </li></ul>http://www.t3campitalia.it/ Pag.
  44. 44. Testiamolo sulla nostra estensione http://www.t3campitalia.it/ Pag.
  45. 45. PHP IDS <ul><li>PHP Intrusion Detection System – http://www.phpids.org </li></ul><ul><li>PHP IDS è un layer di sicurezza che può essere aggiunto alle proprie applicazioni web </li></ul><ul><li>Analizza le chiamate e riconosce un’eventuale attacco assegnando un punteggio di impatto – si basa su un database di regole costantemente aggiornato </li></ul>http://www.t3campitalia.it/ Pag.
  46. 46. Testiamolo sulla nostra estensione <ul><li>Proviamo ad eseguire le tre ricerche «malevole» che abbiamo eseguito in precedenza: </li></ul>http://www.t3campitalia.it/ Pag.
  47. 47. Reagiamo! <ul><li>In base al punteggio di impatto possiamo reagire: </li></ul><ul><ul><li>Salvare un log in un file </li></ul></ul><ul><ul><li>Salvare un log in un database </li></ul></ul><ul><ul><li>Inviare una segnalazione via mail </li></ul></ul><ul><ul><li>Mostrare un messaggio di errore </li></ul></ul><ul><ul><li>Bloccare la sessione utente </li></ul></ul>http://www.t3campitalia.it/ Pag.
  48. 48. E se mi hanno hackerato? <ul><li>Analizzare i log! </li></ul><ul><ul><li>sys_log table </li></ul></ul><ul><ul><li>access log </li></ul></ul><ul><ul><li>php error log </li></ul></ul><ul><ul><li>lista di file con nomi inaspettati, con date di ultima modifica/accesso strane </li></ul></ul><ul><ul><li>OS logs (auth, audit, ecc.) </li></ul></ul><ul><ul><li>IDS logs </li></ul></ul><ul><li>http://buzz.typo3.org/teams/security/article/what-you-need-to-know-and-need-to-do-if-your-website-has-been-hacked/ </li></ul><ul><li>http://www.slideshare.net/t3sec/typo3-website-hacked </li></ul>http://www.t3campitalia.it/ Pag.
  49. 49. TYPO3 Security Cookbook <ul><li>http://typo3.org/fileadmin/security- team/typo3_security_cookbook_v-0.5.pdf </li></ul>http://www.t3campitalia.it/ Pag.
  50. 50. Ora so tutto? <ul><li>NO!!! </li></ul><ul><li>La sicurezza non è un risultato, la sicurezza è un processo! </li></ul><ul><li>Mantenere sicuri i propri siti significa: </li></ul><ul><ul><li>Aggiornamenti costanti </li></ul></ul><ul><ul><li>Controlli continui </li></ul></ul><ul><ul><li>Verifiche </li></ul></ul><ul><ul><li>Studio </li></ul></ul><ul><ul><li>Ecc. ecc. </li></ul></ul>http://www.t3campitalia.it/ Pag.
  51. 51. Discussione aperta <ul><li>Questi sono solo dei suggerimenti per iniziare, ora sta a voi! </li></ul><ul><li>Qualcuno ha qualche suggerimento? </li></ul>http://www.t3campitalia.it/ Pag.
  52. 52. Grazie ! <ul><li>Grazie a tutti per l’attenzione </li></ul><ul><li>I miei riferimenti: </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>http://it.linkedin.com/in/maurolorenzutti </li></ul></ul><ul><ul><li>http://twitter.com/#!/MauroLorenzutti </li></ul></ul>http://www.t3campitalia.it/ Pag.

×