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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/exdev994/cve-2026-90817
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed TeamingИнструмент Удаленного ДоступаРазработка Полезной НагрузкиЛаборатории и Практика
GitHubexdev994/cve-2026-90817

CVE-2026-90817

Python PoC для CVE-2026-90817 — неаутентифицированного RCE в REDCap через маршрутизацию сквозной передачи опросов и инъекцию пути к файлу, с лабораторией Docker и целями, защищёнными списком разрешённых.

7 ч 50 мин назадЕщё не проверено
Репозиторий

Популярное

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

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

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

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

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

CVE-2026-90817 — REDCap Unauthenticated RCE PoC (Authorized Use Only)

ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ИСПОЛЬЗОВАНИЯ. Вы несёте ответственность за легальную авторизацию каждой цели. Неавторизованное использование против сторонних экземпляров REDCap незаконно.

Сводка уязвимости

ПолеЗначение
CVECVE-2026-90817
ПродуктVanderbilt University REDCap
CVSS9.8 Critical
АутентификацияНе требуется (требуется действительный хеш публичного опроса)
ЗатронутоREDCap 13.3.0 и выше
Исправлено16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard Release
CWECWE-73 (External Control of File Name or Path), CWE-94 (Code Injection)

Цепочка атаки:

  1. Получить действительный хеш публичного опроса из экземпляра REDCap.
  2. Манипулировать HTTP-запросами, чтобы достичь непредусмотренного маршрута контроллера через сквозную маршрутизацию опроса.
  3. Передать специально сформированный параметр пути к файлу/потоку во время обработки импорта данных.
  4. Добиться удалённого выполнения кода на сервере REDCap.

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

root@kitploit:~
CVE-2026-90817/
├── poc_cve_2026_90817.py   # PoC (single-target, allowlist-guarded)
├── docker-compose.yml       # MySQL + PHP-Apache lab stack
├── redcap-init/
│   ├── database.php         # REDCap DB config for lab
│   └── php.ini              # PHP settings for lab
├── redcap-src/              # <-- extract REDCap source here (you provide)
├── targets.txt              # Authorized targets: one host per line
├── payload.txt              # Sample file for upload mode
├── requirements.txt         # Python dependencies
└── poc_results.txt          # Generated after PoC run

Предварительные требования

  • Docker и Docker Compose
  • Python 3.9+
  • Исходный zip-архив REDCap (уязвимая версия, например 14.x или 15.x) от Vanderbilt REDCap consortium

REDCap — это лицензионное программное обеспечение. Вы должны получить его через официальные каналы для своей лаборатории.

Настройка лаборатории

1. Извлеките исходный код REDCap

root@kitploit:~
mkdir -p redcap-src
# Extract your redcap.zip contents into redcap-src/
# The directory should contain index.php, redcap_vX.X.X/, etc.

2. Запустите лабораторную среду

root@kitploit:~
docker compose up -d

Дождитесь прохождения healthcheck MySQL, затем откройте:

root@kitploit:~
http://localhost:8080

Завершите мастер установки REDCap, используя следующие настройки базы данных (предварительно настроены в redcap-init/database.php):

НастройкаЗначение
Hostdb
Databaseredcap
Userredcap
Passwordredcap123

3. Создайте публичный опрос

  1. Войдите в REDCap как администратор.
  2. Создайте новый проект.
  3. Включите «Use surveys in this project».
  4. Откройте ссылку публичного опроса и скопируйте хеш из URL (параметр s=).

Пример URL опроса:

root@kitploit:~
http://localhost:8080/surveys/?s=ABC123XYZ

Хеш опроса: ABC123XYZ

Обратная разработка (заполните плейсхолдеры)

Публичный advisory не раскрывает точный маршрут контроллера или имя параметра. После настройки лаборатории выполните RE по redcap-src/ и заполните константы TODO в poc_cve_2026_90817.py:

root@kitploit:~
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE"   # controller route via survey passthrough
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM"     # file-path/stream parameter name
WEBROOT_PATH = "/var/www/html/redcap/"       # webroot inside container
UPLOADER_NAME = "x.php"                      # PHP uploader filename

Рекомендации по RE

Поиск сквозной маршрутизации опроса:

root@kitploit:~
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50

Поиск обработки пути к файлу/потоку при импорте данных:

root@kitploit:~
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50

Установите STAGE1_SUCCESS_MARKER в строку, присутствующую в успешном ответе этапа 1 (необязательно, но рекомендуется).

Установка зависимостей Python

root@kitploit:~
pip install -r requirements.txt

Запуск PoC

Скрипт отклоняет цели, которые не являются ни лабораторными хостами (localhost, 127.0.0.1, ::1, *.local, *.test, *.localhost), ни перечисленными в targets.txt.

Хеш опроса

CVE-2026-90817 — не требует аутентификации — вход не нужен. Единственное предварительное условие — действительный хеш публичного опроса (из URL опроса ?s=HASH).

Инструмент может автоматически обнаружить хеш опроса, спарсив публичные страницы цели (best-effort). Он проверяет распространённые эндпоинты REDCap (/, /redcap/, /index.php, /surveys/) на наличие ссылок /surveys/?s=HASH. Это работает только если цель публично раскрывает ссылки на опросы (неправильная конфигурация). Для правильно настроенных экземпляров REDCap укажите хеш вручную через --hash.

  • Режим одной цели: --hash необязателен (автообнаружение при отсутствии)
  • Пакетный режим: автообнаружение для каждой цели; цели, не раскрывающие ссылки на опросы, пропускаются

Авторизованные цели (не лабораторные)

Для не лабораторных целей создайте targets.txt с одним хостом на строку (FQDN или IP). Вы несёте ответственность за легальную авторизацию каждого указанного хоста.

root@kitploit:~
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

Примеры

Лабораторная цель с явным хешем:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --hash ABC123XYZ \
  --mode both \
  --out poc_results.txt

Лабораторная цель с автообнаруженным хешем:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --mode both \
  --out poc_results.txt

Пакетный режим (перебор всех хостов в targets.txt)

Добавьте --batch, чтобы автоматически эксплуатировать каждый хост, указанный в targets.txt. Инструмент автоматически обнаруживает хеш опроса для каждой цели, спарсив публичные страницы. Инструмент выводит все цели и запрашивает подтверждение перед началом (используйте --yes, чтобы пропустить запрос при скриптинге).

root@kitploit:~
python poc_cve_2026_90817.py \
  --batch \
  --mode both \
  --out poc_results.txt

Порт наследуется из --target (по умолчанию 8080). Чтобы использовать другой порт, установите --target http://placeholder:443/ перед --batch.

Результат каждой цели добавляется в выходной файл. В конце выводится сводка: N success, M failed, T total.

Аргументы

АргументПо умолчаниюОписание
--targethttp://localhost:8080Базовый URL цели
--hash(необязательно)Хеш публичного опроса. Если опущен, обнаруживается автоматически путём парсинга публичных страниц (best-effort).
--allowlisttargets.txtФайл целей, один хост на строку
--batchвыклПеребрать все хосты в файле целей и эксплуатировать каждый
--yesвыклПропустить запрос подтверждения пакетного режима
--modebothid, upload или both
--outpoc_results.txtФайл журнала результатов
--timeout30Таймаут HTTP (секунды)
--upload-localpayload.txtЛокальный файл для загрузки
--upload-remoteuploaded_payload.txtУдалённое имя файла под webroot
--skip-placeholder-checkвыклПробный прогон HTTP-потока без заполненных констант TODO

Примечание: автообнаружение работает только на целях, которые публично раскрывают ссылки на опросы. Для большинства экземпляров REDCap укажите --hash вручную.

Ожидаемый вывод

При успехе stdout показывает:

root@kitploit:~
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt

Результаты добавляются в poc_results.txt:

root@kitploit:~
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------

Меры защиты

Обновитесь до REDCap 16.0.49 LTS, 17.3.10 LTS или 17.4.4 Standard Release (в зависимости от применимости).

Дополнительное усиление защиты:

  • Ограничьте публичное раскрытие опросов там, где это не требуется.
  • Отслеживайте HTTP-запросы, нацеленные на маршруты опросов и эндпоинты импорта данных.
  • Проверьте серверную валидацию параметров пути к файлу/потоку в обработчиках импорта.

Ссылки

  • CVE-2026-90817 (CVE.org)
  • Securifera Advisories
  • Finder: Ryan Wincey (@rwincey, Securifera)
Скачать инструмент