Hack The Box. JSON-exemplarische Vorgehensweise. Sicherheitsanfälligkeit in Json.Net und LPE über SeImpersonatePrivilege

Bild

Ich veröffentliche weiterhin Lösungen, die zur weiteren Verarbeitung von der HackTheBox- Site gesendet wurden . Ich hoffe, dass dies zumindest jemandem hilft, sich im Bereich der Informationssicherheit zu entwickeln. In diesem Artikel nutzen wir eine Sicherheitsanfälligkeit in Json.Net aus und erfahren, wie Sie unsere Berechtigungen für SYSTEM erhöhen können, wenn wir über die Berechtigung SeImpersonatePrivilege verfügen.

Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder von einem Host aus herzustellen, auf dem die für Sie wichtigen Daten verfügbar sind, da Sie in einem privaten Netzwerk mit Personen landen, die sich mit Informationssicherheit auskennen :)

Organisationsinformationen
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Nachrichtendienst


Dieser Computer hat eine IP-Adresse 10.10.10.158, die ich zu / etc / hosts hinzufüge.

10.10.10.158    json.htb

Zuerst scannen wir offene Ports. Da das Scannen aller Ports mit nmap sehr lange dauert, werde ich dies zunächst mit masscan tun. Wir scannen alle TCP- und UDP-Ports von der tun0-Schnittstelle mit einer Geschwindigkeit von 500 Paketen pro Sekunde.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.158 --rate=500

Bild

Als Nächstes müssen Sie weitere Informationen zu bekannten Ports sammeln. Verwenden Sie dazu nmap mit der Option -A.

nmap json.htb -p49156,49154,49152,47001,80,137,49153,139,49155,135,445,49158,5985,6666,21

Bild

Für detailliertere Informationen zu den Diensten, die an Ports ausgeführt werden, führen wir nun einen Scan mit der Option -A durch.

nmap -A json.htb -p80,139,135,445,5985,6666,21

Bild

Mal sehen, was im Web. Infolgedessen wird die Seite geladen und erst dann werden wir zur Autorisierungsseite weitergeleitet.

Bild

Wir könnten das umgehen, aber admin: admin erlaubt uns, uns anzumelden.

Bild

Auf der Website selbst gibt es nichts Interessantes, und bei dem Versuch, zumindest etwas zu finden, halten wir uns an Cookies.

Bild

Decodiere Base64.

echo "eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZG1pbmlzdHJhdG9yIn0=" | base64 -d ; echo

Bild

Das heißt, der Kennwortwert ist MD5 aus dem Administratorkennwort.

Bild

Weiter nichts interessantes. Wenn Sie Burp öffnen und die Anforderung abfangen, finden Sie einen interessanten HTTP-Header.

Bild

Und zu diesem Zeitpunkt hing ich, bis mir gesagt wurde, ich solle „die Bedeutung brechen“. In solchen Fällen müssen Sie natürlich Fehler machen und die API-Reaktion in drei Zuständen beobachten: wahr, falsch und fehlerhaft. Aber aus irgendeinem Grund habe ich es verpasst.

Einstiegspunkt


Und dann wurde festgestellt, dass der Server Fehler ausgibt, wenn fehlerhafte Daten in einem seltsamen HTTP-Header übertragen werden (einige der Zeichen löschen). Nachfolgend sind die Daten aufgeführt, die der Server mit einem normalen Headerwert und mit ein bis vier gelöschten Zeichen zurückgibt.

Bild

Im letzteren Fall erhalten wir einen interessanten Fehler. Da das JSON-Objekt nicht mehr funktioniert, können wir dies mit ysoserial ausnutzen . Wir werden das ObjectDataProvider-Gadget für Json.Net verwenden und den Befehl ping ausführen, um die Annahme der Sicherheitsanfälligkeit zu überprüfen.

Bild

Aktivieren Sie nun tcpdump mit einem ICMP-Protokollfilter, um Ping abzufangen.

Bild

Beim Abfangen einer Anfrage ändern wir den Header.

Bild

Und wir bekommen den Ping, der bestellt wurde.

Bild

BENUTZER


Jetzt müssen Sie dasselbe mit dem Lastmesser tun. Zuerst generieren wir eine Last und öffnen einen Listener.

Bild

Bild

Öffnen Sie nun den lokalen SMB-Server, von dem aus der Ladevorgang gestartet wird.

Bild

Jetzt serialisieren wir wieder die notwendigen Daten, als Befehl starten wir unsere Last von unserem Server.

Bild

Wir sehen eine erfolgreiche Verbindung zum SMB-Server und eine erfolgreich geladene Meterpreter-Sitzung.

Bild

Bild

Und lesen Sie die Benutzerdatei.

WURZEL


Zunächst betrachten wir die Informationen über den Benutzer, unter dem wir arbeiten.

Bild

Der Benutzer hat das SeImpersonatePrivilege-Privileg aktiviert (das Recht "Identitätswechsel des Clients nach Authentifizierung"). Wie Microsoft sagt :
Wenn Sie einem Benutzer das Recht "Nach der Authentifizierung als Client ausgeben" zuweisen, können Programme, die im Auftrag dieses Benutzers gestartet wurden, sich als Client ausgeben. Die Verwendung dieses Parameters verhindert, dass sich nicht autorisierte Server als Clients ausgeben, die mithilfe von RPC-Prozeduren oder Named Pipes eine Verbindung zu diesen Servern herstellen.
Tatsache ist, dass wir unsere Rechte an SYSTEM erhöhen können. Eine vollständige Studie finden Sie hier . Die folgenden Berechtigungen sind von dieser Sicherheitsanfälligkeit betroffen:

  • SeImpersonatePrivilege
  • SeAssignPrimaryPrivilege
  • Setcbprivilege
  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilege
  • SeTakeOwnershipPrivilege
  • SeDebugPrivilege

Lassen Sie uns eine weitere Last generieren und einen Listener dafür ausführen.

Bild

Bild

Für den Betrieb werden wir Juicy Potato verwenden . Als Parameter müssen Sie jedoch die CLSID des Kontos für das Zielsystem angeben, wir werden sie auch aus dem Repository übernehmen . Aber zuerst wollen wir sehen, was für ein System.

Bild

Und jetzt schauen wir uns die CLSID an.

Bild

Laden Sie die Dateien auf den Zielhost hoch.

Bild

Führen Sie nun Juicy Potato aus und teilen Sie ihm mit, wie der Prozess erstellt wird (CreateProcessWithTokenW oder CreateProcessAsUser, Parameter -t), Prozessdatei (-p), Überwachungsport (-l) und CLSID (-c).

Bild

Der Prozess wurde erfolgreich erstellt und wir sehen die erstellte Metterpreter-Sitzung.

Bild

Und wir bekommen das SYSTEM-Konto.

Sie können sich uns per Telegramm anschließen. Stellen wir eine Community zusammen, in der es Menschen gibt, die sich in vielen Bereichen der IT auskennen. Dann können wir uns in Fragen der IT und der Informationssicherheit immer gegenseitig helfen.

All Articles