Как взломать сайт WordPress

Взлом сайта WordPress

В этой статье мы рассмотрим прохождение уязвимой машины Backdoor Hack The Box, в рамках которой будем взламывать сайт на WordPress. Мы найдем уяз­вимые пла­гины, будем эксплуатировать уяз­вимость Path Traversal, научимся использовать Burp и повышать при­виле­гии в сис­теме с помощью поль­зователь­ского скрипта.

Еще по теме: Взлом сайта на Django

Лучше подключаться к машине HTB с помощью VPN. И желательно не делать это со своего личного компа, на котором хранится чувствительная информация.

Взлома сайта WordPress

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

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

Для этого отлично подходит популярный сканер Nmap. Следующий скрипт улучшит резуль­таты сканирования:

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

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

Сканер нашел два откры­тых пор­та:

  • 80 — веб‑сер­вер Apache 2.4.41;
  • 22 — служ­ба OpenSSH 8.2p1.

SSH сме­ло про­пус­каем, там делать нечего.

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

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

Начнем с изучения веб‑сер­вера. Результат сканирования Nmap указывает на WordPress 5.8.1.

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

Кста­ти, такую информацию можно можно получить, запустив инструмент whatweb.

Сканирование сайта WordPress инструментом whatweb
Сканирование сайта WordPress инструментом whatweb

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

Перед началом использования, стоит зарегис­три­ровать­ся на сай­те и получить токен для API.

Зачастую уяз­вимос­ти при­сутс­тву­ют в установленных пла­гинах, поэто­му я начал с их перебора (параметр -e ap), с агрессив­ным режимом (параметр --plugins-detection aggressive) и установил 100 потоков (параметр -t 100).

Об­наружен­ные пла­гины на сайте WordPress
Об­наружен­ные пла­гины на сайте WordPress

Пот­ратив нес­коль­ко минут, мы получа­ем отчет, в котором отме­чены два пла­гина. Об уяз­вимос­тях ничего не говорится, но в ebook-download не про­индекси­рован каталог, что поз­воля­ет прос­мотреть его содер­жимое.

Со­дер­жимое катало­га ebook-download
Со­дер­жимое катало­га ebook-download

Из фай­ла readme.txt узна­ем вер­сию пла­гина — 1.1. Стран­но, ведь ска­нер отоб­разил 1.5.

Со­дер­жимое фай­ла readme.txt
Со­дер­жимое фай­ла readme.txt

Пытаемся найти извес­тные уяз­вимос­ти и экс­пло­иты для ebook-download 1.1 и находим PoC.

Справка: поиск готовых эксплоитов

При пен­тесте луч­ше все­го искать экс­пло­иты в Google, пос­коль­ку этот поис­ковик заг­лядыва­ет и в лич­ные бло­ги, и в самые раз­ные отче­ты. Уско­рят дело спе­циали­зиро­ван­ные сайты для поиска уязвимостей вро­де Exploit-DB — там час­то мож­но обна­ружить под­ходящие вари­анты. Если вы работа­ете в спе­циали­зиро­ван­ной ОС вро­де Kali Linux, то эта база у вас уже есть и для поис­ка мож­но исполь­зовать ути­литу searchsploit.

 

Экс­пло­ит для взлома сайта WordPress
Экс­пло­ит для взлома сайта WordPress

Уяз­вимость и экс­пло­ит очень прос­тые. Это path traversal, то есть воз­можность обра­щать­ся к родитель­ско­му катало­гу ( ../) при ука­зании пути к фай­лу. Три таких шага, и мы выбира­емся в кор­невую дирек­торию WordPress, где можем про­читать файл с кон­фигура­цией. Дела­ется это одним зап­росом:

Со­дер­жимое фай­ла wp-config.php
Со­дер­жимое фай­ла wp-config.php

 

Здесь хра­нят­ся учет­ные дан­ные для под­клю­чения к базе дан­ных. Пер­вая идея — поп­робовать эти учет­ные дан­ные для логина по SSH (не выш­ло) и дос­тупа к панели адми­нис­три­рова­ния WordPress, рас­положен­ной в катало­ге /wp-admin/. Авто­ризо­вать­ся на сай­те так­же не выш­ло.

Ошибка авторизации WordPress
Ошибка авторизации WordPress

Тог­да мы можем поис­кать дру­гие инте­рес­ные фай­лы и получить боль­ше информа­ции с сер­вера. Я исполь­зовал спи­сок с такими фай­лами и пот­ратил мно­го вре­мени на их прос­мотры, ведь мы можем про­читать поч­ти все, для чего хва­тает при­виле­гий. И ничего инте­рес­ного, кро­ме фай­ла:

Со­дер­жимое фай­ла /proc/self/cmdline
Со­дер­жимое фай­ла /proc/self/cmdline

Фай­ловая сис­тема /proc — это спе­циаль­ная ФС, которая есть во мно­гих сов­ремен­ных UNIX-сис­темах. В ней мож­но най­ти мас­су полез­ной информа­ции в тек­сто­вом виде.

Внут­ри катало­га /proc — огромное чис­ло дру­гих катало­гов с циф­ровыми наз­вани­ями. Имя каж­дого такого катало­га соот­ветс­тву­ет иден­тифика­тору работа­юще­го в сис­теме про­цес­са (PID). А файл /proc/[pid]/cmdline содер­жит аргу­мен­ты коман­дной стро­ки, с которы­ми был запущен про­цесс. Иден­тифика­тор self ука­зыва­ет на текущий про­цесс.

Пос­ле этой наход­ки у меня воз­никла идея про­верить аргу­мен­ты коман­дной стро­ки всех про­цес­сов, вдруг какому‑то из них были переда­ны учет­ные дан­ные. С помощью Burp Intruder мож­но переб­рать иден­тифика­торы. Это лег­ко сде­лать, ука­зав Numbers в качес­тве типа наг­рузки и про­межу­ток перебо­ра от 0 до 10 000 с шагом 1.

Burp Intruder — Positions
Burp Intruder — Positions

 

Burp Intruder — Payloads
Burp Intruder — Payloads

 

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

Учет­ных дан­ных не находим, зато отме­чаем, что на пор­те 1337 запущен gdbserver. Мы не зна­ем вер­сии, поэто­му поп­робу­ем най­ти прос­то самый новый экс­пло­ит.

Пер­вая же ссыл­ка в Google наводит нас на скрипт, который экс­плу­ати­рует RCE-уяз­вимость в gdbserver 9.2. Что­бы вос­про­извести это, сге­нери­руем файл с наг­рузкой при помощи MSFvenom:

За­тем с исполь­зовани­ем netcat соз­дадим лис­тенер для при­ема бэк­коннек­та.

Справка: реверс-шелл

Об­ратный шелл — это под­клю­чение, которое акти­виру­ет ата­куемая машина, а мы при­нима­ем и таким обра­зом под­клю­чаем­ся к ней, что­бы выпол­нять коман­ды от лица поль­зовате­ля, который запус­тил шелл. Для при­ема соеди­нения необ­ходимо соз­дать на локаль­ной машине listener, то есть «слу­шатель».

В таких слу­чаях при­годит­ся rlwrap — readline-обо­лоч­ка, которая в чис­ле про­чего поз­воля­ет поль­зовать­ся исто­рией команд. Она обыч­но дос­тупна в репози­тории дис­три­бути­ва.

В качес­тве самого лис­тенера при этом мож­но исполь­зовать широко извес­тный netcat.

Для это­го выпол­ним такую коман­ду:

И запус­тим экс­пло­ит.

Взлом WordPress. Вы­пол­нение экс­пло­ита
Вы­пол­нение экс­пло­ита

 

Взлом сайта WordPress. Бэк­коннект от сер­вера
Бэк­коннект от сер­вера

По­луча­ем инте­рак­тивную TTY-обо­лоч­ку и чита­ем пер­вый флаг — поль­зователь­ский.

Взломать WordPress. Флаг поль­зовате­ля
Флаг поль­зовате­ля

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

Взломать сайт WordPress. Спи­сок запущен­ных про­цес­сов.
Спи­сок запущен­ных про­цес­сов

На хос­те каж­дую секун­ду запус­кает­ся коман­да find:

Ес­ли она находит про­цесс screen, то выпол­няет дей­ствие exec, что при­ведет к запус­ку screen в авто­ном­ном режиме (при­чем запущен­ном от име­ни супер­поль­зовате­ля). То есть мы можем запус­тить screen и под­клю­чить­ся ко вто­рому, запущен­ному коман­дой find при­виле­гиро­ван­ному про­цес­су.

Это дает нам при­виле­гиро­ван­ный шелл.

HTB Backdoor
Флаг рута

Сайт WordPress взломан. Ма­шина зах­вачена!

Полезные ссылки:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован.