Спонсор публикаций BlackDiver

Обучение тестированию на проникновение  - Обучению тестированию на проникновение от BlackDiver. Базовый курс

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

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

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

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

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

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

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

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


Спонсор публикаций Life-Hack [Жизнь-Взлом]

Интервью с администратором Telegram-канала Life-HackLife-Hack рассказывает самые свежие новости из кибер мира. Познакомит вас с кучей полезного софта и расскажет про darknet

Это может быть достигнуто путем нахождения размера буфера в стеке и последующей перезаписи соответствующей позиции в нем. Я использовал 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



Похожие темы

FTP-Map: определяем программное обеспечение и его ... Ftpmap сканирует удалённые FTP-сервера для идентификации, какое программное обеспечение и какой версии они используют. Она использует специфичн...
С чего начать свой путь? Часть 11. Кофейная гуща... Ночь - меняющая мировозрение на все вещи, сущность, бытие сознания, такая родная, близкая....прячет под свое крыло, раскрывая при этом потаенные...
Как установить Metasploit из Linux Console... Об установщике Metasploit из Linux Console Стандартный установщик Linux поможет вам проинсталлировать Metasploit на Red Hat Enterprise и Ubuntu Lin...
Fluxion — профессиональный взломщик WiFi... Перевод: Анна Давыдова Источник: n0where.net Профессиональный взломщик WiFi: Fluxion  Fluxion - переделанный linset, автором которого является...
Техника доставки payload через картинку... Всем привет! сегодня я с Вами по делюсь техникой доставки пэйлода не обычным образом а именно через картинку! Ибо решил я застолбить эту методику пер...