Ес­ли поль­зовате­лю раз­решили запус­кать слу­жеб­ный скрипт через sudo, опас­ность может скры­вать­ся в обыч­ном чте­нии фай­лов: зап­рет пря­мых путей и оди­ноч­ных сим­воличес­ких ссы­лок мож­но обой­ти цепоч­кой ссы­лок и зас­тавить скрипт вывес­ти зак­рытый ключ root.

На пути к раз­бору этой тех­ники орга­низу­ем чте­ние локаль­ных фай­лов с помощью SSRF в SOAP-сер­висе, вытащим учет­ные дан­ные из кон­фигура­ции, получим выпол­нение команд через тес­товый HTTP-прок­си и обой­дем филь­тр в локаль­ном веб‑при­ложе­нии с помощью кон­вей­ера и вось­мерич­ного пред­став­ления зап­рещен­ных сим­волов.

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

warning

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

 

Разведка

 

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

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

10.129.28.151 devarea.htb

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

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

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

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

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

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

Под­робнее про работу с Nmap читай в статье «Nmap с самого начала. Осва­иваем раз­ведку и ска­ниро­вание сети».

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

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

  • 21 — FTP-сер­вер vsftpd 3.0.5;
  • 22 — сер­вер OpenSSH 9.6p1;
  • 80 — веб‑сер­вер Apache 2.4.58;
  • 8080 — веб‑сер­вер Jetty 9.4.27;
  • 8500 и 8888 — веб‑сер­вер на Go.

Сер­висов мно­го, и взгля­нуть нуж­но на каж­дый.

 

Точка входа

Нач­нем с FTP-сер­вера. По резуль­татам ска­ниро­вания Nmap ано­ним­ный вход раз­решен. Под­клю­чим­ся и про­верим содер­жимое хра­нили­ща. Там есть каталог pub с JAR-фай­лом.

ftp anonymous@devarea.htb
Содержимое FTP-сервера
Со­дер­жимое FTP-сер­вера

Ска­чива­ем файл и перек­люча­емся на веб‑сер­вер. На пор­те 80 нас встре­чает глав­ный сайт с воз­можностью регис­тра­ции и авто­риза­ции.

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

На пор­те 8080 работа­ет Jetty и воз­вра­щает код 404. Обра­ти вни­мание на вер­сию: Jetty 9.4.27 доволь­но ста­рая и может содер­жать уяз­вимос­ти.

Содержимое сайта devarea.htb:8080
Со­дер­жимое сай­та devarea.htb:8080

На пор­те 8888 откры­та панель управле­ния Hoverfly — HTTP-прок­си для тес­тирова­ния и симуля­ции API-зап­росов. Но для дос­тупа нуж­ны учет­ные дан­ные.

Панель авторизации devarea.htb:8888
Па­нель авто­риза­ции devarea.htb:8888

Де­ком­пилиру­ем ска­чан­ный с FTP JAR-файл с помощью JD-GUI. В клас­се ServerStarter находим HTTP-эндпо­инт /employeeservice веб‑при­ложе­ния на пор­те 8080. На стра­нице дос­тупно WSDL-опи­сание сер­виса для работы с сот­рудни­ками.

Исходный код класса ServerStarter
Ис­ходный код клас­са ServerStarter

Те­перь сто­ит про­верить, есть ли готовые экс­пло­иты для обна­ружен­ных сер­висов.

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

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

Для начала прос­то ищем в Google, и нам везет в обо­их слу­чаях.

Поиск эксплоитов Apache CXF Jetty в Google
По­иск экс­пло­итов Apache CXF Jetty в Google
Поиск эксплоитов Hoverfly в Google
По­иск экс­пло­итов Hoverfly в Google

Для Apache CXF находим информа­цию об уяз­вимос­ти CVE-2022-46364 — SSRF через XOP Include в зап­росах SOAP MTOM. Для Hoverfly Google выда­ет CVE-2025-54123, но для экс­плу­ата­ции этой RCE нуж­ны учет­ные дан­ные.

 

Точка опоры

 

SSRF через Apache CXF (CVE-2022-46364)

Уяз­вимость CVE-2022-46364 зат­рагива­ет Apache CXF вер­сий до 3.5.2 и 3.4.9.

Справка: SSRF

SSRF — это ата­ка на сер­вер, в резуль­тате которой зло­умыш­ленник получа­ет воз­можность отправ­лять зап­росы от име­ни ском­про­мети­рован­ного хос­та. SSRF может быть исполь­зована в DoS-кам­пани­ях для мас­киров­ки реаль­ного источни­ка ата­ки. В таких слу­чаях уяз­вимый хост выс­тупа­ет в качес­тве прок­си‑сер­вера.

Под­робнее об уяз­вимос­тях типа SSRF читай в статье «SSRF с самого начала. Осва­иваем мощ­ную тех­нику похище­ния дан­ных».

При обра­бот­ке зап­росов SOAP MTOM Apache CXF не про­веря­ет URI-схе­му в атри­буте href эле­мен­та <xop:Include>. MTOM (Message Transmission Optimization Mechanism) — это SOAP-рас­ширение для эффектив­ной переда­чи бинар­ных дан­ных.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии