Из-за пути, которым Apache Web сервер обрабатывает DOS сценарии, возможно выполнить удаленные команды на Web сервере используя символ (‘|’).

Когда запрос о пакетном DOS файле (.bat или .cmd) послан Apache Web серверу, сервер
вызовет интерпретатор оболочки (cmd.exe по умолчанию) и выполнит сценарий с параметрами, посланными пользователем. Поскольку надлежащая проверка правильности
на вводе не сделана, возможно послать символ (‘|’) с командами, добавленными в конец к этому запросы, и сервер их выполнит.

В заданной по умолчанию инсталляции Apache 2.0.x поставляется с сценарием /cgi-bin/test-cgi.bat, который также подвержен этой уязвимости.
Отмечу, что любой ‘.bat ‘ или ‘.cmd ‘ сценарий позволит
выполнять команды таким образом.

Пример:

1.
http://TARGET/cgi-bin/test-cgi.bat?|copy+..\conf\httpd.conf+..\htdocs\httpd.conf
Этот запрос копирует файл httpd.conf, в корень Web сервера, где он может
быть просмотрен любым пользователем.

2. http://TARGET/cgi-bin/test-cgi.bat?|echo+Foobar+>>+..\htdocs\index.html
— добавит в конец строку «Foobar» к index.html файлу, постоянно находящемуся в корне Web сервера.

3. http://TARGET/cgi-bin/test-cgi.bat?|dir+c:+>..\htdocs\dir.txt
— создаст файл, содержащий листинг диска C:, и поместит файл в корень Web сервера, где любой пользователь
сможет его прочитать.

Примечание:

1) Url-Decoding вообще в Apache не предусмотрен ,
однако все дело портит символ  ‘+’, который заменяет пробел.

2) Прямой вывод в STDOUT наиболее вероятно приведет к сообщению об ошибке. Поэтому
для просмотра  результатов команды
рекомендуем переадресацию вывода к файлу в
корне Web сервера.

Уязвимость найдена в Apache WIN32 до версии 1.3.23, и Apache WIN32 до 2.0.28-BETA.



Оставить мнение