Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #90, ИЮНЬ 2006 г.

IE: все по-старому

Крис Касперски ака мыщъх

Хакер, номер #090, стр. 090-055-2


Со вторым exploit'ом (http://lcamtuf.coredump.cx/iedie2-2.html) нам везет куда больше. На первый взгляд, все просто замечательно, и за исключением подозрительных пустых квадратов, IE отображает его вполне корректно, но вот при закрытии explorer'a IE падает с воплем о критической ошибке, и в лог доктора Ватсона добавляется новая запись (естественно, если он установлен just-in-time отладчиком по умолчанию).

Обычно такое происходит при разрушении динамической памяти (так называемой кучей), но не будем спешить с выводами, а посмотрим, чем первый exploit отличается от второго.

Исходный код exploit'a IEdie2-2.html

<OBJECT></OBJECT><X>Bork</X>

<OBJECT></OBJECT><X>Bork</X>

<OBJECT></OBJECT><X>Bork</X>

...

...

...

<STYLE></STYLE>

<OBJECT>

Bork

<STYLE></STYLE>

<OBJECT>

Bork

<STYLE></STYLE>

<OBJECT>

Bork

...

...

...

Сначала идет множество корректно закрытых OBJECT'ов с неизвестным IE 5.0 тэгом <X> — источником тех пустых квадратов, а вот дальше повторяется код предыдущего exploit'а. Но во втором случае IE падает, а в первом — нет. Почему? Может, оказалось недостаточно уровня вложенности для падения? Открываем iedie2-1.html в FAR'е по <F4> и увеличиваем количество OBJECT'ов вдвое-втрое. Загружаем его в IE и... вуаля! Ловим исключение при закрытии приложения! Надеюсь, мысль ясна?

Третий exploit (http://lcamtuf.coredump.cx/iedie2-3.html) заставляет IE глубоко задуматься, в результате чего работа эксплойта в аварийном режиме автоматически завершается. Вот оно — переполнение!

Смотрим на код:

Исходный код exploit'a IEdie2-3.html

<OBJECT></OBJECT><X>Bork</X>

<OBJECT></OBJECT><X>Bork</X>

<OBJECT></OBJECT><X>Bork</X>

<OBJECT></OBJECT><X>Bork</X>

<STYLE></STYLE>

...

...

...

<OBJECT type=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>

Bork

<STYLE></STYLE>

<OBJECT

type=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>

Bork

Какой еще "<OBJECT></OBJECT><X>Bork</X>"?! Ведь мы же выяснили, что IE обрабатывает его вполне корректно. Открываем файл по <F4> и отрезаем весь текст вплоть до строки "<STYLE></STYLE>"! Загружаем exploit в IE и… вновь та же задумчивость, заканчивающаяся исключением. Значит, "<OBJECT></OBJECT><X>Bork</X>" тут совсем ни при чем, и реальное переполнение происходит в "<OBJECT type=AAA...AAA>", в направлении которого и надо копать.

Четвертый exploit (http://lcamtuf.coredump.cx/iedie2-4.html) во всем повторяет третий, только длина строк "AAA" слегка другая, тем не менее, исключение все равно возникает, значит, переполнение имеет место быть. Остается выяснить, где именно оно происходит и как передать шелл-коду бразды правления.

Назад на стр. 090-055-1  Содержание  Вперед на стр. 090-055-3
Hosted by uCoz