本仓库包含:
stand/ —— 基于 Docker 的实验室靶场(漏洞环境):SPIP + MariaDB。poc/ —— 基于 Python 的检查工具(扫描器),实现漏洞的安全确认(Safe PoC),不含破坏性操作。本项目用于演示和分析 CVE-2023-27372 漏洞,该漏洞影响 SPIP 4.2.1 及更早版本。检测通过密码恢复功能(endpoint spip.php?page=spip_pass)进行,并通过在靶场端执行安全命令来确认。
.
├── stand/ # Уязвимый стенд (SPIP + MariaDB) на Docker Compose
│ ├── docker-compose.yml
│ └── ... (Dockerfile/скрипты стенда, persist volumes и т.п.)
└── poc/ # Safe PoC scanner (Python)
├── Dockerfile
├── README.md # (опционально) локальная документация PoC
└── src/
├── scanner.py
├── utils.py
└── pyproject.toml
cd stand
docker compose up -d
docker compose ps
服务将可通过以下地址访问:
http://127.0.0.1:8080/http://127.0.0.1:8080/spip.php?page=login进入 poc/ 并构建扫描器的 Docker 镜像:
cd ../poc
# Если в вашей среде бывают проблемы с DNS во время сборки, используйте:
docker build --network=host -t spip-poc-scanner .
如果没有 DNS 问题,使用常规命令即可:
docker build -t spip-poc-scanner .
针对本地靶场的推荐运行方式:
docker run --rm --network="host" \
-v "$(pwd)":/app/out \
spip-poc-scanner \
-i http://127.0.0.1:8080 \
-o /app/out/results.json
执行完成后将生成 results.json(结构示例):
[
{
"ip": "http://127.0.0.1:8080",
"vuln": true
}
]
如果您的 PoC 实现通过创建文件(例如 /tmp/pwned.txt)来确认命令执行,则可以在 web 容器内进行检查。
不使用固定容器名称的方案:
cd ../stand
WEB_CID="$(docker compose ps -q web)"
docker exec "$WEB_CID" ls -l /tmp/pwned.txt
如果文件存在,即表明可以在靶场中执行命令。
pip 安装)spip.php?page=spip_passdocker build 时出现 Temporary failure in name resolution使用主机网络模式构建:
docker build --network=host -t spip-poc-scanner .
停止并删除数据卷:
cd stand
docker compose down -v
docker compose up -d
本项目仅用于教育目的以及在自有实验室环境中的合法测试。作者对任何未经授权的使用不承担任何责任。