HTB Previse. Раскручиваем кривой редирект до полного захвата сайта

Содержание статьи

  • Разведка
  • Точка входа
  • Точка опоры
  • Продвижение
  • Локальное повышение привилегий

Се­год­ня на при­мере лег­кой машины с пло­щад­ки Hack The Box я покажу впол­не типич­ный про­цесс зах­вата веб‑сер­вера. Нач­нем с неп­равиль­но нас­тро­енно­го редирек­та, получим дос­туп к зак­рытым стра­ницам, а точ­ку опо­ры най­дем через фор­му получе­ния логов. Зах­ватить флаг рута нам поможет ошиб­ка в скрип­те поль­зовате­ля.

warning

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

 

Разведка

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

10.10.11.104 writer.htb

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

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

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

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

#!/bin/bashports=$(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.6p1) и 80 (веб‑сер­вер Apache 2.4.29). SSH пока про­пус­тим.

Справка: брутфорс учеток

Пос­коль­ку в начале про­хож­дения у нас нет учет­ных дан­ных, нет и смыс­ла изу­чать служ­бы, которые всег­да тре­буют авто­риза­ции (нап­ример, SSH). Единс­твен­ное, что мы можем сде­лать здесь — это переби­рать пароли брут­форсом, но у машин с HTB поч­ти всег­да есть дру­гое про­хож­дение. В жиз­ни таких вари­антов может не быть, к тому же есть шан­сы подоб­рать пароль или получить его при помощи соци­аль­ной инже­нерии.

Ос­тает­ся «про­бивать» веб. Вни­матель­но изу­чим сайт в поис­ках любой важ­ной информа­ции. При заг­рузке сай­та http://previse.htb нас переб­расыва­ют на стра­ницу login.php. Там нас встре­чает фор­ма авто­риза­ции.

Фор­ма авто­риза­ции

Не­заме­нимое средс­тво при ана­лизе веб‑сай­тов — набор прог­рамм Burp Pro. Нап­ример, вхо­дящий в него Burp Proxy при ана­лизе сай­та ведет свою исто­рию зап­росов и отве­тов. Там мы можем най­ти наш редирект. Но что более уди­витель­но, редирект выпол­нен неп­равиль­но, так как стра­ница сна­чала заг­ружа­ется, а потом про­исхо­дит перенап­равле­ние. Уви­деть глав­ною стра­ницу мож­но во встро­енном бра­узе­ре Burp. Для это­го акти­виру­ем Response → Render.

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

Та­ким обра­зом мы можем прос­мотреть весь сайт.

 

Точка входа

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

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

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

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

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

Спи­сок популяр­ных фай­лов на PHP мож­но най­ти в наборе сло­варей Seclists. Запус­каем перебор:

ffuf -u http://previse.htb/FUZZ -w php_files_common.txt -t 200 -fc 403

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

В выводе получа­ем мно­го фай­лов, и некото­рые выпол­няют редирект. А вот неиз­вес­тный до это­го файл nav.php воз­вра­щает код отве­та 200. Взгля­нем на него через бра­узер и обна­ружим обыч­ную навига­цию по сай­ту.

Стра­ница nav.php

Те­перь обой­дем все стра­ницы через Burp Proxy и прос­мотри отве­ты сер­вера. Что­бы удоб­но сде­лать это через бра­узер, будем перех­ватывать ответ от сер­вера и менять код отве­та с 302 (перенап­равле­ние) на 200 (успешный ответ). Пер­вым делом перех­ватыва­ем зап­рос.

Пе­рех­ват зап­роса в Burp Proxy

Те­перь акти­виру­ем перех­ват отве­та. Для это­го в кон­текс­тном меню выбира­ем Do intercept → Response to this request. Пос­ле это­го отправ­ляем зап­рос, нажав на кноп­ку Forward. И сра­зу в этом же окне получим ответ.

Пе­рех­ват отве­та в Burp Proxy

Из­меня­ем 302 Found на 200 OK.

Из­менение отве­та в Burp Proxy

От­прав­ляем ответ, сно­ва нажав на кноп­ку Forward. В бра­узе­ре получа­ем нуж­ную нам стра­ницу.

Стра­ница accounts.php

По­доб­ным обра­зом взгля­нем и на осталь­ные стра­ницы.

Стра­ница files.php

Стра­ница file_logs.php

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

Со­обще­ние об успешном соз­дании поль­зовате­ля

Шап­ка сай­та

Пе­рей­дем к стра­нице files.php и ска­чаем бекап сай­та.

Со­дер­жимое ска­чан­ного архи­ва

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

 

Точка опоры

Сре­ди фай­лов внут­ри архи­ва обна­ружим connect.php. Этот файл обыч­но исполь­зует­ся для ука­зания нас­тро­ек под­клю­чения к базе дан­ных.

Со­дер­жимое фай­ла connect.php

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *