• Партнер

  • Из-за пути, которым 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.

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии