Security Lab

Подробности и пример использования переполнения буфера в ASP.DDL в IIS 4.0-5.1

Дата публикации:11.04.2002
Всего просмотров:1468
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание: Уязвимость в ASP (Active Server Pages) ISAPI фильтра, установленного по умолчанию на IIS 4.0-5.1, может приводить к выполнению произвольного кода с правами IWAM_MACHINE. Ошибка связанна с расшифровкой и интерпретацией данных формы, полученных злонамеренными клиентами. Как следует повозившись с данными формы, мы можем заставить IIS заменить 4 байта в произвольном месте памяти нашими данными

Следующий пример демонстрирует уязвимость. Используется установленная по умолчанию .ASP страница iisstart.asp и Windows 2000 с самыми последними сервисными пакетами.

Пример:

**************Begin Session****************
POST /iisstart.asp HTTP/1.1
Accept: */*
Host: eeye.com
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked

10
PADPADPADPADPADP
4
DATA
4
DEST
0
[enter]
[enter]
**************End Session******************

Сеанс примера выше заставит заданный по умолчанию обработчик исключения выполнить dllhost порожденного процесса. При этом откроется окно с сообщением:
DLLHOST.EXE - Application error
The instruction at 0x77fcb397 referenced memory at 0x54534544

Заметьте, что 0x54534544 - это 16-тиричное представление "TSED", или "DEST" значения в формате endian. Процесс dllhost.EXE пробует копировать " DATA " к "DEST". Поскольку область памяти в 0x54534544 не записываемая, нарушение произойдет нарушение доступа, и structured exception handling (SEH) в пределях NT ядра перехватит процесс dllhost.EXE и уничтожает его.

Проблема в том, что что память, которой мы перезаписывам нашими данными, содержит структуры заголовка Heap Management, в нашем случае, управляется AllocateHeap().Поскольку мы записали поверх заголовка, мы управляем двумя четырехбайтовыми адресами в пределах него. Первый четырехбайтовый адрес, который в нашем примере записан поверх "DATA”, является адресом, который скопируется ко второму четырехбайтовому адресу, указанному в заголовке. Мы также записали поверх второго адреса, на сей раз с "DEST". Записывая поверх этих двух адресов, мы можем помещать четыре байта в любую область памяти, используемую dllhost.exe процессом. Т.е. мы можем перезаписывать указатели функций, обработчики исключений или что либо еще, что позволит нам выполнить произвольный код.

Уязвимость найдена в IIS 4.0-5.1

Ссылки: Источник