banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

bossplayersCTF:1-Vulnhub 逐步指南

靶機地址
難度:簡單

工具及漏洞信息#

  • netdiscover
  • nmap
  • dirb
  • dirsearch
  • gobuster
  • 命令執行
  • SUID 權限 find 命令提權

0x00 信息收集#

掃描靶機信息#

使用netdiscover掃描當前網段,看見主機名是PCS Systemtechnik GmbH的一般就是靶機了:

image

nmap -sS -sV -n -T4 -p- 192.168.1.8
  • -sS: TCP 同步掃描,也稱為半開放掃描
  • -sV: 探測開放端口以確定服務 / 版本信息
  • -n: 不進行 dns 解析節約時間
  • -T4: 時序模板設置為 4 級
  • -p-: 掃描所有端口
  • -A: 啟用操作系統檢測,版本檢測,腳本掃描和跟蹤路由,-A 選項包含 - sV 選項

image

可以看到只開了一个apache服務和ssh

掃描路徑#

dirb 默認掃描了只顯示返回狀態碼為 200 的地址,還是很不錯的:

dirb http://192.168.1.8 -X .php,.txt,.zip,.html

image

相比之下,dirsearch默認顯示所有返回的狀態碼的路徑,使用-x執行不顯示的狀態碼:

python3 dirsearch.py -t 50 -e .php,.txt,.zip,.html -x 400,403,404,500,503,514,564 -u http://192.168.1.8

image

掃描工具還有gobuster,字典我們可以使用star了 2w 多星的一個安全字典

kali可直接使用命令apt install seclists -y安裝,安裝完默認字典位置在

/usr/share/seclists

然後我們掃描一下

gobuster dir -u http://192.168.1.8 -s 200,301,302 -t 50 -w /usr/share/seclists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip

image

這個工具也挺好用的

0x01 反彈 shell#

接著訪問一下robots.txt,發現是一串base64編碼的字符,解碼後發現靶機作者在開玩笑

image

訪問首頁,源代碼最後有一行註釋

image

嘗試使用base64解碼三次,得到一個文件名字workinginprogress.php:

image

訪問該路徑:

image

提示讓我們執行ping命令,嘗試多次後發現是cmd命令注入:

image

這也就意味著這裡能執行shell命令

kali上執行nc監聽:

nc -lvp 4444

image

在剛才的命令注入處反彈 shell:

image

獲取到shell後從pythonpty.spawn獲取標準 pty,從 python 命令提示符到交互式 shell

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

image

可以看到我們現在以當前命令注入的身份www-data獲取到了網站根目錄下的一個shell

find 命令本身具有此權限。 這使我們的工作變得容易一些。

使用find命令查找居於 SUID 權限可執行文件,我們使用命令

find / -perm -u=s -type f 2>/dev/null
  • /: 在根目錄下查找
  • perm: 查找指定權限的文件,/u=s 或者 - u=s 參數列出系統中所有SUID的檔案
  • type: 找符合指定的文件類型的文件,-type f: 查找指定目錄下所有普通文件
  • 2>/dev/null: 2 > 部分的意思是 “重定向文件通道號 2”- 映射到標準錯誤文件通道 stderr,這是程序經常將錯誤寫入其中的位置,/dev/null 是一種特殊字符設備,只允許向其中寫入任何內容;閱讀時,它不會返回任何內容,因此 2>/dev/null 讓 shell 將標準錯誤從正在運行的程序重定向到 /dev/null,從而有效地將其忽略。
  • SUID: SUID (Set owner User ID up on execution) 簡單來說。suid,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。所以我們去找一個文件擁有者為 root,而且其執行位上有 s 的執行文件,那麼即使我們用普通用戶運行這個文件時,這個文件的執行權限就是 root
  • 為什麼使用 find 命令呢?原因:在 find 的後面,是可以帶入命令的,而我們要的就是執行其他命令。也就是說,當我們調用 find 命令時,因為 find 命令有 s 權限,所以 find 在執行時的權限就是 root 命令,而在 find 後面的帶入的命令也就是在 root 權限下執行的命令了

參考文章:

image

發現/usr/bin/find,也就是當前我們正在使用的find命令是具有SUID權限的

0x02 find 命令提權#

嘗試使用 find 命令調用 /bin/sh 執行 shell

find . -exec /bin/sh -p \; -quit
  • exec: 來對每一個找到的文件或目錄執行特定命令。它的終止是以;為結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠轉義。
  • quit: 表示命令執行完了就退出

image

成功獲得rootshell,查看/root目錄下的root.txt文件,完成!

本文完。

參考文章:

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。