本项目使用存在漏洞版本的 mholt/archiver 包,演示 Zip Slip 漏洞(CVE-2019-10743)。
Zip Slip 是 Snyk 的安全研究人员发现的一种漏洞。该漏洞影响多个被广泛使用的软件包。攻击者可以利用该漏洞导致以下问题:
| CVE | CVE-2019-10743 | | 包 | github.com/mholt/archiver | | 受影响版本 | >= 3.0.0, < 3.3.2 | | 修复版本 | 3.3.2 | | CVSS 评分 | 5.5(中等) |
mholt/archiver 是一个 Go 包,提供简单一致的 API 来处理归档文件和压缩文件。它支持 .zip、.tar、.tar.gz、.7z 或 .rar 等格式。
mholt/archiver 包提取文件../../../../../tmp/hacked.txt)# 启动存在漏洞的服务器
./docker-run.sh start
# 停止服务器
./docker-run.sh stop
# 查看日志
./docker-run.sh logs
# 清理
./docker-run.sh cleanup
注意: 确保 docker-run.sh 具有执行权限:
# 赋予执行权限
chmod +x ./docker-run.sh
容器启动并运行后,可以使用类似下面的命令访问测试环境:
# 连接到运行应用程序的容器
docker exec -it zipslip-vulnerable-server /bin/bash
# 安装 Python 依赖
pip3 install -r requirements.txt
# 执行载荷
python3 test_exploit.py -p "../../../../../../tmp/hacked.txt" -c "You were pwned!"
注意: 上述命令应在容器内执行。
-u, --url:服务器 URL(默认:http://localhost:8080)-z, --zip:ZIP 文件名(默认:malicious_test.zip)-p, --path:路径遍历文件名(默认:../../../malicious_escaped.txt)-c, --content:文件内容修复此漏洞的方法:
mholt/archiver 3.3.2 或更高版本