
CVE-2023-27372の安全なPoCスキャナとDockerラボ。SPIP CMS 4.2.1より前のRCEです。破壊的なアクションなしでパスワード回復エンドポイントを介して脆弱性を検証します。
このリポジトリには以下が含まれます:
stand/ — Docker上のラボラトリ環境(脆弱な環境): SPIP + MariaDB。poc/ — 破壊的な操作を行わずに脆弱性の安全な確認(Safe PoC)を実装するPython製の検証ツール(scanner)。このプロジェクトは、SPIP 4.2.1未満におけるCVE-2023-27372の脆弱性のデモンストレーションと分析を目的としています。検証はパスワード回復機能(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=loginpoc/ に移動し、スキャナーの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 .
停止してvolumesを削除します:
cd stand
docker compose down -v
docker compose up -d
このプロジェクトは、教育目的および自身のラボラトリ環境での合法的なテストのみを目的として作成されています。作者は、許可なく使用された場合のいかなる責任も負いません。
---::contentReference[oaicite:0]{index=0}