<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
[**RootedCON**](https://www.rootedcon.com) ist die relevanteste Cybersicherheitsveranstaltung in **Spanien** und eine der wichtigsten in **Europa**. Mit **dem Ziel, technisches Wissen zu fördern**, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.
Server-seitige Template-Injection ist eine Sicherheitslücke, die auftritt, wenn ein Angreifer bösartigen Code in ein Template einschleusen kann, das auf dem Server ausgeführt wird. Diese Sicherheitslücke kann in verschiedenen Technologien gefunden werden, einschließlich Jinja.
Jinja ist ein beliebter Template-Engine, der in Webanwendungen verwendet wird. Betrachten wir ein Beispiel, das einen anfälligen Codeausschnitt mit Jinja demonstriert:
Im folgenden anfälligen Code wird der `name`-Parameter aus der Anfrage des Benutzers direkt in die Vorlage mit der `render`-Funktion übergeben. Dadurch besteht potenziell die Möglichkeit, dass ein Angreifer bösartigen Code in den `name`-Parameter einschleust, was zu einer serverseitigen Template-Injection führen kann.
Die Payload `{{bad-stuff-here}}` wird in den Parameter `name` eingefügt. Diese Payload kann Jinja-Template-Direktiven enthalten, die es dem Angreifer ermöglichen, nicht autorisierten Code auszuführen oder den Template-Engine zu manipulieren und so möglicherweise die Kontrolle über den Server zu erlangen.
Um Schwachstellen bei der serverseitigen Template-Injektion zu verhindern, sollten Entwickler sicherstellen, dass Benutzereingaben ordnungsgemäß bereinigt und validiert werden, bevor sie in Templates eingefügt werden. Die Implementierung einer Eingabevalidierung und die Verwendung von kontextbezogenen Escaping-Techniken können dazu beitragen, das Risiko dieser Schwachstelle zu verringern.
Um Serverseitige Template-Injektion (SSTI) zu erkennen, ist zunächst das **Fuzzing des Templates** ein einfacher Ansatz. Dabei wird eine Sequenz von Sonderzeichen (**`${{<%[%'"}}%\`**) in das Template injiziert und die Unterschiede in der Serverantwort zwischen regulären Daten und dieser speziellen Payload analysiert. Anzeichen für eine Schwachstelle sind:
- Geworfene Fehler, die die Schwachstelle und möglicherweise die Template-Engine offenlegen.
- Fehlen der Payload in der Reflektion oder Teile davon, was darauf hindeutet, dass der Server sie anders als reguläre Daten verarbeitet.
- **Code-Kontext**: Bestätigung der Schwachstelle durch Ändern von Eingabeparametern. Zum Beispiel das Ändern von `greeting` in `http://vulnerable-website.com/?greeting=data.username`, um zu sehen, ob die Ausgabe des Servers dynamisch oder fest ist, wie z.B. `greeting=data.username}}hello`, das den Benutzernamen zurückgibt.
Die Identifizierung der Template-Engine erfolgt durch Analyse von Fehlermeldungen oder manuelles Testen verschiedener sprachspezifischer Payloads. Häufige Payloads, die Fehler verursachen, sind `${7/0}`, `{{7/0}}` und `<%= 7/0 %>`. Durch Beobachtung der Serverantwort auf mathematische Operationen lässt sich die spezifische Template-Engine genau bestimmen.
SSTImap ist ein Tool, das für die Erkennung und Ausnutzung von Server-seitigen Template-Injection (SSTI) Schwachstellen entwickelt wurde. Es ermöglicht Penetrationstestern und Sicherheitsforschern, SSTI-Schwachstellen in Webanwendungen zu identifizieren und auszunutzen.
#### Funktionalitäten
- **SSTI-Erkennung**: SSTImap kann automatisch nach SSTI-Schwachstellen in einer Webanwendung suchen. Es verwendet verschiedene Techniken, um potenzielle SSTI-Schwachstellen zu identifizieren, einschließlich der Überprüfung von Benutzereingaben und der Analyse von Fehlermeldungen.
- **Exploit-Generierung**: Sobald eine SSTI-Schwachstelle erkannt wurde, kann SSTImap automatisch Exploits generieren, um die Schwachstelle auszunutzen. Es unterstützt verschiedene Template-Engines wie Jinja2, Twig, Smarty und andere.
- **Payload-Injection**: SSTImap ermöglicht es Benutzern, benutzerdefinierte Payloads in die Webanwendung einzufügen, um die SSTI-Schwachstelle zu testen. Dies ermöglicht es, verschiedene Angriffsszenarien zu simulieren und die Auswirkungen der Schwachstelle zu überprüfen.
- **Erweiterte Berichterstattung**: SSTImap generiert detaillierte Berichte über die gefundenen SSTI-Schwachstellen. Diese Berichte enthalten Informationen über die Schwachstelle, den Exploit und mögliche Auswirkungen auf die Webanwendung.
#### Installation
Um SSTImap zu installieren, folgen Sie den Anweisungen im [GitHub-Repository](https://github.com/vladko312/sstimap). Das Tool ist in Python geschrieben und kann auf den meisten Betriebssystemen ausgeführt werden.
#### Verwendung
Nach der Installation können Sie SSTImap mit dem Befehl `sstimap` ausführen. Das Tool bietet verschiedene Optionen und Parameter, um die SSTI-Erkennung und -Ausnutzung anzupassen. Weitere Informationen zur Verwendung finden Sie in der [Dokumentation](https://github.com/vladko312/sstimap/wiki).
#### Hinweis
SSTImap ist ein leistungsstarkes Werkzeug, das nur zu legitimen Zwecken verwendet werden sollte. Das Ausnutzen von SSTI-Schwachstellen ohne Zustimmung des Eigentümers der Webanwendung ist illegal und kann zu rechtlichen Konsequenzen führen. Stellen Sie sicher, dass Sie die erforderlichen Berechtigungen haben, bevor Sie SSTImap verwenden.
Tplmap ist ein Werkzeug zum Erkennen und Ausnutzen von Server-seitigen Template-Injection-Schwachstellen (SSTI). Es unterstützt verschiedene Template-Engines und ermöglicht es Ihnen, potenziell anfällige Stellen in einer Webanwendung zu identifizieren und auszunutzen.
#### Installation
Sie können Tplmap von [hier](https://github.com/epinna/tplmap) herunterladen und installieren.
#### Verwendung
Um Tplmap zu verwenden, geben Sie den Befehl `tplmap` gefolgt von der Ziel-URL ein. Das Tool wird dann versuchen, SSTI-Schwachstellen in der Webanwendung zu erkennen und auszunutzen.
```bash
tplmap -u <Ziel-URL>
```
#### Beispiel
Hier ist ein Beispiel für die Verwendung von Tplmap:
```bash
tplmap -u http://example.com/page?param={{7*7}}
```
In diesem Beispiel wird Tplmap versuchen, die SSTI-Schwachstelle in der URL `http://example.com/page?param={{7*7}}` zu erkennen und auszunutzen, indem es den Ausdruck `{{7*7}}` als Template-Injection-Payload verwendet.
#### Weitere Informationen
Weitere Informationen zur Verwendung von Tplmap finden Sie in der [offiziellen Dokumentation](https://github.com/epinna/tplmap).
**Java - Abrufen der Umgebungsvariablen des Systems**
In Java können Sie die Umgebungsvariablen des Systems mithilfe der `System.getenv()`-Methode abrufen. Diese Methode gibt ein `Map`-Objekt zurück, das die Namen und Werte der Umgebungsvariablen enthält.
Dieses Beispiel zeigt, wie Sie alle Umgebungsvariablen auf der Konsole ausgeben können. Sie können jedoch auch gezielt nach einer bestimmten Umgebungsvariable suchen, indem Sie den entsprechenden Schlüssel verwenden.
Bitte beachten Sie, dass das Abrufen der Umgebungsvariablen des Systems in einigen Umgebungen, insbesondere in Cloud- oder SaaS-Plattformen, eingeschränkt sein kann.
Serverseitige Template-Injection (SSTI) ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, schädlichen Code in eine Vorlagendatei einzufügen und diesen Code auf dem Server auszuführen. In diesem Beispiel zeigen wir, wie man mit Java den Inhalt der Datei /etc/passwd abrufen kann.
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SSTIExample {
public static void main(String[] args) {
try {
String command = "cat /etc/passwd";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Dieses Java-Programm verwendet die `Runtime.getRuntime().exec()`-Methode, um den Befehl `cat /etc/passwd` auszuführen und den Inhalt der Datei /etc/passwd abzurufen. Der Inhalt wird dann Zeile für Zeile ausgegeben.
Es ist wichtig zu beachten, dass SSTI eine Sicherheitslücke ist und nicht für illegale Aktivitäten verwendet werden sollte. Es ist wichtig, dass Sie nur autorisierte Systeme und Anwendungen testen und die Zustimmung des Eigentümers haben, bevor Sie solche Techniken anwenden.
* Im FreeMarker-Abschnitt von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
* Im Velocity-Abschnitt von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
Bei Thymeleaf ist ein häufiger Test für SSTI-Schwachstellen der Ausdruck `${7*7}`, der auch für diese Template-Engine gilt. Für potenzielle Remote-Code-Ausführung können Ausdrücke wie die folgenden verwendet werden:
Thymeleaf erfordert, dass diese Ausdrücke in bestimmten Attributen platziert werden. Allerdings wird _Expression Inlining_ für andere Template-Standorte unterstützt, indem Syntax wie `[[...]]` oder `[(...)]` verwendet wird. Daher könnte ein einfacher SSTI-Test-Payload wie `[[${7*7}]]` aussehen.
Die Wahrscheinlichkeit, dass dieser Payload funktioniert, ist jedoch in der Regel gering. Die Standardkonfiguration von Thymeleaf unterstützt keine dynamische Template-Erzeugung; Templates müssen vordefiniert sein. Entwickler müssten ihren eigenen `TemplateResolver` implementieren, um Templates aus Zeichenketten dynamisch zu erstellen, was ungewöhnlich ist.
Thymeleaf bietet auch _Expression Preprocessing_, bei dem Ausdrücke innerhalb von doppelten Unterstrichen (`__...__`) vorverarbeitet werden. Diese Funktion kann beim Aufbau von Ausdrücken genutzt werden, wie in der Dokumentation von Thymeleaf demonstriert:
Dies deutet darauf hin, dass wenn der Template-Engine diese Eingaben unsachgemäß verarbeitet, dies zu einer Remote-Code-Ausführung führen kann, indem URLs wie:
Die Server-seitige Template-Injection (SSTI) ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, schädlichen Code in eine Vorlage einzufügen und auf dem Server auszuführen. Dies kann zu verschiedenen Angriffen führen, wie z.B. der Offenlegung sensibler Informationen oder der Ausführung von Remote-Code.
Das Spring Framework ist ein beliebtes Java-Framework, das die Entwicklung von Webanwendungen erleichtert. Es bietet auch Funktionen für die Vorlagenverarbeitung, einschließlich der Unterstützung für die Ausführung von Ausdrücken in Vorlagen.
Um eine SSTI in einer Spring-Anwendung auszunutzen, müssen Sie die Schwachstellen in der Vorlagenverarbeitung identifizieren und geeigneten schädlichen Code erstellen, der in die Vorlage eingefügt werden kann.
Ein Beispiel für eine SSTI in Spring ist die Verwendung von Expression Language (EL) in Thymeleaf-Vorlagen. EL ermöglicht es Entwicklern, Ausdrücke in Vorlagen zu verwenden, um auf Daten zuzugreifen und diese zu manipulieren. Wenn jedoch unsichere Eingaben in die Vorlage gelangen, kann ein Angreifer schädlichen Code einschleusen und ausführen.
Um eine SSTI in Thymeleaf auszunutzen, können Sie verschiedene Techniken verwenden, wie z.B. das Einfügen von EL-Ausdrücken in Vorlagenvariablen oder das Ausnutzen von Schwachstellen in der EL-Auswertung.
Es ist wichtig, dass Entwickler und Sicherheitsexperten sich der Risiken von SSTI bewusst sind und geeignete Sicherheitsmaßnahmen ergreifen, um diese Schwachstellen zu vermeiden. Dazu gehören das Validieren und Filtern von Benutzereingaben, das Aktualisieren von Frameworks und Bibliotheken auf die neuesten Versionen und das Durchführen von regelmäßigen Sicherheitsüberprüfungen und Penetrationstests.
* [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd)
Jinjava ist eine Java-basierte Template-Engine, die in der Lage ist, Server-seitige Template-Injection (SSTI) anfällige Anwendungen zu manipulieren. Diese Technik ermöglicht es einem Angreifer, schädlichen Code in Vorlagen einzufügen, der dann auf dem Server ausgeführt wird.
#### Erkennen von Jinjava SSTI
Um Jinjava SSTI zu erkennen, können Sie versuchen, spezielle Jinjava-Tags in den Eingabefeldern der Anwendung einzufügen. Wenn die Anwendung den Code interpretiert und das Ergebnis auf der Webseite anzeigt, besteht eine hohe Wahrscheinlichkeit, dass sie anfällig für SSTI ist.
#### Ausnutzen von Jinjava SSTI
Wenn Sie eine anfällige Anwendung gefunden haben, können Sie Jinjava SSTI ausnutzen, um verschiedene Angriffe durchzuführen. Einige Beispiele für mögliche Angriffe sind:
- Lesen von Dateien auf dem Server: Durch Einfügen von Jinjava-Tags können Sie versuchen, auf sensible Dateien auf dem Server zuzugreifen und deren Inhalt zu lesen.
- Ausführen von Befehlen auf dem Server: Sie können Jinjava-Tags verwenden, um Befehle auf dem Server auszuführen und so volle Kontrolle über das System zu erlangen.
- Umgehung von Sicherheitsmechanismen: Durch Manipulation der Vorlagen können Sie versuchen, Sicherheitsmechanismen zu umgehen und auf geschützte Bereiche der Anwendung zuzugreifen.
#### Schutz vor Jinjava SSTI
Um sich vor Jinjava SSTI-Angriffen zu schützen, sollten Entwickler sicherstellen, dass alle Benutzereingaben ordnungsgemäß validiert und bereinigt werden, bevor sie in Vorlagen eingefügt werden. Es ist auch ratsam, die Verwendung von Jinjava oder ähnlichen Template-Engines mit SSTI-Risiken zu vermeiden, wenn sie nicht unbedingt erforderlich sind.
Jinjava ist ein Open-Source-Projekt, das von Hubspot entwickelt wurde und unter [https://github.com/HubSpot/jinjava/](https://github.com/HubSpot/jinjava/) verfügbar ist.
Suche nach "com.hubspot.content.hubl.context.TemplateContextRequest" und entdeckte das [Jinjava-Projekt auf Github](https://github.com/HubSpot/jinjava/).
//Here, I created a variable 'ji' with new instance of com.hubspot.jinjava.Jinjava class and obtained reference to the newInterpreter method. In the next block, I called the render method on 'ji' with expression {{1*2}}.
Expression Language (EL) ist eine grundlegende Funktion, die die Interaktion zwischen der Präsentationsebene (wie Webseiten) und der Anwendungslogik (wie verwalteten Beans) in JavaEE erleichtert. Sie wird umfassend in mehreren JavaEE-Technologien eingesetzt, um diese Kommunikation zu optimieren. Zu den wichtigsten JavaEE-Technologien, die EL verwenden, gehören:
- **JavaServer Faces (JSF)**: Verwendet EL, um Komponenten in JSF-Seiten mit den entsprechenden Backend-Daten und Aktionen zu verbinden.
- **JavaServer Pages (JSP)**: EL wird in JSP verwendet, um auf Daten in JSP-Seiten zuzugreifen und diese zu manipulieren, um eine einfachere Verbindung von Seitenelementen mit den Anwendungsdaten zu ermöglichen.
- **Contexts and Dependency Injection for Java EE (CDI)**: EL integriert sich in CDI, um eine nahtlose Interaktion zwischen der Web-Ebene und verwalteten Beans zu ermöglichen und so eine kohärentere Anwendungsstruktur zu gewährleisten.
Die folgenden Umgehungen des Security Managers wurden aus diesem [**Bericht**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/) entnommen.
[**RootedCON**](https://www.rootedcon.com/) ist die relevanteste Cybersicherheitsveranstaltung in **Spanien** und eine der wichtigsten in **Europa**. Mit **der Mission, technisches Wissen zu fördern**, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.
* Im Smarty-Abschnitt von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
Twig ist ein leistungsfähiges und flexibles Vorlagenformat, das in vielen Webanwendungen verwendet wird. Es bietet eine einfache und sichere Möglichkeit, dynamische Inhalte in HTML-Dateien zu generieren. Twig verwendet eine Syntax ähnlich wie die von PHP, ist jedoch sicherer, da es bestimmte Funktionen und Methoden deaktiviert hat, die potenziell gefährlichen Code ausführen könnten.
Twig-Vorlagen bestehen aus HTML-Code, der mit speziellen Twig-Tags und -Ausdrücken ergänzt wird. Diese Tags und Ausdrücke ermöglichen es Entwicklern, Variablen einzufügen, Schleifen und Bedingungen zu verwenden und sogar benutzerdefinierte Funktionen zu definieren. Twig bietet auch eine Reihe von Filtern und Funktionen, mit denen Entwickler Daten formatieren und manipulieren können.
Die Verwendung von Twig in Webanwendungen bietet viele Vorteile, darunter eine verbesserte Sicherheit, eine bessere Trennung von Logik und Präsentation sowie eine einfachere Wartung und Erweiterbarkeit. Es ist jedoch wichtig zu beachten, dass unsichere Verwendung von Twig zu Server Side Template Injection (SSTI) führen kann, was zu schwerwiegenden Sicherheitsproblemen führen kann.
* Im Abschnitt Twig und Twig (Sandboxed) von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
Plates ist ein Template-Engine, die nativ in PHP verwendet wird und sich von Twig inspirieren lässt. Im Gegensatz zu Twig, das eine neue Syntax einführt, verwendet Plates nativen PHP-Code in den Templates, was es für PHP-Entwickler intuitiv macht.
Server Side Template Injection (SSTI) ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, schädlichen Code in eine Servervorlage einzufügen und auszuführen. Dies kann zu verschiedenen Angriffen führen, wie z.B. der Offenlegung sensibler Informationen, der Ausführung von Remote-Code oder der Umgehung von Sicherheitsmechanismen.
## Identifizierung von SSTI
Die Identifizierung von SSTI kann schwierig sein, da sie von der verwendeten Vorlagensprache abhängt. Einige gängige Anzeichen für SSTI sind:
- Unbeabsichtigte Ausgabe von Vorlagenvariablen
- Verwendung von unsicheren oder nicht validierten Eingaben in Vorlagen
- Fehlermeldungen, die auf Vorlagenfehler hinweisen
## Ausnutzung von SSTI
Die Ausnutzung von SSTI erfordert ein gründliches Verständnis der verwendeten Vorlagensprache. Hier sind einige gängige Techniken, die verwendet werden können:
- Einfügen von Code in Vorlagenvariablen
- Ausnutzung von Vorlagenfiltern und -funktionen
- Umgehung von Sicherheitsmechanismen durch Ausnutzung von Vorlagenkontexten
- Verwendung sicherer Vorlagensprachen und -frameworks
- Aktualisierung von Vorlagenbibliotheken und -modulen auf die neueste Version
- Begrenzung der Berechtigungen von Vorlagenengines
## Fazit
Server Side Template Injection ist eine ernsthafte Sicherheitslücke, die es Angreifern ermöglicht, schädlichen Code in Vorlagen einzufügen und auszuführen. Es ist wichtig, Vorlagen sorgfältig zu überprüfen und Sicherheitsmaßnahmen zu implementieren, um SSTI-Angriffe zu verhindern.
* Im Jade-Abschnitt von [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
> [patTemplate](https://github.com/wernerwa/pat-template) ist eine nicht kompilierende PHP-Template-Engine, die XML-Tags verwendet, um ein Dokument in verschiedene Teile aufzuteilen.
> Jinja2 ist eine voll ausgestattete Template-Engine für Python. Sie unterstützt Unicode vollständig, bietet eine optionale integrierte Sandbox-Umgebung, wird weit verbreitet verwendet und ist unter der BSD-Lizenz lizenziert.
Jinja2 ist ein leistungsfähiges und flexibles Template-Engine-System, das in Python geschrieben ist. Es wird häufig in Webanwendungen verwendet, um dynamische Inhalte zu generieren. Jinja2 verwendet ein spezielles Vorlagenformat, das es Entwicklern ermöglicht, Variablen, Ausdrücke und Kontrollstrukturen in ihre Vorlagen einzufügen.
Das Vorlagenformat von Jinja2 besteht aus zwei Hauptkomponenten: Tags und Ausdrücken. Tags werden in geschweiften Klammern `{% %}` platziert und dienen dazu, Kontrollstrukturen wie Schleifen und Bedingungen zu definieren. Ausdrücke werden in doppelten geschweiften Klammern `{{ }}` platziert und ermöglichen das Einfügen von Variablen und Auswertungen.
Hier ist ein Beispiel für das Jinja2-Vorlagenformat:
In diesem Beispiel wird das `title`-Tag durch den Wert der Variablen `title` ersetzt. Das `greeting`-Tag wird ebenfalls durch den Wert der Variablen `greeting` ersetzt. Die `if`-Bedingung überprüft, ob die Variable `user` definiert ist, und zeigt entsprechend eine personalisierte Begrüßung an.
Das Jinja2-Vorlagenformat bietet eine leistungsstarke Möglichkeit, dynamische Inhalte in Webanwendungen zu generieren. Es ist jedoch wichtig, sicherzustellen, dass Benutzereingaben ordnungsgemäß validiert und bereinigt werden, um Server-seitige Vorlageninjektion (SSTI) zu verhindern.
Andere Payloads unter [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
Die .NET-Methode `System.Diagnostics.Process.Start` kann verwendet werden, um einen beliebigen Prozess auf dem Server zu starten und somit eine Webshell zu erstellen. Ein anfälliges Beispiel für eine Webanwendung finden Sie unter [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
*`{{ . }}`: Zeigt die Eingabe der Datenstruktur an. Wenn beispielsweise ein Objekt mit einem Attribut `Password` übergeben wird, könnte `{{ .Password }}` es offenlegen.
*`{{printf "%s" "ssti" }}`: Sollte den String "ssti" anzeigen.
*`{{html "ssti"}}`, `{{js "ssti"}}`: Diese Payloads sollten "ssti" zurückgeben, ohne "html" oder "js" anzufügen. Weitere Anweisungen können in der Go-Dokumentation [hier](https://golang.org/pkg/text/template) erkundet werden.
Mit dem Paket `text/template` kann XSS einfach durch direktes Einfügen des Payloads erfolgen. Im Gegensatz dazu kodiert das Paket `html/template` die Antwort, um dies zu verhindern (z.B. `{{"<script>alert(1)</script>"}}` ergibt `<script>alert(1)</script>`). Nichtsdestotrotz können die Template-Definition und -Aufruf in Go diese Kodierung umgehen:
Die RCE-Ausnutzung unterscheidet sich erheblich zwischen `html/template` und `text/template`. Das Modul `text/template` erlaubt den direkten Aufruf beliebiger öffentlicher Funktionen (unter Verwendung des Werts "call"), was in `html/template` nicht erlaubt ist. Die Dokumentation für diese Module ist [hier für html/template](https://golang.org/pkg/html/template/) und [hier für text/template](https://golang.org/pkg/text/template/) verfügbar.
Für RCE über SSTI in Go können Objektmethoden aufgerufen werden. Wenn das bereitgestellte Objekt beispielsweise eine Methode `System` hat, die Befehle ausführt, kann sie wie folgt ausgenutzt werden: `{{ .System "ls" }}`. Der Zugriff auf den Quellcode ist normalerweise erforderlich, um dies auszunutzen, wie im gegebenen Beispiel:
Überprüfen Sie den Rest von [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection) für weitere Exploits. Sie können auch interessante Tag-Informationen in [https://github.com/DiogoMRSilva/websitesVulnerableToSSTI](https://github.com/DiogoMRSilva/websitesVulnerableToSSTI) finden.
[**RootedCON**](https://www.rootedcon.com/) ist die relevanteste Cybersicherheitsveranstaltung in **Spanien** und eine der wichtigsten in **Europa**. Mit **der Mission, technisches Wissen zu fördern**, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder folgen Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repos senden.