SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Aumentiamo la
       sicurezza in
       TYPO3
       Mauro Lorenzutti




T3Camp Italia                                 Bologna 28/29 Ottobre 2011
Il secondo evento italiano dedicato a TYPO3
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.com


Pag. 2                                             http://www.t3campitalia.it/
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à
                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.
            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 nell'alterazione anche il caso limite della generazione ex novo di
                 dati ed informazioni



Pag. 3                                                  http://www.t3campitalia.it/
Voglio un sito sicuro!



        La sicurezza al 100% non esiste!


        Un'applicazione 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
         rischi




Pag. 4                                      http://www.t3campitalia.it/
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 applicazioni




Pag. 5                                     http://www.t3campitalia.it/
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 Forwards

Pag. 6                                     http://www.t3campitalia.it/
Di cosa parleremo


        Configuriamo TYPO3 correttamente
        Proteggiamo le nostre estensioni
        Estensioni utili
        Aaahhh, mi hanno bucato, e adesso???




Pag. 7                                      http://www.t3campitalia.it/
Di cosa NON parleremo



        Configurazioni di:
            Sistema Operativo
            Apache / IIS
            PHP
            Mysql
            Firewall
            Ecc…




Pag. 8                                   http://www.t3campitalia.it/
CONFIGURIAMO
             TYPO3
         CORRETTAMENTE



Pag. 9          http://www.t3campitalia.it/
1. Permessi sui file



         Abilitare la struttura su:
             fileadmin
             typo3conf
             typo3temp
             uploads
         NON abilitare la scrittura su:
             t3lib
             typo3
             index_php
             .htaccess




Pag. 10                                    http://www.t3campitalia.it/
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/
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 Tool




Pag. 12                                        http://www.t3campitalia.it/
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 file

Pag. 13                                                         http://www.t3campitalia.it/
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 HTTPS

Pag. 14                                                       http://www.t3campitalia.it/
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 debug


Pag. 15                                                       http://www.t3campitalia.it/
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 cache




Pag. 16                                         http://www.t3campitalia.it/
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 frontend




Pag. 17                                      http://www.t3campitalia.it/
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 servizi




Pag. 18                                            http://www.t3campitalia.it/
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/
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.xml




Pag. 20                                           http://www.t3campitalia.it/
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/
11. Protezione htaccess




         Aggiungere barriere!


         Proteggere le seguenti
          cartelle mediante htaccess:
             typo3
             typo3conf
             t3lib




Pag. 22                                  http://www.t3campitalia.it/
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 estensioni




Pag. 23                                             http://www.t3campitalia.it/
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 momento




Pag. 24                                       http://www.t3campitalia.it/
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/
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/
PROTEGGIAMO
           LE NOSTRE
           ESTENSIONI




Pag. 27         http://www.t3campitalia.it/
Form di ricerca



         Una semplice form di ricerca pagine:




Pag. 28                                    http://www.t3campitalia.it/
Trova l’errore




Pag. 29                    http://www.t3campitalia.it/
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 loggati

Pag. 30                                          http://www.t3campitalia.it/
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="0




Pag. 31                                    http://www.t3campitalia.it/
Oddio gli utenti!?!?!?!



         Siamo riusciti a listare gli utenti di backend e le relative
          password!!!!




Pag. 32                                        http://www.t3campitalia.it/
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=0

Pag. 33                                 http://www.t3campitalia.it/
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/
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/
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/
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.org




Pag. 37                                              http://www.t3campitalia.it/
E se trovo una
                          vulnerabilità…


         … in un’estensione pubblica o nel core?


         NON segnalare la vulnerabilità alla mailing list!


         Scrivere a:


                                security@typo3.org




Pag. 38                                      http://www.t3campitalia.it/
ESTENSIONI
             UTILI




Pag. 39         http://www.t3campitalia.it/
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/
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_comments


Pag. 41                                       http://www.t3campitalia.it/
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 manutenzione




Pag. 42                                       http://www.t3campitalia.it/
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/
Testiamolo sulla nostra
          estensione




Pag. 44                  http://www.t3campitalia.it/
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 aggiornato




Pag. 45                                    http://www.t3campitalia.it/
Testiamolo sulla nostra
                        estensione

         Proviamo ad eseguire le tre ricerche «malevole» che abbiamo
          eseguito in precedenza:




Pag. 46                                   http://www.t3campitalia.it/
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 utente




Pag. 47                                           http://www.t3campitalia.it/
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-hacked


Pag. 48                                              http://www.t3campitalia.it/
TYPO3 Security Cookbook




          http://typo3.org/fileadmin/security-
          team/typo3_security_cookbook_v-
          0.5.pdf




Pag. 49                        http://www.t3campitalia.it/
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/
Discussione aperta




         Questi sono solo dei suggerimenti per iniziare, ora sta a voi!


         Qualcuno ha qualche suggerimento?




Pag. 51                                      http://www.t3campitalia.it/
Grazie!


         Grazie a tutti per l’attenzione


         I miei riferimenti:
             mauro.lorenzutti@webformat.com


             http://it.linkedin.com/in/maurolorenzutti


             http://twitter.com/#!/MauroLorenzutti




Pag. 52                                               http://www.t3campitalia.it/

Weitere ähnliche Inhalte

Ähnlich wie Aumentiamo la sicurezza di TYPO3

La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013Massimo Chirivì
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSMAU
 
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDay
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDayHosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDay
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDayAruba S.p.A.
 
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...Rino Razzi
 
Le Best Practices per proteggere Informazioni, Sistemi e Reti
Le Best Practices per proteggere Informazioni, Sistemi e RetiLe Best Practices per proteggere Informazioni, Sistemi e Reti
Le Best Practices per proteggere Informazioni, Sistemi e RetiVincenzo Calabrò
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFAndrea Draghetti
 
TYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàTYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàRoberto Torresani
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Antonio Musarra
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseMauro Lorenzutti
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Stefano Bianchini
 
I sistemi di Web Content Filtering
I sistemi di Web Content FilteringI sistemi di Web Content Filtering
I sistemi di Web Content Filteringmmarcuzzi
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 
Web Application Firewall: proteggersi dal cyber risk
Web Application Firewall: proteggersi dal cyber riskWeb Application Firewall: proteggersi dal cyber risk
Web Application Firewall: proteggersi dal cyber riskseeweb
 

Ähnlich wie Aumentiamo la sicurezza di TYPO3 (20)

La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013La sicurezza delle Web Application - SMAU Business Bari 2013
La sicurezza delle Web Application - SMAU Business Bari 2013
 
Smau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo ChirivìSmau Bari 2013 Massimo Chirivì
Smau Bari 2013 Massimo Chirivì
 
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDay
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDayHosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDay
Hosting: 10 consigli per mettere al sicuro un sito - parte 1 #TipOfTheDay
 
Java lezione 13
Java lezione 13Java lezione 13
Java lezione 13
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...
TYPO3 CMS: caratteristiche e punti di forza - TYPO3 DAY - Internet Festival 2...
 
Le Best Practices per proteggere Informazioni, Sistemi e Reti
Le Best Practices per proteggere Informazioni, Sistemi e RetiLe Best Practices per proteggere Informazioni, Sistemi e Reti
Le Best Practices per proteggere Informazioni, Sistemi e Reti
 
TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita
 
Typo3 autenticazione
Typo3 autenticazioneTypo3 autenticazione
Typo3 autenticazione
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTF
 
TYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le NovitàTYPO3 CMS 6.2 LTS - Le Novità
TYPO3 CMS 6.2 LTS - Le Novità
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo Enterprise
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
 
I sistemi di Web Content Filtering
I sistemi di Web Content FilteringI sistemi di Web Content Filtering
I sistemi di Web Content Filtering
 
Tesina Grupposis
Tesina GrupposisTesina Grupposis
Tesina Grupposis
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 
Web Application Firewall: proteggersi dal cyber risk
Web Application Firewall: proteggersi dal cyber riskWeb Application Firewall: proteggersi dal cyber risk
Web Application Firewall: proteggersi dal cyber risk
 

Mehr von Mauro Lorenzutti

TYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersTYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersMauro Lorenzutti
 
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformTYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformMauro Lorenzutti
 
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3Mauro Lorenzutti
 
MageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMauro Lorenzutti
 

Mehr von Mauro Lorenzutti (7)

TYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersTYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini Stickers
 
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformTYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
 
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3
 
Il FAL di TYPO3 6.x
Il FAL di TYPO3 6.xIl FAL di TYPO3 6.x
Il FAL di TYPO3 6.x
 
MageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrata
 
TYPO3 TCA: Tips & Tricks
TYPO3 TCA: Tips & TricksTYPO3 TCA: Tips & Tricks
TYPO3 TCA: Tips & Tricks
 
Typo3 prestazioni
Typo3 prestazioniTypo3 prestazioni
Typo3 prestazioni
 

Aumentiamo la sicurezza di TYPO3

  • 1. Aumentiamo la sicurezza in TYPO3 Mauro Lorenzutti T3Camp Italia Bologna 28/29 Ottobre 2011 Il secondo evento italiano dedicato a TYPO3
  • 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.com Pag. 2 http://www.t3campitalia.it/
  • 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à  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.  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 nell'alterazione anche il caso limite della generazione ex novo di dati ed informazioni Pag. 3 http://www.t3campitalia.it/
  • 4. Voglio un sito sicuro!  La sicurezza al 100% non esiste!  Un'applicazione 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 rischi Pag. 4 http://www.t3campitalia.it/
  • 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 applicazioni Pag. 5 http://www.t3campitalia.it/
  • 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 Forwards Pag. 6 http://www.t3campitalia.it/
  • 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. Di cosa NON parleremo  Configurazioni di:  Sistema Operativo  Apache / IIS  PHP  Mysql  Firewall  Ecc… Pag. 8 http://www.t3campitalia.it/
  • 9. CONFIGURIAMO TYPO3 CORRETTAMENTE Pag. 9 http://www.t3campitalia.it/
  • 10. 1. Permessi sui file  Abilitare la struttura su:  fileadmin  typo3conf  typo3temp  uploads  NON abilitare la scrittura su:  t3lib  typo3  index_php  .htaccess Pag. 10 http://www.t3campitalia.it/
  • 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. 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 Tool Pag. 12 http://www.t3campitalia.it/
  • 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 file Pag. 13 http://www.t3campitalia.it/
  • 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 HTTPS Pag. 14 http://www.t3campitalia.it/
  • 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 debug Pag. 15 http://www.t3campitalia.it/
  • 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 cache Pag. 16 http://www.t3campitalia.it/
  • 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 frontend Pag. 17 http://www.t3campitalia.it/
  • 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 servizi Pag. 18 http://www.t3campitalia.it/
  • 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. 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.xml Pag. 20 http://www.t3campitalia.it/
  • 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. 11. Protezione htaccess  Aggiungere barriere!  Proteggere le seguenti cartelle mediante htaccess:  typo3  typo3conf  t3lib Pag. 22 http://www.t3campitalia.it/
  • 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 estensioni Pag. 23 http://www.t3campitalia.it/
  • 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 momento Pag. 24 http://www.t3campitalia.it/
  • 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. 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. PROTEGGIAMO LE NOSTRE ESTENSIONI Pag. 27 http://www.t3campitalia.it/
  • 28. Form di ricerca  Una semplice form di ricerca pagine: Pag. 28 http://www.t3campitalia.it/
  • 29. Trova l’errore Pag. 29 http://www.t3campitalia.it/
  • 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 loggati Pag. 30 http://www.t3campitalia.it/
  • 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="0 Pag. 31 http://www.t3campitalia.it/
  • 32. Oddio gli utenti!?!?!?!  Siamo riusciti a listare gli utenti di backend e le relative password!!!! Pag. 32 http://www.t3campitalia.it/
  • 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=0 Pag. 33 http://www.t3campitalia.it/
  • 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. 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. 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. 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.org Pag. 37 http://www.t3campitalia.it/
  • 38. E se trovo una vulnerabilità…  … in un’estensione pubblica o nel core?  NON segnalare la vulnerabilità alla mailing list!  Scrivere a: security@typo3.org Pag. 38 http://www.t3campitalia.it/
  • 39. ESTENSIONI UTILI Pag. 39 http://www.t3campitalia.it/
  • 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. 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_comments Pag. 41 http://www.t3campitalia.it/
  • 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 manutenzione Pag. 42 http://www.t3campitalia.it/
  • 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. Testiamolo sulla nostra estensione Pag. 44 http://www.t3campitalia.it/
  • 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 aggiornato Pag. 45 http://www.t3campitalia.it/
  • 46. Testiamolo sulla nostra estensione  Proviamo ad eseguire le tre ricerche «malevole» che abbiamo eseguito in precedenza: Pag. 46 http://www.t3campitalia.it/
  • 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 utente Pag. 47 http://www.t3campitalia.it/
  • 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-hacked Pag. 48 http://www.t3campitalia.it/
  • 49. TYPO3 Security Cookbook http://typo3.org/fileadmin/security- team/typo3_security_cookbook_v- 0.5.pdf Pag. 49 http://www.t3campitalia.it/
  • 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. Discussione aperta  Questi sono solo dei suggerimenti per iniziare, ora sta a voi!  Qualcuno ha qualche suggerimento? Pag. 51 http://www.t3campitalia.it/
  • 52. Grazie!  Grazie a tutti per l’attenzione  I miei riferimenti:  mauro.lorenzutti@webformat.com  http://it.linkedin.com/in/maurolorenzutti  http://twitter.com/#!/MauroLorenzutti Pag. 52 http://www.t3campitalia.it/