这是通过构建一个伪造的 XML-RPC TeamCity 端点 来复现 CVE-2020-35667 的演示。
CVE-2020-35667 是 JetBrains TeamCity IntelliJ 插件中的一个 SSRF 漏洞。
旧版 TeamCity IntelliJ 插件会向服务器请求一个公钥,使用该公钥对密码进行加密,然后将其发送回去。
由于服务器是由攻击者控制的,因此攻击者可以解密并记录明文凭据。
该漏洞由 Jonathan Leitschuh 报告(https://blog.jetbrains.com/blog/2021/02/03/jetbrains-security-bulletin-q4-2020/)。
利用此漏洞的影响是:在插件登录过程中,通过 攻击者控制的 XML-RPC 端点 截获用户明文凭据。
这是我用于复现该问题的环境:
IntelliJ IDEA Community Edition 2018.1.8
TeamCity 2020.2.1 (build 85633)
存在漏洞的 TeamCity IntelliJ 插件
TeamCity-IDEAplugin.zip;98aaaea4276f718c6c9cf3cb5383da1be6af9daa29e5b17fda8fa70d6bc1342f操作系统:Windows 10
Python 版本:3.12.7
Python 依赖位于 cve2020-35667/requirements.txt 中
pip install -r requirements.txt
python poc_server.py
# 服务器监听于 http://127.0.0.1:8888
http://127.0.0.1:8888。预期结果(存在漏洞):用户凭据会被记录到服务器控制台中。
安全情况下的预期行为:客户端验证服务器身份和公钥真实性,凭据不会暴露给伪造的端点。