
Лаборатория уязвимостей: MainWP Dashboard <= 3.1.2 Неаутентифицированная сохранённая XSS
Уязвимая лаборатория для CVE-2016-15041: неаутентифицированный сохранённый XSS в плагине WordPress MainWP Dashboard версии <= 3.1.2.
docker compose up -d --build
Подождите ~30 секунд для автоматической настройки. Лаборатория выводит баннер, когда будет готова:
docker compose logs -f wordpress
| Ресурс | URL / Учётные данные |
|---|
| WordPress | http://localhost:8088 |
| Логин администратора | admin / admin123 |
| Уязвимая конечная точка | http://localhost:8088/wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension |
Nuclei:
nuclei -t https://raw.githubusercontent.com/projectdiscovery/nuclei-templates/main/http/cves/2016/CVE-2016-15041.yaml -u http://localhost:8088
Ручной PoC:
./scripts/poc.sh http://localhost:8088
docker compose down -v
| Поле | Значение |
|---|---|
| CVE | CVE-2016-15041 |
| Серьёзность | Высокий |
| Тип | Сохранённый XSS (неаутентифицированный) |
| Затронуто | MainWP Dashboard <= 3.1.2 |
| Исправлено | 3.1.3 |
Мастер быстрой настройки MainWP Dashboard доступен без аутентификации. Злоумышленник может внедрить JavaScript через параметр mwp_setup_purchase_username. Полезная нагрузка сохраняется в настройках WordPress и отображается без экранирования, когда администратор просматривает страницу расширений.
GET /wp-admin/admin-post.php?page=mainwp-setup&step=purchase_extension → получить CSRF nonce (аутентификация не требуется)POST XSS полезной нагрузки с nonce (аутентификация не требуется)Уязвимый плагин (v3.1.2) был получен из ревизии WordPress SVN r1394563 (14 апреля 2016 года). Были применены незначительные патчи совместимости с PHP 8, которые не влияют на уязвимость:
__autoload() на spl_autoload_register()Уязвимость XSS существует в view/view-mainwp-extensions-view.php строке 74, где $username выводится без esc_attr().