Cross-Site-Scripting "Persistentes" Beispiele
Version vom 7. März 2023, 10:19 Uhr von Thomas.will (Diskussion | Beiträge)
Cross-Site-Scripting "Persistent"
Um was geht es?
Link
Eingabe Skript
Normale Verhaltensweise
Einfügen und generieren des Schadcodes
<script>alert("Hacked by Xinux")</script>
Dieses Popup Fenster geht nun auf
- Es wird auf jedem Rechner aufgehen der den generierten Link aufruft
Dieser generierter Link können wir nun an die Opfer versenden
Hier nun der Code zu diesem Beispiel
- Bei diesem Eingabeformular wird der eingegebene Text unterhalb des Eingabefeldes wieder ausgegeben.
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
==Link==
*http://opfer.secure.local/scripts/xss-reflected.php
==Eingabe Skript==
[[Datei:Cross-Site-Scripting-Reflected-11.png]]
==Normale Verhaltensweise==
[[Datei:Cross-Site-Scripting-Reflected-12.png]]
==Einfügen und generieren des Schadcodes==
<script>alert("Hacked by Xinux")</script>
[[Datei:Cross-Site-Scripting-Reflected-13.png]]
==Dieses Popup Fenster geht nun auf==
*Es wird auf jedem Rechner aufgehen der den generierten Link aufruft
[[Datei:Cross-Site-Scripting-Reflected-14.png]]
=Dieser generierter Link können wir nun an die Opfer versenden=
*http://opfer.secure.local/scripts/xss-reflected.php?name=%3Cscript%3Ealert%28%22Hacked%20by%20Xinux%22%29%3C%2Fscript%3E#
=Hier nun der Code zu diesem Beispiel=
*Bei diesem Eingabeformular wird der eingegebene Text unterhalb des Eingabefeldes wieder ausgegeben.
<syntaxhighlight lang=html>
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
</p>
</form>
<?php
if( $_GET[ 'name' ] != NULL ) {
echo 'Hello ' . $_GET[ 'name' ] ;
}
?>
</body>
</html>
Wie können wir so etwas Vermeiden?
- Wir fügen der If Klausel ein weiteres Argument mit, nämlich das die Eingabe nur ausgeführt werden soll, wenn kein "<script" enthalten ist
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
==Link==
*http://opfer.secure.local/scripts/xss-reflected.php
==Eingabe Skript==
[[Datei:Cross-Site-Scripting-Reflected-11.png]]
==Normale Verhaltensweise==
[[Datei:Cross-Site-Scripting-Reflected-12.png]]
==Einfügen und generieren des Schadcodes==
<script>alert("Hacked by Xinux")</script>
[[Datei:Cross-Site-Scripting-Reflected-13.png]]
==Dieses Popup Fenster geht nun auf==
*Es wird auf jedem Rechner aufgehen der den generierten Link aufruft
[[Datei:Cross-Site-Scripting-Reflected-14.png]]
=Dieser generierter Link können wir nun an die Opfer versenden=
*http://opfer.secure.local/scripts/xss-reflected.php?name=%3Cscript%3Ealert%28%22Hacked%20by%20Xinux%22%29%3C%2Fscript%3E#
=Hier nun der Code zu diesem Beispiel=
*Bei diesem Eingabeformular wird der eingegebene Text unterhalb des Eingabefeldes wieder ausgegeben.
<syntaxhighlight lang=html>
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
</p>
</form>
<?php
if( $_GET[ 'name' ] != NULL ) {
echo 'Hello ' . $_GET[ 'name' ] ;
}
?>
</body>
</html>
Wie können wir so etwas Vermeiden?
- Wir fügen der If Klausel ein weiteres Argument mit, nämlich das die Eingabe nur ausgeführt werden soll, wenn kein "<script" enthalten ist
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
</p>
</form>
<?php
if( $_GET[ 'name' ] != NULL && stripos($_GET['name'], "<script") !== 0 ) {
echo 'Hello ' . $_GET[ 'name' ] ;
}
?>
</body>
</html>
</form>
<?php if( $_GET[ 'name' ] != NULL && stripos($_GET['name'], "<script") !== 0 ) { echo 'Hello ' . $_GET[ 'name' ] ; } ?>
</body> </html>
</syntaxhighlight>
</form>
<?php if( $_GET[ 'name' ] != NULL ) {
echo 'Hello ' . $_GET[ 'name' ] ;
} ?>
</body> </html>
</syntaxhighlight>
Wie können wir so etwas Vermeiden?
- Wir fügen der If Klausel ein weiteres Argument mit, nämlich das die Eingabe nur ausgeführt werden soll, wenn kein "<script" enthalten ist
<!DOCTYPE html>
<html>
<body>
<h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>
<form name="XSS" action="#" method="GET">
<p>
What's your name?
<input type="text" name="name">
<input type="submit" value="Submit">
</p>
</form>
<?php
if( $_GET[ 'name' ] != NULL && stripos($_GET['name'], "<script") !== 0 ) {
echo 'Hello ' . $_GET[ 'name' ] ;
}
?>
</body>
</html>



