Ког­да на сайт мож­но заг­рузить кар­тинку, это повод для поис­ка уяз­вимос­тей. В этой статье я рас­ска­жу, как опре­делять ПО, которое исполь­зует­ся для обра­бот­ки кар­тинок, а затем мы про­экс­плу­ати­руем най­ден­ные баги. Что­бы повысить при­виле­гии, вос­поль­зуем­ся тех­никой GTFOBins для эска­лации через neofetch. Упражнять­ся будем на сред­ней по слож­ности машине Meta с пло­щад­ки Hack The Box.

warning

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

 

Разведка

 

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

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

10.10.11.140 meta.htb

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

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

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

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

#!/bin/bash
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 7.9p1 и 80 — веб‑сер­вер Apache. Вот толь­ко ког­да мы попыта­емся обра­тить­ся к сай­ту, нас переб­росят на дру­гой домен.

Новый домен
Но­вый домен

Ме­няем запись в фай­ле /etc/hosts и обновля­ем стра­ницу.

10.10.11.140 meta.htb artcorp.htb
Главная страница сайта
Глав­ная стра­ница сай­та

На сай­те отме­тим для себя толь­ко име­на поль­зовате­лей, иног­да это может при­годить­ся. К сожале­нию, никаких точек вхо­да най­ти не уда­лось, поэто­му перей­дем к ска­ниро­ванию сай­та.

 

Сканирование поддоменов

Так как сайт име­ет свой собс­твен­ный домен, сто­ит про­верить, сущес­тву­ют ли у него под­домены. Для это­го исполь­зуем ска­нер ffuf.

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

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

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

  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);
  • -t — количес­тво потоков;
  • -u — URL;
  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.

Вы­пол­няем сле­дующую коман­ду:

ffuf -u http://artcorp.htb/ -t 256 -H 'Host: FUZZ.artcorp.htb' -w subdomains-top1million-110000.txt
Результат сканирования поддоменов
Ре­зуль­тат ска­ниро­вания под­доменов

В выводе получа­ем поч­ти все сло­ва из спис­ка, так как код отве­та всег­да 301. Поэто­му сто­ит задать допол­нитель­ную филь­тра­цию, к при­меру из все­го спис­ка кодов убрать пере­адре­сацию (опция -mc).

ffuf -u http://artcorp.htb/ -t 256 -H 'Host: FUZZ.artcorp.htb' -w subdomains-top1million-110000.txt -mc 200,204,401,403,405,500
Результат сканирования поддоменов
Ре­зуль­тат ска­ниро­вания под­доменов

В ито­ге получим новый под­домен, а зна­чит, обно­вим запись /etc/hosts.

10.10.11.140 meta.htb artcorp.htb dev01.artcorp.htb
 

Точка входа

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

Главная страница dev01.artcorp.htb
Глав­ная стра­ница dev01.artcorp.htb

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

Форма загрузки изображений
Фор­ма заг­рузки изоб­ражений

Спо­собы заг­рузить какую‑то наг­рузку сра­зу исчерпа­ли себя, а вот воз­можнос­ти самого при­ложе­ния зас­тавили задумать­ся. Если отпра­вить кар­тинку, нам вер­нут ее метадан­ные.

Метаданные загруженного приложения
Ме­тадан­ные заг­ружен­ного при­ложе­ния

Вы­вод веб‑при­ложе­ния очень похож на вывод ути­литы exiftool. Поп­робу­ем поис­кать экс­пло­иты для него.

 

Точка опоры

Для поис­ка экс­пло­итов я обыч­но исполь­зую Google. С его помощью я нашел экс­пло­ит для CVE-2021-22204. В ExifTool вер­сий с 7.44 до 12.24 мож­но выпол­нить про­изволь­ный код при раз­боре изоб­ражения из‑за некор­рек­тной обра­бот­ки поль­зователь­ских дан­ных в фор­мате DjVu. Для работы экс­пло­ита необ­ходимо уста­новить сле­дующие прог­рам­мные пакеты.

sudo apt install djvulibre-bin exiftool

В стро­ках 6 и 7 ука­зыва­ем адрес сво­его хос­та и порт, который будет прос­лушивать­ся лис­тенером (откры­ваем коман­дой rlwrap -cAr nc -lvp 4321).

Исходный код эксплоита
Ис­ходный код экс­пло­ита

В стро­ке 24 вызыва­ется сам ExifTool и ему переда­ется файл с нас­трой­ками. При­мер кон­фига мне уда­лось най­ти в дру­гой реали­зации экс­пло­ита (параметр Name дол­жен быть как в стро­ке 24 экс­пло­ита).

%Image::ExifTool::UserDefined = (
'Image::ExifTool::Exif::Main' => {
0xc51b => {
Name => 'HasselbladExif',
Writable => 'string',
WriteGroup => 'IFD0',
},
},
);
1;

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

Запуск файла репозитория
За­пуск фай­ла репози­тория

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии