HTB Paper. Пентестим WordPress и эксплуатируем баг в Polkit

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

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • WordPress
  • Rocket.Chat
  • Локальное повышение привилегий
  • Как работает Polkit
  • Уязвимость в схеме работы Polkit
  • Эксплуатация уязвимости Polkit

В сегод­няшнем рай­тапе мы про­экс­плу­ати­руем уяз­вимос­ти в популяр­ной CMS WordPress, кор­поратив­ном мес­сен­дже­ре RocketChat, а так­же раз­берем одну из самых нашумев­ших уяз­вимос­тей — Polkit LPE. Все это в рам­ках лег­кой машины Paper с пло­щад­ки Hack The Box.

warning

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

 

Разведка

 

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

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

10.10.11.143 paper.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 8.0, 80 и 443 — веб‑сер­вер Apache 2.4.37. Обыч­но в SSL-сер­тифика­те мож­но под­смот­реть новые домен­ные име­на в поле commonName, но не в этот раз.

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

Точка входа

При пен­тесте веб‑сер­висов луч­ше все­го работать в Burp. Полез­но, к при­меру, что в Burp History мож­но будет прос­мотреть всю цепоч­ку поль­зователь­ских зап­росов и отве­тов сер­вера. Так, в HTTP-заголов­ке X-Backend-Server находим еще один домен — office.paper.

Зап­росы в Burp History

То­же добав­ляем его в /etc/hosts.

10.10.11.143 paper.htb office.paper

И на этом домене находим новый сайт.

Глав­ная стра­ница office.paper

И сно­ва Burp History нам помога­ет — по стра­ницам, к которым обра­щает­ся наш кли­ент, мы опре­деля­ем, что на машине уста­нов­лен WordPress.

Зап­росы в Burp History 

Точка опоры

 

WordPress

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

Ком­мента­рий с сай­та

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

Пе­реда­дим ска­неру сле­дующие парамет­ры:

  • --url — URL;
  • -e ap — поиск уста­нов­ленных пла­гинов;
  • --plugins-detection — спо­соб опре­деле­ния пла­гина. Aggressive — гру­бое ска­ниро­вание перебо­ром;
  • -t — количес­тво потоков;
  • --api-token — получен­ный с офи­циаль­ного сай­та API-ключ.

wpscan --url http://office.paper -e ap --plugins-detection aggressive -t 256 --api-token [...KEY...]

Об­наружен­ные уяз­вимос­ти WordPress

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

Опи­сание обна­ружен­ной уяз­вимос­ти

Пе­рехо­дим к стра­нице /?static=1, и нам ста­новит­ся дос­тупным скры­тый пост.

Со­дер­жимое скры­того пос­та

На­ходим ссыл­ку на еще один домен. Добавим его в /etc/hosts и прос­мотрим в бра­узе­ре.

10.10.11.143 paper.htb office.paper chat.office.paper

Па­нель регис­тра­ции Rocket.Chat

Так мы получа­ем дос­туп к панели регис­тра­ции в Rocket.Chat!

 

Rocket.Chat

Rocket.Chat — это пол­ностью нас­тра­иваемый мес­сен­джер на JavaScript c откры­тым исходным кодом. Так как мы получи­ли дос­туп к стра­нице регис­тра­ции, то соз­дадим себе акка­унт и авто­ризу­емся.

Глав­ная панель Rocket.Chat

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

Вхо­дящие сооб­щения Rocket.Chat

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

Ответить

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