
Чёрный ящик для пентест-лаборатории по семейству уязвимостей повреждения памяти движка PHP2Shell (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2). Цепочка атак с проверкой по двум флагам, откалиброванная агентом. EN/JP/ZH.
Цель для black-box CTF, построенная вокруг PHP2Shell — семейства уязвимостей повреждения памяти движка PHP 2026 года (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2, исправлено в PHP 8.4.27). Уязвимость находится в движке, а не в приложении: крошечный слой PHP-приложения намеренно лишён инъекций. Вам нужно определить сигнатуру среды выполнения, сопоставить её с рекомендацией и выбрать правильную баллистику. Застряли? Полное прохождение в docs/SOLUTION.md.
Требования: Docker Engine (или Docker Desktop на Windows/macOS) с Compose v2 — и всё. PHP-инструментарий на хосте не нужен. Работает на Windows 10/11 (WSL2), Linux и macOS; см. примечание о платформах ниже, чтобы узнать, какую цепочку эксплуатации поддерживает ваш процессор.
git clone https://github.com/taniungou/php2shell-lab.git
cd php2shell-lab
docker compose up -d --build # first build pulls the pinned base image
Откройте http://localhost:18901 и войдите как пользователь demo
(пароль change-me-demo), чтобы попасть в приложение. С этого момента машина
представляет собой чёрный ящик: разберитесь с остальным сами.
Хотите свои значения флагов и пароли учётных записей? Отредактируйте private.ini, затем:
docker compose build \
--build-arg FLAG_LOCAL=flag{...} \
--build-arg FLAG_PROOF=flag{...}
Обслуживание:
docker compose logs -f # watch the target
docker compose down -v && docker compose up -d --build # full reset (re-arms the leak window)
docker compose down # stop and free resources
Флаги в стиле OverTheWire:
| флаг | путь | кому доступен на чтение |
|---|---|---|
local.txt | /var/www/local.txt | www-data |
proof.txt | /root/proof.txt | только root |
up.proof.txt с разной степенью изящества. По крайней мере
один проверен в боевых условиях; только один масштабируется на реальный парк машин.Публичные эксплойты RCE-приземления для PHP2Shell предполагают раскладку кучи ядра x86_64. На Apple Silicon (и других хостах aarch64, таких как Windows-on-ARM) примитивы утечки срабатывают, а RCE-приземление — нет; мы проверили это на amd64 под эмуляцией, нативном arm64 и в эталонной конфигурации авторов рекомендации (calif.io/php2shell, x86_64 Linux). На ARM-хостах предполагаемое решение — цепочка раскрытия, а не цепочка RCE — она работает везде, включая x86_64. Подробности: docs/PLATFORM-MATRIX.md.
Полная цепочка атаки, смещения и транскрипты атак по раундам: docs/SOLUTION.md — защищено от спойлеров тем, что этот раздел находится в самом низу, обещаю.
MIT — создавайте на её основе, форкайте, используйте в тренингах (указание авторства приветствуется).