本仓库包含一个针对 Atlassian Bitbucket Server/Data Center 漏洞 CVE-2022-36804 的 Python 漏洞利用脚本。该问题出现在 Git archive 流程中的命令注入缺陷,精心构造的 prefix 参数可被服务器解析并作为 shell 命令执行。
CVE-2022-36804 是 Bitbucket Server/Data Center 的远程命令执行漏洞。它由 archive 端点对 prefix 值的不安全处理导致,使攻击者可控的数据能够通过 Git 进入 shell 调用。其后果取决于路径和部署模式,可能实现未认证或认证后的命令执行。
该脚本针对存在漏洞的 archive 端点,并使用精心构造的请求触发注入。
此 PoC 适用于 Atlassian CVE-2022-36804 安全公告中涵盖的受影响 Bitbucket Server/Data Center 版本。实际上,受影响范围包括 Atlassian 列出的修复版本之前的旧版 7.x/8.x Bitbucket Server/Data Center。它不适用于已修补或升级的版本。
仅可对您拥有或明确授权测试的系统使用此工具。
脚本向以下地址发送请求:
/rest/api/latest/projects/{project}/repos/{repo}/archive
并携带一个精心构造的、形如以下的 prefix 参数:
ax%00--exec=`<command>`%00--remote=origin
其技巧在于利用空字节 / Git 命令路径,使服务器最终从 archive 请求中执行 shell 命令。脚本在需要时将命令以 gzip + base64 方式包裹,以便输出紧凑返回并在本地解码。
脚本支持两种主要模式:
python cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -c "whoami"
选项:
-c, --command:运行命令--no-encode:发送原始命令,不使用 gzip+base64 包裹-p, --project:Bitbucket 项目键-r, --repo:Bitbucket 仓库 slugpython cve-2022-36804_v5.py <url> <username> <password> -p <project> -r <repo> -f /path/to/local.bin -o /tmp/remote.bin
该命令分块读取本地文件,对每个块进行 base64 编码,并利用漏洞在服务器上的目标路径重建该文件。
requests.Session。verify = False),以简化针对自签名端点的测试。此工具仅用于经授权的安全研究和受控测试。将其用于您不拥有或未经许可测试的系统是不合法且不道德的。