Aumentiamo la       sicurezza in       TYPO3       Mauro LorenzuttiT3Camp Italia                                 Bologna 2...
Mauro Lorenzutti        CTO di Webformat        Sviluppatore e consulente TYPO3 dal 2004        TYPO3 Certified Integra...
Sicurezza?        Cosa si intende per sicurezza informatica?            Confidenzialità                la protezione de...
Voglio un sito sicuro!        La sicurezza al 100% non esiste!        Unapplicazione non potrà mai essere *sicura*, ma s...
Vulnerabilità        Una vulnerabilità è una mancanza o una debolezza         nell’applicazione che consente ad un intrus...
OWASP TOP 10        A1: Injection        A2: Cross-Site Scripting (XSS)        A3: Broken Authentication and Session Ma...
Di cosa parleremo        Configuriamo TYPO3 correttamente        Proteggiamo le nostre estensioni        Estensioni uti...
Di cosa NON parleremo        Configurazioni di:            Sistema Operativo            Apache / IIS            PHP   ...
CONFIGURIAMO             TYPO3         CORRETTAMENTEPag. 9          http://www.t3campitalia.it/
1. Permessi sui file         Abilitare la struttura su:             fileadmin             typo3conf             typo3t...
2. Dummy         Usare il pacchetto Dummy quando si inizia lo sviluppo di un          nuovo sito         Non usare i pac...
3. Admin user         Cambiare la password dell’utente “admin”         Rinominare lo username dell’utente “admin”      ...
4.1 Configurazioni dedicate         [strictFormmail]             Impedisce l’invio di email mediante il modulo mailform ...
4.2 Configurazioni dedicate         [fileDenyPattern]             tipologie di file che gli utenti di backend non posson...
4.3 Configurazioni dedicate         [enabledBeUserIPLock]             blocca la sessione utente di backend ad un determi...
5. config.baseURL=1         Evitare l’uso di:             config.baseURL=1         Preferire l’uso di:             con...
6. SSL         Considerare l’uso del protocollo          HTTPS per il backend         Considerare l’uso del protocollo  ...
7. Policy password         Le password degli utenti di backend sono già cifrate in md5         md5 = sicuro? NO  md5.re...
8. Cifratura password         TYPO3 salva la password degli utenti di frontend in chiaro!!!         Attivare la cifratur...
9. Aggiornamenti continui         Aggiornare costantemente il core di TYPO3         Aggiornare costantemente tutte le es...
10. Rimuovere codice non                            usato         Disinstallare un’estensione          non è sufficiente ...
11. Protezione htaccess         Aggiungere barriere!         Proteggere le seguenti          cartelle mediante htaccess:...
12. Rinominare cartella                             typo3/         Confondiamo le acque: rinominamo la cartella typo3    ...
13. Rimuovere l’Install Tool         Dopo l’installazione e configurazione di TYPO3          è possibile rimuovere i file...
14. localconf.php         Spostare il file localconf.php (o parte del suo contenuto) fuori          dalla cartella htdocs...
Riassumendo:         1. Permessi sui file        8. Cifratura password         2. Pacchetto dummy          9. Aggiorna...
PROTEGGIAMO           LE NOSTRE           ESTENSIONIPag. 27         http://www.t3campitalia.it/
Form di ricerca         Una semplice form di ricerca pagine:Pag. 28                                    http://www.t3campi...
Trova l’errorePag. 29                    http://www.t3campitalia.it/
SQL Injection         Proviamo a fare la query seguente:             About" OR 1="1         La query diventa:          ...
Solo le pagine?         Dite che cmq ho solo listato delle pagine nascoste?         Proviamo con questa ricerca:        ...
Oddio gli utenti!?!?!?!         Siamo riusciti a listare gli utenti di backend e le relative          password!!!!Pag. 32...
Ecco la query         SELECT uid, title, fe_group          FROM pages          WHERE title LIKE "%About"          UNION S...
Come proteggersi?         Do not trust users!!!         È necessario fare un casting o una pulizia dei parametri passati...
XSS         Cross Site Scripting?         Proviamo a fare questa ricerca:             About<script type="text/javascrip...
Come proteggersi         E questo è niente: mediante XSS è possibile rubare la sessione          dell’utente         Mai...
Altri attacchi         Malicious File Upload             Gli utenti potrebbero riuscire ad uploadare file PHP, .htaccess...
E se trovo una                          vulnerabilità…         … in un’estensione pubblica o nel core?         NON segna...
ESTENSIONI             UTILIPag. 39         http://www.t3campitalia.it/
Captcha         Per prevenire l’invio di spam mediante i moduli TYPO3 è utile          dotarsi di un captcha         Ci ...
Spamshield         wt_spamshield         Utilizza alcuni semplici controlli per riconoscere lo spam         Utilizza “A...
checkmysite         Tutte le pagine di TYPO3 sono servite dal file index.php         Questa estensione verifica la prese...
wt_doorman         Filtra le variabili passate in GET e in POST contro XSS e SQL          Injection         Può essere u...
Testiamolo sulla nostra          estensionePag. 44                  http://www.t3campitalia.it/
PHP IDS         PHP Intrusion Detection System – http://www.phpids.org         PHP IDS è un layer di sicurezza che può e...
Testiamolo sulla nostra                        estensione         Proviamo ad eseguire le tre ricerche «malevole» che abb...
Reagiamo!         In base al punteggio di impatto possiamo reagire:             Salvare un log in un file             S...
E se mi hanno hackerato?         Analizzare i log!             sys_log table             access log             php er...
TYPO3 Security Cookbook          http://typo3.org/fileadmin/security-          team/typo3_security_cookbook_v-          0....
Ora so tutto?                                       NO!!!         La sicurezza non è un risultato, la sicurezza è un proc...
Discussione aperta         Questi sono solo dei suggerimenti per iniziare, ora sta a voi!         Qualcuno ha qualche su...
Grazie!         Grazie a tutti per l’attenzione         I miei riferimenti:             mauro.lorenzutti@webformat.com ...
Upcoming SlideShare
Loading in …5
×

Aumentiamo la sicurezza di TYPO3

1,449 views

Published on

Come aumentare la sicurezza della propria installazione TYPO3 e delle proprie estensioni! Le slide del mio intervento al t3CampItalia 2011 dove ho parlato di come configurare al meglio TYPO3 in fase di installazione, su quali tecniche adottare per evitare gli attacchi più diffusi (es. sql injection e cross site scripting) e su quali estensioni possono aiutare a difendersi dagli attacchi (es. PHPIDS Intrusion Detection System).

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
1,449
On SlideShare
0
From Embeds
0
Number of Embeds
130
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aumentiamo la sicurezza di TYPO3

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

×