Описание: |
Из-за пути, которым 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
сервера, где любой пользователь cможет его прочитать.
Примечание:
1) Url-Decoding не предусмотрен Apache, если бы не '+' символ, который заменяет
пробел.
2) Прямой вывод в STDOUT наиболее вероятно приведет к сообщению об ошибке.
Поэтому чтобы просматривать результат команды, рекомендуется, чтобы вы
переадресовали вывод к файлу в корень Web сервера
Уязвимость найдена в
Apache WIN32 до версии 1.3.23, и Apache WIN32 до 2.0.28-BETA
|