<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>
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks repo](https://github.com/carlospolop/hacktricks) und das [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)** senden.
XSLT ist eine Technologie, die zur Transformation von XML-Dokumenten in verschiedene Formate verwendet wird. Es gibt drei Versionen: 1, 2 und 3, wobei Version 1 am häufigsten verwendet wird. Der Transformationsprozess kann entweder auf dem Server oder im Browser ausgeführt werden.
Für die Ausnutzung von Schwachstellen im Zusammenhang mit XSLT ist es erforderlich, dass xsl-Tags auf der Serverseite gespeichert und anschließend auf diesen Inhalt zugegriffen wird. Ein Beispiel für eine solche Schwachstelle ist in der folgenden Quelle dokumentiert: [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/).
Server-Side Request Forgery (SSRF) ist eine Sicherheitslücke, bei der ein Angreifer eine Anwendung dazu bringt, Anfragen an andere interne oder externe Ressourcen durchzuführen. Dies geschieht normalerweise über eine schwach konfigurierte Funktion, die es ermöglicht, URLs als Eingabe zu akzeptieren und Anfragen an diese URLs zu senden.
Ein SSRF-Angriff kann verschiedene Auswirkungen haben, darunter:
- Zugriff auf interne Ressourcen wie Datenbanken, Dateisysteme oder andere Dienste, die normalerweise nicht öffentlich zugänglich sind.
- Scannen interner Netzwerke oder Portscans auf externe Ziele.
- Ausnutzung von Schwachstellen in internen Systemen oder Diensten.
Um einen SSRF-Angriff durchzuführen, muss der Angreifer normalerweise eine URL angeben, die von der Anwendung akzeptiert und an den Server gesendet wird. Der Angreifer kann dann die Antwort des Servers analysieren, um Informationen zu sammeln oder weitere Angriffe durchzuführen.
Es gibt verschiedene Techniken, um SSRF-Angriffe zu erkennen und zu verhindern, darunter:
- Validierung der Eingabe: Überprüfen Sie, ob die angegebene URL gültig ist und nur auf erlaubte Ressourcen verweist.
- Whitelisting: Erlauben Sie nur den Zugriff auf bestimmte URLs oder Ressourcen.
- Netzwerksegmentierung: Trennen Sie interne und externe Netzwerke, um den Zugriff auf interne Ressourcen zu beschränken.
- Sicherheitsupdates: Halten Sie Anwendungen und Systeme auf dem neuesten Stand, um bekannte Schwachstellen zu beheben.
Es ist wichtig, SSRF-Angriffe zu verstehen und geeignete Sicherheitsmaßnahmen zu ergreifen, um potenzielle Risiken zu minimieren.
Server-Side Request Forgery (SSRF) ist eine Sicherheitslücke, bei der ein Angreifer eine Anwendung dazu bringt, Anfragen an andere interne oder externe Ressourcen durchzuführen. Dies kann dazu führen, dass vertrauliche Informationen offengelegt werden oder dass Angriffe auf interne Systeme ausgeführt werden.
Ein häufiger Angriffsvektor für SSRF ist die Verwendung von URL-Parametern, die von der Anwendung verarbeitet werden. Der Angreifer kann eine manipulierte URL bereitstellen, die es ihm ermöglicht, Anfragen an interne Ressourcen wie Datenbanken, Dateisysteme oder andere Dienste durchzuführen.
Um SSRF zu verhindern, sollten Entwickler Eingaben validieren und sicherstellen, dass sie nur auf erlaubte Ressourcen zugreifen können. Es ist auch wichtig, dass Anwendungen keine vertraulichen Informationen in Fehlermeldungen preisgeben.
Zusammenfassend ist SSRF eine Sicherheitslücke, bei der ein Angreifer eine Anwendung dazu bringt, unerwünschte Anfragen an interne oder externe Ressourcen durchzuführen. Entwickler sollten sicherstellen, dass Eingaben validiert werden und dass keine vertraulichen Informationen preisgegeben werden.
Eine Javascript-Injektion ist eine Technik, bei der bösartiger Javascript-Code in eine Webseite eingefügt wird, um unerwünschte Aktionen auszuführen. Dies kann dazu führen, dass vertrauliche Informationen gestohlen, Benutzer umgeleitet oder schädlicher Code ausgeführt wird.
### Arten von Javascript-Injektionen
Es gibt verschiedene Arten von Javascript-Injektionen, darunter:
- Reflected XSS (Cross-Site Scripting): Hier wird der bösartige Javascript-Code in die URL einer Webseite eingefügt und vom Server reflektiert.
- Stored XSS (Cross-Site Scripting): Hier wird der bösartige Javascript-Code in einer Datenbank oder einem anderen Speichermedium gespeichert und bei jedem Aufruf der Webseite ausgeführt.
- DOM-basierte XSS (Cross-Site Scripting): Hier wird der bösartige Javascript-Code direkt im DOM (Document Object Model) der Webseite ausgeführt.
### Auswirkungen von Javascript-Injektionen
Javascript-Injektionen können schwerwiegende Auswirkungen haben, darunter:
Um sich vor Javascript-Injektionen zu schützen, sollten folgende Maßnahmen ergriffen werden:
- Eingabevalidierung: Überprüfen Sie alle Benutzereingaben auf unerwünschte Zeichen oder Muster.
- Ausgabevalidierung: Überprüfen Sie alle ausgehenden Daten auf unerwünschte Zeichen oder Muster.
- Verwendung von Content Security Policy (CSP): CSP ermöglicht es Ihnen, festzulegen, welche Ressourcen auf einer Webseite geladen werden dürfen und welche nicht.
- Aktualisierung von Software und Bibliotheken: Halten Sie Ihre Software und Bibliotheken auf dem neuesten Stand, um bekannte Sicherheitslücken zu schließen.
### Fazit
Javascript-Injektionen sind eine ernsthafte Bedrohung für Webseiten und Benutzer. Durch die Implementierung geeigneter Sicherheitsmaßnahmen können Sie das Risiko von Javascript-Injektionen minimieren und Ihre Webseite und Benutzer schützen.
Die `assert`-Funktion in PHP wird normalerweise verwendet, um eine Bedingung zu überprüfen und einen Fehler auszulösen, wenn die Bedingung falsch ist. In einigen Fällen kann sie jedoch auch für Server Side Injection (SSI) verwendet werden.
Eine Möglichkeit, SSI mit `assert` durchzuführen, besteht darin, die Funktion `var\_dump` zu verwenden, um den Inhalt einer Variablen anzuzeigen. Durch die Kombination von `var\_dump` mit der Funktion `scandir` können wir den Inhalt eines Verzeichnisses auf dem Server anzeigen lassen.
Um SSI mit `assert` durchzuführen, können wir den folgenden Code verwenden:
Dieser Code gibt den Inhalt des angegebenen Verzeichnisses aus. Wenn wir jedoch das Schlüsselwort `false` an `assert` übergeben, wird der Code nach dem `assert`-Statement nicht mehr ausgeführt. Dies kann nützlich sein, um unerwünschte Ausgaben zu verhindern.
```php
assert(var_dump(scandir('/pfad/zum/verzeichnis'))) or die();
```
In diesem Fall wird der Code nach dem `assert`-Statement nicht ausgeführt, wenn das Verzeichnis nicht existiert oder nicht gelesen werden kann.
Es ist wichtig zu beachten, dass die Verwendung von `assert` für SSI gefährlich sein kann, da sie potenziell schädlichen Code auf dem Server ausführen kann. Es wird empfohlen, diese Technik nur in kontrollierten Umgebungen oder zu Schulungszwecken zu verwenden.
XSLT (Extensible Stylesheet Language Transformations) ist eine Sprache, die verwendet wird, um XML-Dokumente in andere Formate zu transformieren. In einigen Fällen kann XSLT auch verwendet werden, um Dateien auf dem Server zu lesen.
Um Dateien mit XSLT zu lesen, können Sie die `document()`-Funktion verwenden. Diese Funktion ermöglicht es Ihnen, eine externe Datei zu öffnen und deren Inhalt abzurufen. Sie können die `document()`-Funktion verwenden, um auf lokale Dateien zuzugreifen, indem Sie den Dateipfad angeben.
In diesem Beispiel wird die `document()`-Funktion verwendet, um die Datei `/etc/passwd` zu lesen. Der Inhalt der Datei wird dann mit der `base64_decode()`-Funktion dekodiert und ausgegeben.
Es ist wichtig zu beachten, dass diese Technik nur funktioniert, wenn der Server XSLT-Transformationen zulässt und die `document()`-Funktion nicht deaktiviert ist. Darüber hinaus müssen Sie über die erforderlichen Berechtigungen verfügen, um auf die gewünschte Datei zuzugreifen.
Es ist auch wichtig zu beachten, dass das Lesen von Dateien auf dem Server ohne Zustimmung des Eigentümers illegal ist und zu rechtlichen Konsequenzen führen kann. Diese Technik sollte nur zu legitimen Zwecken und mit Zustimmung des Eigentümers verwendet werden.
Eine XXE (XML External Entity) ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, externe Entitäten in eine XML-Verarbeitung einzufügen. Dies kann zu verschiedenen Angriffen führen, wie z.B. dem Lesen von Dateien auf dem Server, dem Durchführen von Port-Scans oder dem Ausführen von Remote-Code.
#### **Exploit-Techniken**
Es gibt verschiedene Techniken, um eine XXE-Verwundbarkeit auszunutzen:
1.**Blind XXE**: Der Angreifer kann die Antwort des Servers nicht direkt sehen, aber er kann indirekte Hinweise erhalten, indem er die Antwortzeit oder die Größe der Antwort analysiert.
2.**Parameterentwicklung**: Der Angreifer kann die Parameter des XML-Dokuments manipulieren, um die gewünschten Informationen zu erhalten.
3.**Out-of-Band (OOB) XXE**: Der Angreifer nutzt eine externe Entität, um Informationen über einen anderen Kanal abzurufen, z.B. über DNS-Anfragen oder HTTP-Anfragen an einen von ihm kontrollierten Server.
1.**XML-Parser konfigurieren**: Konfigurieren Sie den XML-Parser so, dass externe Entitäten deaktiviert sind.
2.**Input-Validierung**: Überprüfen Sie alle Benutzereingaben, die in XML-Dokumente eingefügt werden, um sicherzustellen, dass sie keine schädlichen Entitäten enthalten.
3.**Content-Security-Policy (CSP)**: Verwenden Sie eine Content-Security-Policy, um die Ausführung von Skripten von nicht vertrauenswürdigen Quellen zu blockieren.
4.**Aktualisieren Sie Ihre Software**: Halten Sie Ihre Software auf dem neuesten Stand, um bekannte Sicherheitslücken zu schließen.
#### **Zusammenfassung**
Eine XXE-Schwachstelle ermöglicht es einem Angreifer, externe Entitäten in eine XML-Verarbeitung einzufügen und verschiedene Angriffe durchzuführen. Um sich vor XXE-Angriffen zu schützen, sollten XML-Parser konfiguriert, Eingaben validiert, Content-Security-Policies verwendet und Software regelmäßig aktualisiert werden.
XSLT Server Side Injection (XSSI) ist eine Technik, bei der ein Angreifer bösartigen XSLT-Code in eine Anfrage an einen Server einschleust, um serverseitige Aktionen auszuführen. Dies kann durch eine Schwachstelle in der Verarbeitung von XML-Daten oder durch die direkte Verwendung von XSLT-Dateien ermöglicht werden.
Ein möglicher Angriffsvektor für XSSI ist die Übermittlung von XML-Daten über HTTP. Der Angreifer kann den XML-Inhalt so manipulieren, dass er bösartigen XSLT-Code enthält. Wenn der Server die XML-Daten verarbeitet und eine XSLT-Transformation durchführt, wird der bösartige Code ausgeführt.
Um XSSI über HTTP durchzuführen, müssen Sie zunächst die Schwachstelle identifizieren, die es ermöglicht, bösartigen XSLT-Code einzuschleusen. Dies kann beispielsweise eine unzureichende Validierung der XML-Daten oder eine unsichere Verwendung von XSLT-Dateien sein.
Sobald Sie die Schwachstelle identifiziert haben, können Sie den bösartigen XSLT-Code in die XML-Daten einfügen und die Anfrage an den Server senden. Der Server wird dann den Code ausführen und die gewünschten serverseitigen Aktionen ausführen.
Es ist wichtig zu beachten, dass XSSI ein potenziell gefährlicher Angriff ist und nur zu Testzwecken oder mit ausdrücklicher Zustimmung des Eigentümers des Servers durchgeführt werden sollte. Unbefugtes XSSI kann zu unbefugtem Zugriff auf Daten oder zur Kompromittierung des Servers führen.
Ein Portscan ist ein Verfahren, bei dem die offenen Ports eines Zielsystems ermittelt werden. Dies ermöglicht es einem Angreifer, potenzielle Schwachstellen zu identifizieren und Angriffe auf das System vorzubereiten. Es gibt verschiedene Tools und Techniken, die für einen Portscan verwendet werden können, darunter Nmap, Masscan und Zmap. Ein Portscan kann entweder als Teil einer Penetrationstest- oder Sicherheitsüberprüfungsaktivität durchgeführt werden, oder von einem Angreifer, der versucht, unautorisierten Zugriff auf ein System zu erlangen. Es ist wichtig zu beachten, dass das Durchführen eines Portscans ohne Zustimmung des Eigentümers des Zielsystems illegal sein kann.
XSLT 2.0 bietet die Möglichkeit, Daten in eine Datei zu schreiben. Dies kann nützlich sein, um Informationen zu speichern oder Ergebnisse zu protokollieren. Um Daten in eine Datei zu schreiben, können Sie die `xsl:result-document` Anweisung verwenden.
Die Syntax für die `xsl:result-document` Anweisung lautet wie folgt:
```xml
<xsl:result-documenthref="pfad/zur/datei">
<!-- Inhalt der Datei -->
</xsl:result-document>
```
Der `href`-Attribut gibt den Pfad zur Datei an, in die geschrieben werden soll. Sie können entweder einen absoluten Pfad oder einen relativen Pfad angeben. Der Inhalt der Datei wird innerhalb der `xsl:result-document` Anweisung platziert.
Beispiel:
```xml
<xsl:result-documenthref="output.txt">
<xsl:text>Hallo, Welt!</xsl:text>
</xsl:result-document>
```
In diesem Beispiel wird der Text "Hallo, Welt!" in die Datei "output.txt" geschrieben.
Die Xalan-J Erweiterung ist eine leistungsstarke Funktion, die in der Extensible Stylesheet Language Transformations (XSLT) verwendet wird. Xalan-J ist eine Java-basierte Implementierung von XSLT und bietet eine Vielzahl von Funktionen und Erweiterungen, die Entwicklern helfen, komplexe Transformationen auf XML-Daten durchzuführen.
Eine der nützlichsten Erweiterungen von Xalan-J ist die Möglichkeit, serverseitige Injektionen durchzuführen. Mit dieser Technik können Angreifer bösartigen Code in XSLT-Dateien einfügen, um auf vertrauliche Informationen zuzugreifen oder die Funktionalität der Anwendung zu manipulieren.
Um eine XSLT-Datei mit einer serverseitigen Injektion zu erstellen, muss der Angreifer die Schwachstellen in der Anwendung identifizieren, die XSLT-Dateien verarbeiten. Dies kann beispielsweise durch das Ausnutzen von unsicheren Eingabefeldern oder fehlerhaften Validierungen erfolgen.
Sobald der Angreifer eine Schwachstelle identifiziert hat, kann er den bösartigen Code in die XSLT-Datei einfügen. Dieser Code wird dann vom Xalan-J-Prozessor interpretiert und ausgeführt, wodurch der Angreifer die Kontrolle über die Anwendung erhält.
Es gibt verschiedene Arten von serverseitigen Injektionen, die mit Xalan-J durchgeführt werden können, darunter SQL-Injektionen, Remote-Code-Ausführung und Dateilecks. Jede dieser Techniken ermöglicht es dem Angreifer, auf unterschiedliche Weise auf vertrauliche Informationen zuzugreifen oder die Anwendung zu manipulieren.
Um sich vor Xalan-J-Erweiterungen zu schützen, sollten Entwickler sicherstellen, dass alle Eingaben ordnungsgemäß validiert und bereinigt werden. Darüber hinaus sollten sie regelmäßig nach Sicherheitslücken in ihrer Anwendung suchen und diese schnellstmöglich beheben, um potenzielle Angriffe zu verhindern.
**Auf dieser Seite finden Sie Beispiele für RCE in anderen Sprachen:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)**
(Beispiel von [http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls))
* Überprüfen Sie [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSLT%20Injection)
* Überprüfen Sie [https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection)
<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>
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF-Datei** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks repo](https://github.com/carlospolop/hacktricks) und das [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)** einreichen.