Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Bridging the Gap between the Enterprise and You– or –
Who’s the JBoss now?
Patrick Hof ([email protected])Jens Liebchen ([email protected])
RedTeam Pentesting GmbHhttp://www.redteam-pentesting.de
16. DFN-Cert Workshop – Sicherheit in vernetzten Systemen17./18. Marz 2009, Hamburg
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Wer wir sindWer wir nicht sind
RedTeam Pentesting, Daten & Fakten
F Gegrundet 2004
F Spezialisierung ausschließlich aufPenetrationstests
F Forschungsarbeit im IT-Sicherheitsbereich
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Wer wir sindWer wir nicht sind
Wer wir nicht sind
F Java (Enterprise)-ExpertenF Beispiel-Programme sind in JRuby
geschrieben. . .
F JBoss Application Server-ExpertenF JBoss AS ist eine komplexe
UnternehmenssoftwareF Viele Komponenten wurden gar nicht
betrachtet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
UberblickWarum JBoss AS als Angriffsziel?
JBoss AS Uberblick
Der JBoss Application Server ist einequelloffene Implementierung der Java EESoftwarearchitektur.[. . . ] Seine einfach zubenutzende Serverarchitektur und die hoheFlexibilitat machen JBoss die ideale Wahl furBenutzer die gerade mit J2EE anfangen,genauso wie erfahrene Softwarearchitekten dienach einer anpassbaren Middleware-Plattformsuchen.
(Ubersetzt aus dem JBoss AS Installation and Getting StartedGuide)
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
UberblickWarum JBoss AS als Angriffsziel?
Warum JBoss AS?
Warum ist der JBoss Application Server als Angriffsziel interessant?
F Unternehmenssoftware
F Komplex
F Weit verbreitet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
UberblickWarum JBoss AS als Angriffsziel?
Warum JBoss AS?
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Testumgebung
Alle Beispiele wurden unter den folgenden Voraussetzungengetestet:
F JBoss AS Version: 4.2.3.GA (zur Testzeit neueste stabileCommunity Edition)
F Konfiguration basierend auf der mit JBoss AS mitgeliefertendefault (Standard-) Konfiguration (mit wachsendrestriktiverem Zugang)
F Geoffnet nach extern durch Binden des JBoss AS an alleSchnittstellen: -b 0.0.0.0
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Ziel: Code Execution
F Ausfuhren von eigenem Code auf dem JBoss AS
F Einfachster Weg: Installieren eines WAR (Web ARchive)
redteam.war
|-- META-INF| ‘-- MANIFEST.MF|-- WEB-INF| ‘-- web.xml‘-- redteam-shell.jsp
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
JMX Console
F “Live”-Ansicht desJBoss AS
F Direkter Zugriff auf denJMX Microkernel und dieKomponenten des Servers
F Anpassen derKonfiguration,Starten/Stoppen vonKomponenten, Ausfuhrenvon MBean-Methodenetc.
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
JMX Console
Was kann man machen, wenn die JMX Consolepasswortgeschutzt ist?
Ok, zuerst, admin/admin versuchen. . .
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
JMX Console
Was kann man machen, wenn die JMX Consolepasswortgeschutzt ist?
Ok, zuerst, admin/admin versuchen. . .
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Java Remote Method Invocation
RMI: Remote Method Invocation→ Ausfuhren von Java-Objekt-Methoden uber das Netz
JNDI: Java Naming and Directory Interface→ Wird von RMI benutzt, um Objekte zu finden
⇒ Wenn die JBoss RMI-Komponenten verfugbar sind, konnendiese anstatt der JMX Console benutzt werden, um alleJBoss AS-MBeans uber RMI zu kontrollieren.
Standard-Ports: 4444 RMI, 1098-1099 Naming
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Twiddle
Um JBoss AS-RMI zu benutzen kann man entweder eigeneJava-Programme schreiben
. . . oder Twiddle verwenden.
sh jboss-4.2.3.GA/bin/twiddle.sh -hA JMX client to ’twiddle’ with a remote JBoss server.
usage: twiddle.sh [options] <command> [command_arguments]
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Manchmal kommt es vor, dass der JBoss AS nicht die Rechte hat,um ausgehende Verbindungen zu initiieren, etwa wegenFirewall-Restriktionen.
→ Nicht mehr moglich, von einer externen URL zu installieren
Wie die WAR-Datei auf den Server laden?
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Manchmal kommt es vor, dass der JBoss AS nicht die Rechte hat,um ausgehende Verbindungen zu initiieren, etwa wegenFirewall-Restriktionen.
→ Nicht mehr moglich, von einer externen URL zu installieren
Wie die WAR-Datei auf den Server laden?
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
BSHDeployer
Der BSH Deployer, oder BeanShell Deployer, erlaubtdas Einspielen von Skripts oder sogar Services im JBoss,die einmalig ausgefuhrt werden.
Skripts sind Klartext-Dateien mit der Erweiterung.bsh und konnen sogar im laufenden Betrieb eingespieltwerden. Dies ermoglicht Skripting-Funktionalitatinnerhalb des JBoss Servers.
(Ubersetzt vonhttps://www.jboss.org/community/docs/DOC-9131)
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Beanshell-Skript (mit Zeilenumbruchen)
1 import j a v a . i o . F i l eOutputSt ream ;2 import sun . misc . BASE64Decoder ;34 // Base64 encoded redteam . war5 S t r i n g v a l = ”UEsDBBQACA [ . . . ] AAAAA” ;67 BASE64Decoder decode r = new BASE64Decoder ( ) ;8 byte [ ] b y t e v a l = decode r . d e codeBu f f e r ( v a l ) ;9 F i l eOutputSt r eam f s t r e am = new F i l eOutputSt ream (
10 ”/tmp/ redteam . war” ) ;11 f s t r e am . w r i t e ( b y t e v a l ) ;12 f s t r e am . c l o s e ( ) ;
Einspielen von /tmp/redteam.war mit dem MainDeployer ⇒ Fertig.
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Beanshell-Skript (mit Zeilenumbruchen)
1 import j a v a . i o . F i l eOutputSt ream ;2 import sun . misc . BASE64Decoder ;34 // Base64 encoded redteam . war5 S t r i n g v a l = ”UEsDBBQACA [ . . . ] AAAAA” ;67 BASE64Decoder decode r = new BASE64Decoder ( ) ;8 byte [ ] b y t e v a l = decode r . d e codeBu f f e r ( v a l ) ;9 F i l eOutputSt r eam f s t r e am = new F i l eOutputSt ream (
10 ”/tmp/ redteam . war” ) ;11 f s t r e am . w r i t e ( b y t e v a l ) ;12 f s t r e am . c l o s e ( ) ;
Einspielen von /tmp/redteam.war mit dem MainDeployer ⇒ Fertig.
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Web Console
F Bis jetzt wurde entweder eine offene JMX Console oder RMIgebraucht.
F Was ist wenn
a) Die JMX Console passwortgeschutzt istb) RMI nicht verfugbar ist / alles bis auf den JBoss AS durch die
Firewall geschutzt wird?
⇒ Web Console
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Web Console
F Kombination aus einemApplet und einerHTML-Ansicht desJMX-Microkernels undder Komponenten
F MBean-Links zeigen aufdie JMX Console
F Das Applet hat einigezusatzliche Fahigkeiten(z.B. Uberwachen vonJMX-Attributen mitEchtzeit-Graphen)
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Offene Web Console→ Nur unnotige Preisgabe vonInformationen?
⇒ Falsch
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Offene Web Console→ Nur unnotige Preisgabe vonInformationen?
⇒ Falsch
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Web Console InvokerServlet
F Die Uberwachungs-Funktionen des Web Console-Appletsbenutzen einen JMX Invoker
F Klasse org.jboss.console.remote.InvokerServlet,verlinkt unter /web-console/Invoker
F Das InvokerServlet ist nicht auf Uberwachungsfunktioneneingeschrankt, sondern ist ein allgemein benutzbarerJMX Invoker
⇒ Erlaubt das Senden beliebiger JMX-Kommandos an das Servlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Was ist wenn
a) Die JMX Console passwortgeschutzt ist
b) RMI nicht verfugbar ist / alles bis auf denJBoss AS durch die Firewall geschutzt wird
c) Die Web Console passwortgeschutzt ist?
Es ist noch ein JMX Invoker ubrig. . .
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
Was ist wenn
a) Die JMX Console passwortgeschutzt ist
b) RMI nicht verfugbar ist / alles bis auf denJBoss AS durch die Firewall geschutzt wird
c) Die Web Console passwortgeschutzt ist?
Es ist noch ein JMX Invoker ubrig. . .
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
JMXInvokerServlet
F JBoss erlaubt RMI/Naming uber HTTP (HttpAdaptor)
F Standardmaßig deaktiviert
F Aber: Der JMX Invoker fur diesen Dienst lauft
F Klasseorg.jboss.invocation.http.servlet.InvokerServlet,verlinkt unter /invoker/JMXInvokerServlet
⇒ Erlaubt ebenfalls beliebiges Senden von JMX-Kommandos andas Servlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
TestumgebungJMX ConsoleRMI: Remote Method InvocationBSHDeployerWeb Console InvokerJMXInvokerServlet
JMXInvokerServlet
Zu Demonstrationszwecken:
1. Aufsetzen einer JBoss AS-Instanz mit eingeschaltetemHttpAdaptor fur RMI uber HTTP
2. httpinvoker.rb: Sendet die benotigten JMX-Kommandos
3. Mitschneiden und Speichern der HTTP POST-Anfrage zumJMXInvokerServlet, um sie spater erneut zu senden (replay)
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?
⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?
⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?
⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?
⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
Installation einer eigenen WAR-Datei auf einem JBoss AS:
F JMX Console offen?⇒ Installieren uber den Webbrowser
F JMX Console passwortgeschutzt?⇒ Installieren uber RMI
F Keine ausgehenden Verbindungen fur den JBoss AS erlaubt?⇒ Installieren uber den BSHDeployer
F RMI geschlossen/Firewall-geschutzt?⇒ Installieren uber /web-console/Invoker
F Web Console passwortgeschutzt?⇒ Installieren uber /invoker/JMXInvokerServlet
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You
EinfuhrungWas ist der JBoss AS
ExploitsFazit
Fazit
F Der JBoss Application Server solltevon erfahrenen Administratorengewartet werden, auch wenn ertrugerisch leicht zu installieren ist.
F Die Dokumentation zu lesen istPflicht.
F Besonders”Securing JBoss“!
https://www.jboss.org/community/docs/DOC-12188
Patrick Hof & Jens Liebchen - RedTeam Pentesting GmbH Bridging the Gap between the Enterprise and You