HackTheBox. Walkthrough zum Vorwärtsspiel. LFI, Backup und verschlüsseltes Volume



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



In diesem Artikel listen wir die Verzeichnisse und Unterdomänen auf der Site auf, nutzen LFI, erstellen eine Sicherungskopie einer unzugänglichen Datei und stellen ein verschlüsseltes Volume bereit.



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
, , Telegram . , , .



. , - , .



Aufklärung



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



10.10.10.183    forwardslash.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.183    --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 forwardslash.htb -p22,80






Der Server führt einen SSH-Dienst und einen Webserver aus. Wir gehen zum Webserver und sehen, was sie uns bieten können.







So werden wir über das Host-Hacking informiert, XML und FTP werden erwähnt. 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://forwardslash.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt






Und wir finden note.txt. Lass uns lesen.







Es wird über eine Gruppe berichtet, die die Site gehackt hat und dass ein Backup vorhanden ist. Lassen Sie uns nach Subdomains suchen. Stellen Sie die Anzahl der Zeichen als Filter auf ungleich 0 ein.

wfuzz -H 'HOST:FUZZ.forwardslash.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u forwardslash.htb --hh 0






Und wir gehen zur Backup-Subdomain. Fügen wir es der Datei / etc / hosts hinzu.

10.10.10.183    backup.forwardslash.htb

Lassen Sie uns auch die Verzeichnisse für diese Domain durchgehen.

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






Und wir gehen zu dieser Adresse.



Einstiegspunkt



Wir werden von einem Autorisierungsformular begrüßt.







Es besteht auch die Möglichkeit der Registrierung. Lassen Sie uns registrieren und dann anmelden.







Wenn Sie durch die Links gehen, finden Sie Formulare zum Ändern des Namens und des Passworts. Sie können auch ein Profilbild festlegen. Lassen Sie uns darüber nachdenken.







Es wird berichtet, dass diese Funktion aufgrund eines Hacks deaktiviert wurde. In diesem Fall ist das Eingabefeld nicht verfügbar, wahrscheinlich in HTML deaktiviert.







Wir entfernen diese Eigenschaft aus beiden Elementen. Ich habe einen Webserver auf dem lokalen Computer gestartet und im Feld einen Link zur Datei test.txt angegeben.







Da es keine Filter gibt, versuchen wir es mit einem LFI-Vektor. Für die Bequemlichkeit des Geschäfts ist dies in der Burp Suite.







Und da ist LFI!



BENUTZER



Lassen Sie uns die Apache-Konfigurationen überprüfen.







Wenn Sie jedoch versuchen, die PHP-Datei zu lesen, wird sie Ihnen nicht als Text angezeigt. Stattdessen wird es ausgeführt.







Wir können aber auch PHP-Filter verwenden, zum Beispiel base64. Auf diese Weise wird die PHP-Datei zuerst codiert und dann auf der Seite angezeigt. Daher wird es nicht ausgeführt.

php://filter/convert.base64-encode/resource=../../../../var/www/backup.forwardslash.htb/index.php





Wählen Sie das gewünschte Fragment aus und drücken Sie Strg + Umschalt + B.







Wir bekommen den dekodierten Code. Verwenden Sie diese Methode, um alle während des Scans gefundenen Dateien zu lesen. Das Kennwort für die Verbindung zur Datenbank finden Sie in der Datei config.php.







Schauen wir uns auch /dev/index.php an. Und dort finden wir die Authentifizierungsdaten des Benutzers chiv.







Dieser Benutzer ist im System, wir lernen dies aus / etc / passwd. Versuchen wir diese Daten, um eine Verbindung über SSH herzustellen.







USER2



Um Daten im System zu sammeln, verwenden wir das LinPEAS-Skript. Und wir finden eine Art Notiz in den Backups.











Daher haben die Backups eine alte Konfiguration mit einem Passwort. Es gehört zum Schmerz.







Das Backup-Programm hat also ein SUID-Bit. Das heißt, wir können das Programm als Benutzerschmerz ausführen.







Wir können ein Backup erstellen, aber nur von einer bestimmten zufälligen Datei.







Wir können einen Link zur Konfigurationssicherung herstellen, indem wir sie so benennen, wie sie im Sicherungsprogramm angegeben ist. Aber wir müssen es in ein paar Sekunden schaffen. Deshalb werden wir ein Skript erstellen. Lassen Sie uns zuerst den Dateinamen ermitteln.







Fügen wir nun die Linkerstellung und die erneute Sicherung hinzu.







Lassen Sie uns aus dem Home-Verzeichnis des Benutzers laufen und die Datei abrufen.







Ändern Sie den Benutzer durch Eingabe dieses Passworts.







WURZEL



Werfen wir einen Blick auf die Gerichtseinstellungen für die Ausführung von Befehlen ohne Passwort.







Somit haben wir ein verschlüsseltes Volume. Zum Entschlüsseln und Mounten benötigen wir ein Passwort.







Wir haben einen Chiffretext und ein Programm.







Zur Entschlüsselung verwenden wir den folgenden Code.

def decrypt(key, msg):
key = list(key)
	msg = list(msg)
	for char_key in reversed(key):
		for i in reversed(range(len(msg))):
			if i == 0:
				tmp = ord(msg[i]) - (ord(char_key) + ord(msg[-1]))
			else:
				tmp = ord(msg[i]) - (ord(char_key) + ord(msg[i-1]))
			while tmp < 0:
				tmp += 256
			msg[i] = chr(tmp)
	return ''.join(msg)

ciphertext = open('ciphertext', 'r').read().rstrip()
for i in range(1, len(ciphertext)):
	for j in range(256):
		key = chr(j) * i
		text = decrypt(key, ciphertext)
		if ' the ' in text or ' to ' in text:
			print(key)
			print(text)
			exit()


Und wir entschlüsseln die Nachricht erfolgreich.







Mal sehen, was wir auf dem angegebenen Weg haben.







Lassen Sie uns das Volume entschlüsseln.







Und wir werden es montieren.







Dort befindet sich der SSH-Schlüssel.







Wir verbinden uns 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