HTB Instant. Реверсим приложение для Android и захватываем сервер

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

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • API
  • Path traversal
  • Локальное повышение привилегий

Се­год­ня я покажу про­цесс ана­лиза APK-при­ложе­ния в Linux. Мы получим дан­ные для дос­тупа к зак­рытому API на сай­те, а затем через уяз­вимость LFI про­чита­ем кри­тичес­ки важ­ные фай­лы на сер­вере и получим сес­сию поль­зовате­ля. Для повыше­ния при­виле­гий взло­маем хеш Werkzeug и извле­чем учет­ные дан­ные из Solar-PuTTY.

На­ша цель — получе­ние прав супер­поль­зовате­ля на машине Instant с учеб­ной пло­щад­ки Hack The Box. Уро­вень слож­ности задания — сред­ний.

warning

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

 

Разведка

 

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

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

10.10.11.37 instant.htb

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

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

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

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

#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '' ',' | sed s/,$//)nmap -p$ports -A $1

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

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

Ска­нер нашел все­го два откры­тых пор­та: 22 — служ­ба OpenSSH 9.6p1 — и 80 — веб‑сер­вер Apache 2.4.58. Сра­зу идем смот­реть сайт и находим там ссыл­ку на заг­рузку фай­ла APK (фор­мат при­ложе­ний для Android).

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

Точка входа

Для пер­вично­го ана­лиза APK будем исполь­зовать фрей­мворк MobSF. Мож­но ска­чать его с GitHub и раз­вернуть локаль­но либо исполь­зовать обще­дос­тупный вари­ант по адре­су mobsf.live. Я вос­поль­зовал­ся вто­рым вари­антом.

За­ходим на сайт и заг­ружа­ем при­ложе­ние на ана­лиз.

Оче­редь ска­ниро­вания

Спус­тя нес­коль­ко минут ста­тус задачи ска­ниро­вания поменя­ется и будет дос­тупна ссыл­ка с отче­том. Сре­ди общей ста­тис­тики нам так­же дос­тупен деком­пилиро­ван­ный код при­ложе­ния. Хотя для деком­пиляции луч­ше обра­тить­ся к Decompiler.com.

От­чет MobSF

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

Спи­сок URL-адре­сов

Так мы узна­ём о новом домене mywalletv1.instant.htb, поэто­му обновля­ем запись в фай­ле /etc/hosts.

10.10.11.37 instant.htb mywalletv1.instant.htb

Так­же MobSF про­бует най­ти раз­личные сек­реты, токены и клю­чи. Вто­рой очень похож на часть JWT.

Спи­сок воз­можных сек­ретов

По­оче­ред­но прос­матри­ваем деком­пилиро­ван­ные фай­лы Java, в которых исполь­зуют­ся URL-адре­са. В фай­ле AdminActivities.java выпол­няет­ся зап­рос на http://mywalletv1.instant.htb/api/v1/view/profile и исполь­зует­ся токен JWT.

Со­дер­жимое фай­ла AdminActivities.java

Де­коди­ровать JWT мож­но на сай­те JWT.io. В дан­ных токена видим роль Admin.

Де­коди­рован­ный JWT-токен

При обра­щении к API profile через бра­узер получим ошиб­ку 401.

От­вет сер­вера

Од­нако, при­менив най­ден­ный JWT, мы получа­ем код отве­та 200 вмес­те с зап­рошен­ными дан­ными.

Зап­рос и ответ в Burp Repeater

JWT рабочий, а зна­чит, мож­но иссле­довать API.

 

Точка опоры

 

API

Боль­ше ничего инте­рес­ного я не нашел, поэто­му перехо­дим к сле­дующе­му шагу — деком­пиляции APK на уже упо­мяну­том Decompiler.com.

Де­ком­пилиро­вание APK

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

Ответить

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