Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices


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

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

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

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

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

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

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

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


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Это может быть достигнуто путем нахождения размера буфера в стеке и последующей перезаписи соответствующей позиции в нем. Я использовал 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 по следующим ссылкам: ROP primer by bas here, by Corelan Team here, by b33f here.

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


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

Атакуем ресурс с помощью WhatWaf... А хочу обратить ваш взор к такому интересному инструменту ,как WhatWaf. Своим появлением он обязан всё тому же автору Zeus-scanner. И дополняет ...
Как я взломал «майнера»... Ну что-же, давно сижу на форуме в режиме "зрителя" и теперь расскажу свою историю одну. (!!!АХУТНГ!!! я не призываю никого повторять за мной, за ваш...
Модификация форка Reaver — t6x — для использования... When poor design meets poor implementation. Когда убогий дизайн встречается с убогой реализацией. (это не про форки Reaver, это про WPS) Обновление: П...
HexInject- универсальный пакетный инжектор и снифф... Универсальный пакетный инжектор и сниффер HexInject HexInject версия 1.6 была выпущена (04 января 2016) Скачать HexInject В этом выпуске было пер...
Взлом Wifi WPA/WPA2 паролей с использованием Reave... Если у вас какие-либо проблемы с беспроводными устройствами, то следует ознакомиться со статьёй «Лучшие совместимые с Kali Linux USB Wi-Fi ад...