Alle Artikel

Ein simpler Weg um Admin-Rechte für Web-Dashboards zu erhalten

Wie es anfing

Manchmal schaue ich mir den Aufbau von Webseiten aus Neugier an. Speziell bei Firmen und Webseiten, welche großen Fokus auf Tech legen, kann man zwar etwas lernen, aber auch in der Komplexität versinken.

Wenn man anfängt, HTTP-Traffic mitzulesen, sieht man Dinge, die man sonst übersieht - oder auch nicht sehen sollte.

Bei nicht tech-fokussierten Firmen ist die Gefahr aber umso größer, dass es Sicherheitslücken gibt, da meist nur ein sehr kleiner Entwicklerkreis existiert. (Ich kann dennoch nur dazu raten, zumindest Security-Audits durchzuführen - egal bei welcher Größe, speziell sobald man mit sensiblen Daten arbeitet.)

Also schaue ich mir einfach mal so eine Seite an, wo Tech nicht im Fokus liegt. Ich werde hier nicht den Namen benennen - aber es hat sich relativ schnell etwas bemerkbar gemacht:

Ich schneide per Chrome DevTools alle HTTP-Requests einer Seite mit (F12 -> Network Tab, iykyk) und registriere mir einen Account auf der Seite. Dort konnte ich - beispielhaft unten dargestellt - folgendes bei der Datenübermittlung entdecken:

json
{
  "email": "beispiel@beispiel.de",
  "passwd": "SuperSicheresPasswort123!",
  "role": "user"
}

Das bei einem Registrierungsprozess sowohl E-Mail und Passwort abgefragt werden - und daher auch übermittelt werden an eine API der Webseite - ist ein normaler Ablauf.

Beim genaueren Nachdenken war mir aber role etwas suspekt. Kann man damit bei der Registrierung etwa Rechte erlangen, die man nicht haben sollte? Schauen wir mal.

Der Test

Dem G-Mail-Dot Trick sei Dank kann man ja relativ schnell noch weitere Accounts erstellen.

Ich habe daher einfach mal einen weiteren Versuch gestartet, und per Request direkt mal den (offensichtlichsten) Wert für role übergeben, den man nutzen könnte: admin

Es wäre auch zu einfach gewesen: Fehler - 500 Internal server error. Ich begab mich also mal auf der Suche in weiteren Code der Webseite.

Dort ist man in einer Javascript-Datei bei einfacher Suche nach dem Stichwort "role" auch relativ schnell fündig geworden: Es scheint unter anderem die Rolle administrator zu existieren. Wie soll man auch darauf kommen?

Also habe ich einen weiteren Versuch gestartet: Status code 200 - Success!

War das wirklich so einfach?

Ich loggte mich also im besagten neu erstellten Account ein und habe eine Oberfläche vorgefunden, welche ich mit einem normalen Account nicht sehen konnte, darunter mit Kundendaten und... ich nenne es mal administrativen Möglichkeiten.

Was habe ich getan?

Auch wenn es nachvollziehbar sein sollte, das man mit sowas keinen Unfug treiben sollte - an wen sollte ich mich damit wenden? Solche Firmen haben nicht unbedingt einen Ansprechpartner für Security-Themen, weshalb mir auch nichts übrig blieb, als den Kundenservice zu kontaktieren.

Die Antwort hat zwar auf sich warten lassen, aber dennoch: Das Problem wurde behoben und es wurde sich bedankt.

Takeaway

Manche Dinge sind offensichtlicher, und man muss manchmal einmal tief graben um zur Lösung zu kommen. Es sollte im Interesse von jedem sein, solche Findings zu melden - schließlich mag es niemand gerne wenn bspw. seine persönliche Daten im Internet veröffentlicht werden, bzw. kann das zu einem Schaden für die Firma führen, der irreparabel ist. Ich denke um sowas zu finden, muss man aber auch manchmal Glück haben, und mitdenken. Ich hoffe, dies hat zumindest einen kleinen Denkanstoß gegeben.