HTB Retired. Пишем эксплоит ROP + mprotect и используем переполнение буфера - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

       
18-08-2022, 00:00
HTB Retired. Пишем эксплоит ROP + mprotect и используем переполнение буфера - «Новости»
Рейтинг:
Категория: Новости

Hack The Box. Задач­ка клас­сифици­рова­на как слож­ная, хотя я бы так не ска­зал.

warning


Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.



 

Разведка


 

Сканирование портов


До­бав­ляем IP-адрес машины в /etc/hosts:


10.10.11.154 retired.htb

И запус­каем ска­ниро­вание пор­тов.



Справка: сканирование портов


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


На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та.


ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).



Ре­зуль­тат работы скрип­та

Что же мы наш­ли? Порт 22 — служ­ба OpenSSH 8.4p1, порт 80 — веб‑сер­вер Nginx. Так­же из резуль­татов ска­на Nmap видим редирект, в котором стра­ница переда­ется в качес­тве парамет­ра.


Глав­ная стра­ница сай­та 

Точка входа


 

LFI


При таком зап­росе стра­ниц сай­та нуж­но сра­зу про­верить, получит­ся ли отоб­разить не тот файл, который был встав­лен раз­работ­чиком. Поп­робу­ем зап­росить /etc/passwd, вос­поль­зовав­шись обхо­дом катало­гов.


curl 'http://retired.htb/index.php?page=/../../../../../../../etc/passwd'
Со­дер­жимое фай­ла /etc/passwd

Уяз­вимость под­твержде­на, поэто­му перей­дем к экс­плу­ата­ции. Нам нуж­но знать, какие фай­лы читать, поэто­му поищем на сай­те скры­тые стра­ницы. Так как мы уже стол­кну­лись с фор­матами PHP и HTML, то такие стра­ницы и будем искать. Для это­го вос­поль­зуем­ся ска­нером ffuf.



Справка: сканирование веба c ffuf


Од­но из пер­вых дей­ствий при тес­тирова­нии безопас­ности веб‑при­ложе­ния — это ска­ниро­вание методом перебо­ра катало­гов, что­бы най­ти скры­тую информа­цию и недос­тупные обыч­ным посети­телям фун­кции. Для это­го мож­но исполь­зовать прог­раммы вро­де dirsearch и DIRB.


Я пред­почитаю лег­кий и очень быс­трый ffuf. При запус­ке ука­зыва­ем сле­дующие парамет­ры:




  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);


  • -t — количес­тво потоков;


  • -u — URL;


  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.


Ко­ман­да сле­дующая:


ffuf -u 'http://retired.htb/FUZZ.php' -t 256 -wdirectory_2.3_medium_lowercase.txt
Ре­зуль­тат поис­ка фай­лов PHP с помощью ffuf
ffuf -u 'http://retired.htb/FUZZ.html' -t 256 -wdirectory_2.3_medium_lowercase.txt
Ре­зуль­тат поис­ка фай­лов HTML с помощью ffuf

Наш­ли все­го одну новую стра­ницу — beta.html.


Стра­ница beta.html

На стра­нице нуж­но заг­ружать файл лицен­зии, который будет отправ­лен на сле­дующий адрес:


http://retired.htb/activate_license.php

Пос­мотрим, что про­изой­дет с фай­лом даль­ше. Для это­го получим код най­ден­ного обра­бот­чика.


curl 'http://retired.htb/index.php?page=activate_license.php'
Ис­ходный код activate_license.php

Та­ким обра­зом, заг­ружен­ный через фор­му файл будет отправ­лен при­ложе­нию, которое работа­ет на локаль­ном пор­те 1337. Поп­робу­ем выяс­нить, что это за при­ложе­ние, с помощью LFI. Я запус­тил Burp Intruder и передал ему спи­сок информа­тив­ных фай­лов из Unix.


Burp Intruder — вклад­ка Positions

В резуль­тате ска­ниро­вания узна­ем, что нам дос­тупен в том чис­ле и файл /proc/sched_debug, где и находим про­цесс activate_license и соот­ветс­тву­ющий ему иден­тифика­тор про­цес­са (PID) — 487.


Ре­зуль­тат ска­ниро­вания

Зная PID про­цес­са, мы можем получить пол­ную коман­дную стро­ку, что даст нам путь к фай­лу.


curl 'http://retired.htb/index.php?page=/proc/487/cmdline'
Ко­ман­дная стро­ка про­цес­са 487

По­луча­ем пол­ный путь к фай­лу обра­бот­чика, а так­же видим, что порт для прос­лушива­ния переда­ется в качес­тве аргу­мен­та. Ска­чива­ем этот файл на локаль­ный хост для ана­лиза.


wget 'http://retired.htb/index.php?page=/usr/bin/activate_license'
 

Точка опоры


 

Переполнение буфера


Те­перь перей­дем к ана­лизу при­ложе­ния. Каж­дый выбира­ет для себя более удоб­ный инс­тру­мент, но я оста­юсь при­вер­женцем IDA Pro. Закиды­ваем бинарь в деком­пилятор и ищем фун­кцию main.


Итак, при­ложе­ние стан­дар­тным спо­собом откры­вает порт, ожи­дает соеди­нения, и, если оно про­исхо­дит и если фун­кция fork выпол­нена успешно, оно запус­кает фун­кцию activate_license.


Псев­докод фун­кции main

В фун­кции activate_license про­исхо­дит бес­кон­троль­ное чте­ние в буфера раз­мером 512 байт.


Псев­докод фун­кции activate_license

Та­ким обра­зом, мы наш­ли мес­то для перепол­нения буфера, оста­лось опре­делить­ся со сме­щени­ем наг­рузки и методом экс­плу­ата­ции. Для это­го нуж­но запус­тить прог­рамму в уда­лен­ном отладчи­ке, перепол­нить буфер и пос­мотреть, на каком сме­щении от начала буфера будет вер­шина сте­ка, ког­да прог­рамма упа­дет.


Па­рамет­ры уда­лен­ного отладчи­ка IDA Pro

Но при отладке мы не попада­ем в фун­кцию activate_license, поэто­му мне приш­лось запат­чить инс­трук­цию условно­го перехо­да (jnz).


Код прог­раммы до исправ­ления
Код прог­раммы пос­ле пат­ча jnz

Те­перь сге­нери­руем пос­ледова­тель­ность де Брёй­на, которая поможет быс­тро опре­делить сме­щение.


Ге­нери­рова­ние пос­ледова­тель­нос­ти де Брёй­на

От­прав­ляем эти дан­ные нашей прог­рамме и пос­ле ошиб­ки выпол­нения смот­рим дан­ные в регис­тре RBP.


echo aaabaaac... | nc 127.0.0.1 1337
HTB Retired. Пишем эксплоит ROP + mprotect и используем переполнение буфера - «Новости»
Зна­чения регис­тров

Кон­верти­руем получен­ное зна­чение и вычис­ляем сме­щение — 520.


По­луче­ние сме­щения

Вы­бирать метод дол­го не приш­лось. Мы можем получить дос­туп к области неис­полня­емой памяти.


Кар­та памяти

Для успешной экс­плу­ата­ции мы отпра­вим вмес­те с дан­ными шелл‑код, с помощью ROP-цепочек сде­лаем этот сег­мент памяти исполня­емым и переда­дим управле­ние на шелл‑код.


Hack The Box. Задач­ка клас­сифици­рова­на как слож­ная, хотя я бы так не ска­зал. warning Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками. Разведка Сканирование портов До­бав­ляем IP-адрес машины в /etc/hosts: 10. 10. 11. 154 retired. htb И запус­каем ска­ниро­вание пор­тов. Справка: сканирование портов Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да. На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та. ports = $(nmap -p- --min-rate =500 $1 | grep ^_

Теги: CSS

Просмотров: 350
Комментариев: 0:   18-08-2022, 00:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: