Спонсор публикаций Cyber-512

Готовим специалиста в области ИБ  - Воспитаем специалиста в области ИБ с нуля до начального уровня. После обучения сможете оказывать услуги по проведению тестирования на проникновение ( легальный хакинг )

В этом посте я продемонстрирую обход DEP/NX, используя обратно ориентированное программирование.

Однако, в этот раз мы активируем DEP/NX, используя execstack. Если вы компилируете новый исполнимый файл, он уже будет иметь активированный DEP, но убедитесь, что компиляция проведена с использованием опции -fno-stack-protector, т.к. это не обходит stack canaries.

Возвращение к -to-libc атаке (ret2libc)

Уязвимая программа использует только две функции из включенных библиотек printf и strcpy. Однако, вся stdio и строковые библиотеки все еще привязываются и загружаются в память каждый раз, когда выполняется программа. Это позволит экспойту переполнения буфера потенциально перенаправить поток к функции, содержащейся в связанных библиотеках, что может позволить воспользоваться преимуществом для запуска вредоносного кода. Одна такая функция является системной, которая может быть использована для запуска системных команд с помощью переписывания стека вызова программы и замены местами обратного адреса хранящегося на стеке, благодаря функции strcpy и адреса системной функции.

Это заинтересует вас:

Системная функция, однако, ожидает, что у стека есть аргумент для функции в топе, за которым следует обратный адрес для системной функции. Перед тем как strcpy функция вернется, топ стека будет выглядеть следующим образом:

Обходя буфер, мы можем перенаправить обратный адрес strcpy к точке системной функции в памяти и добавить дополнительные элементы в топ стека, чтобы использовать их как аргумент и обратный адрес для системной функции. Стек будет выглядеть следующим образом:

Как мы можем увидеть, отправляя буфер соответствующего размера, мы можем переписать хранящиеся локации памяти, находящиеся напротив, и выполнить произвольный код после возврата основной функции.



Это может быть достигнуто путем нахождения размера буфера в стеке и последующей перезаписи соответствующей позиции в нем. Я использовал gdb для этого, потому что в нем на несколько полезных особенностей больше, чем в edb.

На 0x08048468 вызывается функция strcpy и в следующей инструкции esp перемещается с помощью символов 0x1c, чтобы загрузить указатель в eax, который показывает, что на буфер длиной в 0x1c или 28 байт. Теперь нам нужно найти адрес памяти системной функции и передать что-то в качестве аргумента к нему. На самом деле, библиотека C содержит строчку «/bin/sh», которую мы можем использовать, чтобы прикрепиться к shell в программе путем применения ее в качестве аргумента для системы.

Теперь, когда у нас есть наш адрес для системы и для «/bin/bash», мы можем сделать новый эксплойт, который обходит DEP и дает нам шелл.

Мы можем написать вышеуказанный пейлоад в более понятной форме также как и python script.

И пользуясь нашей уязвимой программой, мы получаем shell.

В случаях, когда эксплуатация не является прямой, например, отсутствие строки «/bin/sh» в памяти, нам необходимо использовать гаджеты ROP, чтобы создать и хранить строку в доступной локации памяти. ROP гаджет — просто набор инструкций языка ассемблере с последующей командой возврата, который уже загружен в память как часть программы. Эти гаджеты предоставляют особые функции, которые мы можем соединить вместе, чтобы выполнить произвольный код. ROP является Turing complete и может быть использован для имитации любого кода. Вы можете найти дополнительную информацию о ROP по следующим ссылкам:

<< Контент скрыт от гостей. Зарегистрируйтесь, чтобы снять ограничение ! >>

Перевод: Анна Давыдова
Источник: tehaurum.wordpress.com



Похожие темы

Релиз ParrotSec 3.2 Full Edition Всем привет! На днях вышел новый релиз Parrot Security OS. Пофиксили некоторые баги, стало приятнее работать. Вот ченджлог: Parrot Securi...
PoisonTap — вредоносная USB атака Raspberry ... Перевод: Анна Давыдова Источник: n0where.net Вредоносная USB атака Raspberry Pi Zero: PoisonTap  Скачать poisontap PoisonTap использует за...
Автоматизация брутфорс атак с Brutespray... Мои приветствия! Хочу ознакомить Вас с утилитой, предназначение которой автоматизировать проведение брутфорс-атак по результатам сканирования nmap. ...
Пентест руками ламера. Часть — 5... В 4 части мы познакомились с разными вариациями получения информации, разными приложениями, инструментами, выяснили какие есть слабые места, с котор...
XXE атака И снова всем привет. А сегодня будет разговор об XXE – атаках, что это, почему, зачем, а главное посмотрим нагрузки и пример в .Net приложениях... Ч...