it-swarm-eu.dev

Wie entführe ich eine Sitzung?

Trotz des offensichtlichen Titels der Frage ist dies eigentlich ein echter Zweck.

Meine Seite verwendet PHP Code wie folgt:

    $select="select id from tableA where user_id='".$_SESSION['sess_user_id']."'";

Ich versuche wirklich, wie ein Hacker zu denken und herauszufinden, wie ich diesen Wert ändern kann. Ich habe Artikel gelesen, in denen es um die Entführung von Sitzungen geht, aber ich bin mir nicht sicher, wie das gemacht werden kann ...

25
Steve

Grundsätzlich nehmen Sie, wenn Sie eine Sitzung entführen, deren Sitzungs-ID und tun so, als ob es Ihre eigene wäre. Normalerweise wird die Sitzungs-ID in das Cookie übertragen. Wenn Sie also auf das Cookie der anderen Parteien zugreifen können, können Sie es einfach in Ihr eigenes Cookie einfügen und haben deren Sitzung gestohlen.

Dies kann auf verschiedene Arten geschehen, beispielsweise durch Aufspüren des drahtlosen Netzwerks und Betrachten der übertragenen HTTP-Pakete oder durch XSS-Angriff , wo Sie dem Browser des Opfers mitteilen können, dass er Ihnen seine Cookie-Informationen offenlegen soll.

Ich möchte erwähnen, dass das Beispiel, das Sie in Ihrer Frage beschreiben, möglicherweise auch für SQL-Injection anfällig ist. Wenn ich die sessionID meines Cookies in ändere

asdf' OR 1=1-- 

Ich würde höchstwahrscheinlich als gültiger Benutzer authentifiziert werden. Um dies zu verhindern, müssen Sie sicherstellen, dass schmutzige Daten von Ihren Kunden ordnungsgemäß bereinigt werden, bevor Sie die Daten für irgendetwas verwenden.

10
Chris Dale

Wenn Sie an einer praktischen Demonstration interessiert sind, ist Twitter ein sehr gutes Beispiel dafür, wie einfach dies geht. Du brauchst:

  • Zwei Computer
  • Firefox mit Firebug (natürlich gibt es andere Optionen, aber diese sind beliebt und leicht zu bekommen)
  • Ein Cookie-Editor wie Advanced Cookie Manager (wieder einfach zu installierendes Add-On über Firefox)

Melden Sie sich auf Computer A mit Firefox und Firebug bei Ihrem Twitter-Konto auf der Nicht-https-Site an. Sobald Sie angemeldet sind, öffnen Sie Firebug und sehen Sie sich die Zeile "GET Twitter.com" an. Wenn Sie es erweitern, suchen Sie im Abschnitt Antwortheader nach Set-Cookie. Dort finden Sie einen Cookie namens _Twitter_sess. Markieren und kopieren Sie den Wert (bis zum Semikolon).

Öffnen Sie jetzt Firefox mit dem erweiterten Cookie-Manager auf Computer B und rufen Sie die Twitter-Anmeldeseite auf. Öffnen Sie den Advanced Cookie Manager und filtern Sie nach Twitter.com. Sobald Sie die Domain Twitter.com und die Liste der Cookies gefunden haben, wird ein Cookie mit dem Namen _Twitter_sess angezeigt. Lösche es. Erstellen Sie nun ein neues Cookie mit dem Namen "_Twitter_sess", dem Pfad "/" und "Value", dem Wert von _Twitter_sess vom anderen Computer. Speichern Sie den Cookie.

Schließen Sie nun den Cookie-Manager und kehren Sie zur Twitter-Anmeldeseite zurück, aktualisieren Sie die Seite und bam, Sie sind dabei.

Überlegen Sie sich jetzt einen cleveren Weg, um die Sitzung eines anderen zu erhalten (offenes WLAN, xss), und auf diese Weise wird das Hijacking von Sitzungen durchgeführt.

7
Safado

Karrax 'Code ist ein SQL Injection-Angriff (für den Ihr Code anfällig ist - dies muss behoben werden), kein Session-Hijacking-Angriff.

$select="select id from tableA where user_id='"
    .mysql_real_escape_string($_SESSION['sess_user_id'], $db_handle)
    ."'";

Bei der Sitzungsentführung stiehlt Bob den Wert für die Sitzungs-ID, die Sie Alice zugewiesen haben. Dies könnte auf einen MITM-Angriff auf den HTML-Stream, Netzwerk-Sniffing, einen CSS-Fehler, der es ihm ermöglichte, Javacript auf Ihrer Website einzubetten, oder andere Methoden zurückzuführen sein.

Es ist wichtig, Sitzungsfixierungsprobleme nicht aus den Augen zu verlieren - auch wenn Sie die Flags nur für SSL und HTTP in einem Cookie setzen UND use_only_cookies setzen, um das Problem nicht zu lösen, bei dem Bob Alices Computer angreift, bevor sie auf Ihre Site zugreift und einen bestimmten Wert für festlegt die Sitzungs-ID. Bob kann dann denselben Wert auf seinem Computer festlegen und seine Anforderungen sind an dieselbe Sitzung wie Alice gebunden. Wenn Sie sich authentifizieren, sollten Sie eine neue Sitzungs-ID generieren - siehe session_regenerate_id ()

4
symcbean

Bei der Entführung von Sitzungen wird einem Benutzer normalerweise ein Cookie gestohlen. Zum Beispiel ist Firesheep ein Plug-In für Firefox, das Sitzungen über ungesichertes WLAN stiehlt. HTTP ist ein zustandsloses Protokoll. Das Beste, was wir tun können, um Personen zu authentifizieren, sind Cookies.

Der PHP Code, den Sie in Ihrer Frage haben, ist ein Beispiel für Code, der könnte anfällig für SQL-Injection ist. Es wird normalerweise empfohlen, Variablen vor dem Einfügen zu bereinigen eine solche Abfrage.

2
WalterJ89