Account-Hijacking?! Ich habe IDOR tatsächlich ausprobiert [HackTheBox Armaxis-Bericht]

Account-Hijacking?! Ich habe IDOR tatsächlich ausprobiert [HackTheBox Armaxis-Bericht]

Webanwendungen gelten oft als „sicher“, nur weil Mechanismen wie Authentifizierung und Tokens implementiert sind.
In der Realität gibt es jedoch viele Fälle, festlegt, auf welche Benutzerdaten zugegriffen werden darf , direkt zur Kontoübernahme führen kann.

Insbesondere stellt IDOR (Insecure Direct Object Reference) eine Sicherheitslücke dar, die auftritt, wenn Benutzereingaben direkt auf interne Objekte verweisen. Dies kann selbst bei vorhandener Authentifizierung und Tokens vorkommen.
Dadurch kann es möglich sein, fremde Konten zu manipulieren oder deren Berechtigungen zu übernehmen.

In diesem Artikel werden wir die CTF-Herausforderung Armaxis als Beispiel verwenden, um die IDOR-Malware, die sich in der Passwort-Reset-Funktion versteckte, tatsächlich nachzubauen und zu untersuchen, wie eine Kontoübernahme erreicht werden kann.

Inhaltsverzeichnis

Über HackTheBox

Dieses Mal verwenden wir tatsächlich HackTheBox (HTB), um Schwachstellen zu überprüfen.

HackTheBox ist eine praxisorientierte CTF-Plattform, auf der Teilnehmer in verschiedenen Sicherheitsbereichen wie Webanwendungen, Servern und Netzwerken üben können.
Das Besondere daran: Die Teilnehmer können lernen, indem sie tatsächlich auf die anzugreifenden Maschinen und Anwendungen zugreifen und selbst Hand anlegen.

Armaxis, die wir uns diesmal ansehen werden, der Challenge-Kategorien , die zuvor auf HackTheBox angeboten wurden. Derzeit ist einem VIP-Plan oder höher (beachten Sie, dass Benutzern mit dem kostenlosen Plan nur aktive Challenges zur Verfügung stehen).

Es gibt auch Maschinen und Herausforderungen in verschiedenen Kategorien, darunter Web, Reversing, Pwn und Forensik, sodass Sie sie auf einem für Sie geeigneten Niveau angehen können.

Wenn Sie Ihre Fähigkeiten mit HackTheBox ernsthaft verbessern möchten, melden Sie sich unbedingt den VIP-Plan und nutzen Sie alle Vorteile der bisherigen Maschinen und Herausforderungen.

👉 Besuchen Sie hier die offizielle HackTheBox-Website

Sicherheit kann nur gemeistert werden, wenn man aus der Perspektive eines Angreifers übt

Das bloße Lesen der Referenz reicht nicht aus. den tatsächlichen Angriff können Sie wirklich verstehen, warum etwas anfällig ist und wie Sie es schützen können.

HackTheBox bietet eine Trainingsumgebung, in der Sie Schwachstellen auf einer virtuellen Maschine sicher ausprobieren können.
Selbst Anfänger können lernen, wie ein Angreifer zu denken und sich Schritt für Schritt weiterzuentwickeln.

  • Virtuelle Maschinenübungen basierend auf realistischen Angriffsszenarien
  • Behebt eine Vielzahl von Schwachstellen, darunter RCE, SQLi und XSS
  • Mit dem VIP-Plan haben Sie Zugriff auf ältere Maschinen

*HackTheBox Academy (Lehrmaterialien) und Labs (Übungsumgebung), die unterschiedliche Abrechnungsstrukturen haben.
Für alle, die sich auf die Praxis konzentrieren möchten, empfehlen wir den Labs VIP-Tarif oder höher.

👉 Für detaillierte Informationen zur Registrierung für HackTheBox und den Unterschieden zwischen den Plänen klicken Sie bitte hier.

Zusammenfassung der Herausforderung: Armaxis

ist eine webbasierte CTF-Aufgabe, die auf
dem fiktiven Waffenkontrollsystem „Armaxis“ basiert. Die Spieler greifen als normale Benutzer auf das System zu, untersuchen dessen Funktionen und nutzen Schwachstellen aus.

Neben Benutzerregistrierung und Login bietet Armaxis auch eine Funktion zum Zurücksetzen von Passwörtern eine Waffenausgabefunktion , die nur Administratoren zur Verfügung steht .
Bei der Waffenausgabe können Benutzer Markdown-Text als Memo-Feld eingeben. Dieser Inhalt wird serverseitig verarbeitet, bevor er gespeichert und angezeigt wird.

Auf den ersten Blick wirkt dies wie eine typische Webanwendung, doch die Benutzerautorisierungsprüfung für den Passwortzurücksetzungsprozess ist unzureichend implementiert unter bestimmten Bedingungen einer unsicheren direkten Objektreferenz (IDOR) .
Durch Ausnutzung dieser Schwachstelle ist es möglich, auf andere Benutzer, sogar Administratorkonten, zuzugreifen, was eigentlich nicht zulässig sein sollte.

Durch den Erwerb von Administratorrechten werden neue Möglichkeiten und zusätzliche Angriffsflächen freigeschaltet, wodurch
ein Spieler letztendlich die Kaskadeneffekte mehrerer Designfehler ausnutzen kann, um Zugang zu Informationen über den Server zu erhalten.

Punkt

  • Herausforderungstyp: Webanwendung
  • Schwachstelle: IDOR, LFI
  • Angriffssequenz:
    • Die Funktionen aus der Perspektive eines normalen Benutzers untersuchen
    • Ausnutzen von Schwachstellen in Passwortzurücksetzungsprozessen zum Erlangen von Berechtigungen (IDOR)
    • Greifen Sie auf Administratorfunktionen zu und entdecken Sie zusätzliche Angriffsflächen
    • Diebstahl interner Serverinformationen (LFI)
  • Was Sie lernen können
    • Der Unterschied zwischen Authentifizierung und Autorisierung
    • Wie IDOR gegründet wird

Was ist IDOR?

Bei der Diskussion um die Sicherheit von Webanwendungen Authentifizierung und Autorisierung oft verwechselt
doch die korrekte Unterscheidung ist für das Verständnis von IDOR unerlässlich.

Die Authentifizierung ist ein Mechanismus zur Überprüfung Ihrer Identität ; Anmeldeprozesse und Tokenvalidierung spielen dabei eine wichtige Rolle.
Die Autorisierung hingegen ist ein Mechanismus zur Festlegung Ihrer Berechtigungen

IDOR (Insecure Direct Object Reference) ist eine Sicherheitslücke, die auftritt, wenn
Autorisierungsprüfung fehlt Sie entsteht, wenn ein vom Benutzer angegebener Wert (z. B. eine ID, eine E-Mail-Adresse oder ein Dateiname) verwendet wird, um direkt auf ein Objekt innerhalb des Servers zu verweisen, ohne zu überprüfen, ob es tatsächlich diesem Benutzer gehört.

Wichtig ist zu , dass IDOR auch bei vorhandener Authentifizierung gilt :
Eingeloggt zu sein oder ein gültiges Token zu besitzen, ist bedeutungslos, wenn keine Autorisierungsprüfungen für das referenzierte Objekt durchgeführt wurden.

Wenn eine Implementierung beispielsweise die E-Mail-Adresse in einer Anfrage zur Suche oder Aktualisierung von Benutzerinformationen verwendet,
wäre es möglich, das Konto einer anderen Person zu manipulieren, indem einfach der Eingabewert ersetzt wird.
Dies ist ein typisches Beispiel für einen IDOR-Angriff.

Bei der in diesem Artikel besprochenen CTF-Herausforderung „Armaxis“ fehlte diese Autorisierungsprüfung auch in der Passwort-Reset-Funktion, was
letztendlich zu Kontoübernahmen führte.

Ich habe IDOR tatsächlich ausprobiert!

Bevor wir unseren Angriff starten, werfen wir zuerst einen Blick auf den Bildschirm.

Das erste Bild zeigt den Anmeldebildschirm eines Systems namens Armaxis.
Anscheinend verwenden sowohl Administratoren als auch normale Benutzer denselben Anmeldebildschirm.

Das zweite ist ein Postfach. Hier wird die E-Mail-Adresse des Angreifers vorbereitet.
test@email.htb ist unsere E-Mail-Adresse, also überprüfen wir sie.

Erkundungsphase: Erstellen Sie ein Konto unter test@email.htb

Erstellen Sie zunächst ein Konto mit der angegebenen E-Mail-Adresse test@email.htb.
Die Registrierung ist einfach: Geben Sie einfach Ihre E-Mail-Adresse und Ihr Passwort ein und klicken Sie auf die Schaltfläche „Registrieren“.

Wenn Sie sich erfolgreich registriert haben, wird Ihnen die Meldung „Registrierung erfolgreich“ angezeigt.

Sobald Sie sich registriert haben, versuchen Sie, sich einzuloggen.

An dieser Stelle sollte die Meldung „Noch keine Waffen versendet“ erscheinen.
Danach erhalten Sie wahrscheinlich Administratorrechte und können mit dem Versand von Waffen an dieses Konto beginnen.

Erkundungsphase: Überprüfung des Quellcodes

Die Aufklärungsphase geht weiter, also schauen wir uns den Quellcode an.

Als ich mich umsah, stieß ich in "/reset-password" auf eine Implementierung, die meine Aufmerksamkeit erregte.

router.post("/reset-password", async (req, res) => { const { token, newPassword, email } = req.body; // Parameter 'email' hinzugefügt if (!token || !newPassword || !email) return res.status(400).send("Token, E-Mail-Adresse und neues Passwort erforderlich."); try { const reset = await getPasswordReset(token); if (!reset) return res.status(400).send("Ungültiges oder abgelaufenes Token."); const user = await getUserByEmail(email); if (!user) return res.status(404).send("Benutzer nicht gefunden."); await updateUserPassword(user.id, newPassword); await deletePasswordReset(token); res.send("Passwort erfolgreich zurückgesetzt."); } catch (err) { console.error("Fehler beim Zurücksetzen des Passworts:", err); res.status(500).send("Fehler beim Zurücksetzen des Passworts."); } });

Es scheint alles in Ordnung zu sein, bis ich das Token überprüfe. Anscheinend ist dem Token kein Benutzer zugeordnet, daher versuche ich, den Benutzer anhand der E-Mail-Adresse zu ermitteln.
Schauen wir uns getUserByEmail an.

async function getUserByEmail(email) { const query = `SELECT * FROM users WHERE email = ?`; try { const user = await get(query, [email]); return user; } catch (error) { throw error; } }

Bei der Überprüfung der SQL-Abfrage stellte ich fest, dass der Benutzer anscheinend nur anhand seiner E-Mail-Adresse ermittelt wird.

Die Funktion updateUserPassword wird mit der aus der E-Mail erhaltenen Benutzer-ID und dem neuen Passwort aufgerufen.
Überprüfen wir das ebenfalls.

async function updateUserPassword(id, newPassword) { const query = `UPDATE users SET password = ? WHERE id = ?`; try { await run(query, [newPassword, id]); } catch (error) { throw error; } }

Da es keine spezielle Kontrolle über das Token gibt, haben wir festgestellt, dass es möglich ist, das Passwort eines anderen Benutzers mithilfe der Parameter email und newPassword zu ändern.

Der Quellcode enthält außerdem die E-Mail-Adresse des Administrators.
Notieren Sie sich „admin@armaxis.htb“, da Sie diese später zum Anmelden im Administratorkonto benötigen.

Aufklärungsphase: Überprüfung tatsächlicher Passwortänderungsanfragen

Als Nächstes bedienen wir den Bildschirm und bestätigen die Passwortänderung.
Auf dem Anmeldebildschirm finden Sie die Option „Passwort vergessen?“. Tippen Sie darauf, um zum Bildschirm „Passwort zurücksetzen“ zu gelangen.

Versuchen Sie nun, Ihr Passwort mit
der angegebenen E-Mail-Adresse „ test@email.htbtest@email.htb “ ein und klicken Sie auf die Schaltfläche „Code anfordern“.

Es erscheint ein Dialogfeld auf dem Bildschirm, in dem Sie aufgefordert werden, Ihr Token und Ihr neues Passwort einzugeben.

Sie können das Token überprüfen, indem Sie Ihr Postfach neu laden.

Als ich versuchte, mein Passwort durch Eingabe des Tokens und des neuen Passworts zu aktualisieren, stellte ich fest, dass die folgende Anfrage gesendet wurde.

Wenn Sie jeden Parameter wie unten gezeigt einstellen können, sollten Sie das Administratorpasswort ändern können.

  • Token: Token ausgestellt von test@email.htb
  • E-Mail: E-Mail-Adresse des Administrators
  • neuesPasswort: Beliebiges Passwort

Jetzt, da wir über alle verfügbaren Informationen verfügen, starten wir einen Angriff auf Basis dieser Informationen.

Angriffsphase: Übernahme des Administratorkontos

Lasst uns die IDOR-Schwachstelle ausnutzen und das von test@email.htb ausgestellte Token verwenden, um das Passwort des Administratorkontos zu ändern und das Administratorkonto zu übernehmen.

Zuerst besorgen Sie sich ein Token mit der Adresse "test@email.htb".

Sobald Sie diesen Bildschirm erreichen, sollten Sie das Token in Ihrer Postfachadresse erhalten haben.

Es ist sicher hier angekommen. (Ich habe versehentlich zweimal auf den Knopf gedrückt, deshalb gibt es drei E-Mails.)

Nun modifizieren wir das JSON mit den folgenden Informationen:

  • Token: Das zuvor erhaltene Token für test@email.htb
  • neuesPasswort: Beliebiges Passwort (Test)
  • E-Mail: admin@armaxis.htb (E-Mail-Adresse des Administrators)

Jetzt sollten Sie in der Lage sein, mit dem Token von test@email.htb eine Anfrage zum Ändern des Passworts eines anderen Kontos zu senden.

Die Antwort lautet 200 OK, also denke ich, es ist gut gelaufen.
Schauen wir es uns auf dem Bildschirm an.

Geben Sie als E-Mail-Adresse admin@armaxis.htb ein, geben Sie das Passwort ein, das Sie unter newPassword festgelegt haben, und klicken Sie auf die Schaltfläche „Anmelden“.

Jetzt haben wir das Admin-Konto gekapert!
Jetzt, da wir die Einsatzwaffe haben, können wir sie benutzen, um die Flagge zu ergattern.

Bonus: Erhalte die Flagge mithilfe von LFI

Da sich dieser Artikel auf IDOR konzentriert, werde ich die nächsten Schritte kurz zusammenfassen.

Zunächst gab es ein Feld auf dem Bildschirm, in das man Markdown eingeben konnte. Dieses Mal werden wir dieses Markdown-Feld verwenden, um eine Datei auf einem Server zu laden, der normalerweise für LFI nicht zugänglich ist.

Der Befehl "COPY flag.txt /flag.txt" zeigt uns, dass sich die Datei flag.txt direkt unter dem Stammverzeichnis befindet.

# Node.js-Basisimage mit Alpine Linux verwenden FROM node:alpine # Erforderliche Abhängigkeiten für MailHog und supervisord installieren RUN apk add --no-cache \ wget \ supervisor \ apache2-utils \ curl \ build-base # MailHog-Binärdatei installieren WORKDIR / RUN wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 RUN chmod +x MailHog_linux_amd64 # E-Mail-Verzeichnis vorbereiten und Anwendungsdateien kopieren RUN mkdir -p /email COPY email-app /email WORKDIR /email RUN npm install # Zufälliges Passwort generieren und Authentifizierungsdatei für MailHog erstellen RUN RANDOM_VALUE=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) \ && htpasswd -nbBC 10 test "$RANDOM_VALUE" > /mailhog-auth \ && echo $RANDOM_VALUE > /email/password.txt # Arbeitsverzeichnis für die Hauptanwendung festlegen WORKDIR /app # Herausforderungsdateien kopieren und Abhängigkeiten installieren COPY challenge . RUN npm install # supervisord-Konfiguration kopieren COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Ports für die Anwendung und den E-Mail-Client freigeben EXPOSE 8080 EXPOSE 1337 COPY flag.txt /flag.txt # supervisord starten CMD ["supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

Markdown kann Bilder mit "![](Pfad)" anzeigen.
Normalerweise würde man hier einen Bildpfad angeben, aber versuchen wir es einmal mit Text.

Stellen Sie außerdem den Pfad auf file:// anstatt auf image:// ein.

![flag](file:///flag.txt)

Sobald Sie Dispatch Weapon erstellt haben, melden Sie sich mit test@email.htb an.

Das Bild wird natürlich nicht angezeigt, aber Sie sehen einen Base64-kodierten Text in Elements.

<img src="data:image/*;base64,SFRCe200cmtkMHduX2J1Z3NfMW5fdGgzX3cxbGQhfQo=" alt="Eingebettetes Bild">

Lass uns das entschlüsseln, wie auch immer du willst.
Ich benutze CyberChef.

Wir konnten die Flagge erfolgreich wiederherstellen! In diesem Fall handelte es sich um die Datei flag.txt, aber wenn jemand eine Passwortdatei oder etwas Ähnliches wiederherstellen würde, könnte dies zu großen Problemen führen, also seien Sie vorsichtig.

Gegenmaßnahmen: Was kann getan werden, um IDOR zu verhindern?

Das IDOR-Problem bei Armaxis lag nicht an einem Fehler in der Token-Generierungsmethode oder an der Zufälligkeit, sondern fehlenden Autorisierungsprüfungen . Daher reicht es nicht aus, die Token-Sicherheit einfach zu erhöhen.

Hier fassen wir auf Grundlage dieser Fallstudie praktische Maßnahmen zusammen.

Verlassen Sie sich bei Objektverweisen nicht auf Clienteingaben.

Am wichtigsten , Client-Eingaben wie E-Mail-Adressen oder IDs nicht als Objektverweise zu verwenden .

Bei diesem Passwortzurücksetzungsprozess wurde die in der Anfrage angegebene E-Mail-Adresse verwendet, um den zu aktualisierenden Benutzer zu finden.
Diese Vorgehensweise ermöglicht es, das Konto einer anderen Person zu manipulieren, indem lediglich der eingegebene Wert geändert wird.

Ursprünglich sollten folgende Benutzer aktualisiert werden:

  • Informationen des angemeldeten Benutzers
  • Die dem Token zugeordnete Benutzer-ID

Die Entscheidung sollte auf der Grundlage von Informationen getroffen werden, die serverseitig ermittelt werden können , wie zum Beispiel

Ich habe persönlich schon viele Anwendungen gesehen, die tatsächlich mit Objektverweisen arbeiten, die von Client-Eingaben abhängen. Entwickeln Sie daher mit Vorsicht.

Tokens sollten eher als „Operationsberechtigung“ denn als „Identitätsprüfung“ behandelt werden.

Ein Token zum Zurücksetzen des Passworts leistet mehr als nur die Überprüfung der Gültigkeit.

  • dieses Token ausgegeben?
  • Wird es von diesem Benutzer als Operation verwendet?

muss serverseitig verifiziert werden .

In diesem Fall wurde das Token zwar überprüft, darüber, für welchen Benutzer das Token autorisiert war, wurde jedoch ignoriert.

„Identitätsnachweis“ betrachtet werden „Schlüssel, die bestimmte Operationen für bestimmte Benutzer autorisieren“.

Das passiert oft, wenn man mit einer unbeschwerten Herangehensweise entwickelt und denkt, solange man nur Token ausgibt, gibt es kein Problem. Ich glaube,
viele Entwickler entwickeln Software, ohne die Bedeutung von Token wirklich zu verstehen.

Überprüfen Sie die Administratorfunktionen und Ausnahmebehandlungsabläufe genauer

Ausnahmeprozesse wie das Zurücksetzen von Passwörtern und Funktionen, die nur Administratoren zugänglich sind, haben in der Regel eine weniger strenge Autorisierung als normale Prozesse,
aber in Wirklichkeit sind diese Ausnahmeprozesse der Ausgangspunkt für Angriffe .

  • Passwort zurücksetzen
  • Kontowiederherstellung
  • Operationen, die nur für Administratoren gelten

Solche Funktionen erfordern eine klare Konzeption und Umsetzung, die festlegt, wer auf wessen Daten zugreifen darf und warum.

Da es auch Zeiten gibt, in denen die Öffentlichkeit nachlässig sein kann, ist es möglicherweise eine gute Idee, Funktionen, die nur Administratoren vorbehalten sind, in einem separaten System bereitzustellen.

Zusammenfassung: IDOR und die Fallstricke des autorisierten Designs

In dieser Untersuchung , dass das Vertrauen in Benutzereingaben ohne ausreichende Autorisierungsprüfungen zur Kontoübernahme führt. Selbst wenn Tokens und Authentifizierung vorhanden sind, reichen diese allein nicht aus, um die Sicherheit zu gewährleisten.

Das Kernproblem besteht darin, dass der Server nicht festlegt, „wessen Daten er bearbeiten darf“.
Ein typisches Beispiel für eine solche Fehlermeldung ist ein Design, das E-Mail-Adressen direkt als Objektverweise verwendet.

Um IDOR zu verhindern, ist es wichtig, das Operationsziel serverseitig eindeutig zu bestimmen und die Autorisierung für jeden Prozess explizit zu prüfen.
Dies ist keine Sondermaßnahme, sondern ein grundlegendes Designprinzip.

Durch das Ausprobieren im Rahmen einer CTF-Challenge konnte ich erkennen, wie real das Problem der Autorisierungsfehler ist.
Falls du Interesse hast, empfehle ich dir, Hack the Box einmal auszuprobieren.

Sicherheit kann nur gemeistert werden, wenn man aus der Perspektive eines Angreifers übt

Das bloße Lesen der Referenz reicht nicht aus. den tatsächlichen Angriff können Sie wirklich verstehen, warum etwas anfällig ist und wie Sie es schützen können.

HackTheBox bietet eine Trainingsumgebung, in der Sie Schwachstellen auf einer virtuellen Maschine sicher ausprobieren können.
Selbst Anfänger können lernen, wie ein Angreifer zu denken und sich Schritt für Schritt weiterzuentwickeln.

  • Virtuelle Maschinenübungen basierend auf realistischen Angriffsszenarien
  • Behebt eine Vielzahl von Schwachstellen, darunter RCE, SQLi und XSS
  • Mit dem VIP-Plan haben Sie Zugriff auf ältere Maschinen

*HackTheBox Academy (Lehrmaterialien) und Labs (Übungsumgebung), die unterschiedliche Abrechnungsstrukturen haben.
Für alle, die sich auf die Praxis konzentrieren möchten, empfehlen wir den Labs VIP-Tarif oder höher.

👉 Für detaillierte Informationen zur Registrierung für HackTheBox und den Unterschieden zwischen den Plänen klicken Sie bitte hier.

Teilen Sie, wenn Sie möchten!

Wer hat diesen Artikel geschrieben

Dies ist ein Blog, in dem ich angefangen habe, Informationssicherheit zu studieren. Als neuer Angestellter würde ich mich freuen, wenn Sie mit einem breiten Herzen schauen könnten.
Es gibt auch Teech Lab, das eine Gelegenheit ist, Programmierspaß zu studieren. Wenn Sie also an der Softwareentwicklung interessiert sind, sollten Sie sich unbedingt ansehen!

Inhaltsverzeichnis