某銀行外網(wǎng)打點(diǎn)到內(nèi)網(wǎng)核心區(qū)紅隊(duì)評估復(fù)盤

Part1 前言
大家好,我是ABC_123。本期分享一篇ABC_123曾經(jīng)做的針對一家銀行的紅隊(duì)評估項(xiàng)目,持續(xù)時(shí)間兩周,難度非常大,但是最終打到了銀行核心業(yè)務(wù)區(qū),今天就復(fù)盤一下全過程,希望紅藍(lán)雙方都能得到一些啟示,這也是“未知攻、焉知防”的道理。
建議大家把公眾號“希潭實(shí)驗(yàn)室”設(shè)為星標(biāo),否則可能就看不到啦!因?yàn)楣娞柆F(xiàn)在只對常讀和星標(biāo)的公眾號才能展示大圖推送。操作方法:點(diǎn)擊右上角的【...】,然后點(diǎn)擊【設(shè)為星標(biāo)】即可。

Part2 具體過程復(fù)盤
首先放出一張ABC_123繪制的關(guān)于此次紅隊(duì)評估項(xiàng)目的流程圖,接下來依據(jù)此流程圖,詳細(xì)講解整個(gè)紅隊(duì)評估過程。

外網(wǎng)打點(diǎn)過程
一般來講,針對銀行項(xiàng)目,如果不用0day是很難打穿的。本次紅隊(duì)評估項(xiàng)目,在外網(wǎng)打點(diǎn)方面,付出的代價(jià)是用了2個(gè)0day:1、通過日志信息泄露定位到一個(gè)供應(yīng)鏈系統(tǒng),代碼審計(jì)出一個(gè)0day漏洞,是上傳漏洞;2、某文檔在線預(yù)覽系統(tǒng)的命令注入漏洞。
在內(nèi)網(wǎng)橫向過程中用了2個(gè)漏洞:1、某業(yè)務(wù)的端口存在java反序列化漏洞;2、Websphere中間件的幾個(gè)端口存在的Java反序列化漏洞。

1 供應(yīng)鏈系統(tǒng)的上傳漏洞
首先通過掃目錄,發(fā)現(xiàn)一個(gè)/logs路徑,里面有一些Web應(yīng)用程序的報(bào)錯信息,從中發(fā)現(xiàn)了一個(gè)不常見的jar包類名。

接下來通過各種百度、谷歌、Github使用上述關(guān)鍵字搜索,找到了該系統(tǒng)的開發(fā)廠商,后續(xù)通過一些列方法獲取源代碼。源碼目錄結(jié)構(gòu)與網(wǎng)站相差無幾,基本上證明是同一套源碼,然后通過Java代碼審計(jì)出來一處上傳漏洞,可惜需要登錄后臺才能用。走投無路的時(shí)候,翻了翻源碼中的初始化sql文件,發(fā)現(xiàn)系統(tǒng)在啟動過程中,會執(zhí)行這些sql文件,從而默認(rèn)會添加一個(gè)測試賬號,于是使用此測試賬號,登錄后臺獲取webshell,后續(xù)主要的內(nèi)網(wǎng)橫向是通過這個(gè)入口開展的。
2 ColdFusion反序列化
旗下網(wǎng)站存在Coldfusion反序列化漏洞,該漏洞在我之前的文章有詳細(xì)介紹《coldfusion反序列化過waf改exp拿靶標(biāo)的艱難過程》,接下來利用此系統(tǒng)的代碼執(zhí)行漏洞獲取了第2個(gè)Webshell權(quán)限。這里指出一點(diǎn),對于coldfusion漏洞的利用,推薦使用網(wǎng)上的可以直接執(zhí)行命令的方法,盡量不要用出網(wǎng)JRMPClient的利用方式,這種方法多次發(fā)包后,很容易造成coldfusion網(wǎng)站停止響應(yīng),具體原因不明,這是經(jīng)驗(yàn)之談,踩過的坑。

由此系統(tǒng)開展內(nèi)網(wǎng)橫向,但阻力非常大,網(wǎng)絡(luò)隔離做得非常好,對于內(nèi)網(wǎng)其它的IP地址,基本上都是只能ping通,端口不通,因此只能重新進(jìn)行外網(wǎng)打點(diǎn)。
3 某文檔在線預(yù)覽系統(tǒng)命令注入
這個(gè)漏洞是一個(gè)普通的命令注入漏洞,直接GET傳參,導(dǎo)入runtime執(zhí)行,非常簡單的一個(gè)命令注入漏洞。但是該系統(tǒng)是放在云上的,資產(chǎn)非常少,配置文件中也沒有發(fā)現(xiàn)阿里云AK/SK等秘鑰,最后就是可以查詢一些員工的姓名、用戶名列表。
4 網(wǎng)盤信息泄露
通過網(wǎng)盤搜索方法,對各種敏感關(guān)鍵字進(jìn)行檢索,發(fā)現(xiàn)了一個(gè)員工離職交接文檔的壓縮包,解壓后1G多,里面存放了大量的網(wǎng)絡(luò)拓?fù)鋱D及通訊錄信息,對后滲透了解網(wǎng)絡(luò)架構(gòu)起到了很大幫助。
注:網(wǎng)盤搜索需要分情況而論,那些經(jīng)歷過很多輪攻防比賽及紅隊(duì)評估比賽的目標(biāo),網(wǎng)盤檢索已經(jīng)很難發(fā)現(xiàn)有價(jià)值的信息了,在早期這種方式能獲取很多有價(jià)值的信息。

內(nèi)網(wǎng)橫向過程
該銀行內(nèi)網(wǎng)資產(chǎn)中Websphere中間件和Oracle數(shù)據(jù)庫特別多,所以內(nèi)網(wǎng)橫向過程主要通過以下兩個(gè)方向展開:
1 Websphere中間件漏洞。Websphere中間件在8880、2809、9100、11006等端口均存在java反序列化漏洞,可以拿到權(quán)限。
2 Oracle數(shù)據(jù)庫權(quán)限。通過翻Web應(yīng)用的配置文件,將加密密碼解密,然后連上Oracle數(shù)據(jù)庫,通過Oracle提權(quán)漏洞獲取服務(wù)器權(quán)限。

外網(wǎng)其它漏洞
除了通過0day漏洞打點(diǎn),在外網(wǎng)還發(fā)現(xiàn)了很多Web應(yīng)用層面的漏洞,其中包括SQL注入漏洞、短信炸彈、APP客戶端漏洞、密碼重置、Nginx解析漏洞、遍歷交易記錄、爆破弱口令等等,通過這些漏洞獲取到了一些敏感信息,對后期滲透有很大幫助。接下來我挑選幾個(gè)比較有代表性的漏洞講一講。

1 培訓(xùn)系統(tǒng)上傳漏洞,可上傳html頁面
如下圖所示,可以直接上傳html文件,如果在html文件里插入XSS攻擊代碼,就相當(dāng)于變相創(chuàng)造一個(gè)存儲型XSS漏洞,或者可以上傳一個(gè)釣魚頁面,用作水坑攻擊。以下本機(jī)虛擬機(jī)中的截圖,是效果圖。

2 DOM型XSS漏洞
DOM型XSS由于其特殊機(jī)制,可以繞過所有的waf攔截。
https://www.xxx.com/xxx/include/resources/reload.html#vbscript:msgbox(1)

3 任意文件讀取漏洞
這是外網(wǎng)的一個(gè)系統(tǒng),存在任意文件讀取,繞過waf的方法如下:

4 寬字節(jié)吃掉轉(zhuǎn)義字符造成XSS
這里無論怎么操作,xxs的payload都會落在雙引號內(nèi)被當(dāng)作字符串而無法執(zhí)行,這時(shí)候可以嘗試用寬字節(jié)方法,吃掉臨近的轉(zhuǎn)義字符反斜杠,從而繼續(xù)XSS。如下圖的箭頭所示,圖片裂開顯示,說明xss代碼得到了解析執(zhí)行。

5 短信炸彈繞過限制
這個(gè)短信炸彈比較有意思,對手機(jī)號一分鐘內(nèi)發(fā)短信的次數(shù)做了限制,但是可以在手機(jī)號后面不斷疊加%20(空格的url編碼)方式繞過,通過Burpsuite的intruder模塊添加N次%20造成短信轟炸。

6 刪除sign參數(shù)繞過校驗(yàn)
有時(shí)候會遇到如下這種情況,使用burpsuite抓包后,重放數(shù)據(jù)包會提示MAC校驗(yàn)失敗,這種情況比較難辦,在本次案例中,嘗試刪除sign字段,就不會提示“MAC校驗(yàn)失敗”了。

7 使用Frida解決APP參數(shù)加密



8 審計(jì)JS代碼,解決Web傳參加密
在JS代碼的登錄事件處的下斷點(diǎn),發(fā)現(xiàn)數(shù)據(jù)包通過$.jCryption.encrypt(tempS, ***, ***)這個(gè)函數(shù)加密,其中加密key是固定值,直接使用$.jCryption.decrypt(***,password);可以解密數(shù)據(jù)包。數(shù)據(jù)包解密之后,發(fā)現(xiàn)了多處邏輯漏洞、越權(quán)漏洞。


9 其它Web應(yīng)用漏洞
此外就是在外網(wǎng)中挖到的一些Web應(yīng)用漏洞,都是比較常見的漏洞,不過多敘述大致總結(jié)如下:
1. Springboot框架的heapdump文件下載,從中可以翻到賬號密碼,還有Springboot的/env地址泄露內(nèi)網(wǎng)ip地址,方便后續(xù)滲透定位內(nèi)網(wǎng)ip。
2. 公眾號上面有一處鏈接,連接到第三方網(wǎng)站,該網(wǎng)站居然有nginx解析漏洞。獲取shell之后,發(fā)現(xiàn)用處不大,是個(gè)孤島服務(wù)器,除了一個(gè)mysql數(shù)據(jù)庫之外,沒有多少有價(jià)值的信息。
3. 外網(wǎng)幾處SQL注入漏洞,這個(gè)就不多說了,都是Mysql數(shù)據(jù)庫,而且非root權(quán)限,進(jìn)一步利用非常困難。最終獲取到了對后續(xù)滲透有價(jià)值的員工姓名、手機(jī)號、工號。
4. Github源碼泄露,在github上搜索到了部分源碼和郵箱地址。
5. 外網(wǎng)業(yè)務(wù)系統(tǒng)的邏輯漏洞,原報(bào)告的截圖就不貼出來了,因?yàn)檫壿嬄┒吹慕貓D打碼是很容易遺漏的。基本上都是一些交易記錄越權(quán)查詢、賬單平衡越權(quán)查詢、還款計(jì)劃越權(quán)查詢等等,方法無一例外,就是改各種參數(shù)的值,看是否有越權(quán)漏洞。
6. 再一個(gè)就是有一些廢棄的上傳功能,但是從網(wǎng)頁的js中,上傳功能的地址還存在,構(gòu)造好上傳包,就發(fā)現(xiàn)了一個(gè)上傳漏洞,但是只能上傳html文件。在之前的案例中,曾經(jīng)獲取過權(quán)限。
7. APP客戶端漏洞。APP弱加殼:這個(gè)是靠Xposed對app進(jìn)行hook,然后使用callMethod方法dump出hook到的類,然后進(jìn)行反編譯。這里不過多敘述,APP脫殼我研究得極少;IPA客戶端的某秘鑰泄露:使用IDA Pro對IPA客戶端進(jìn)行反編譯,從中尋找硬編碼,找到了一處敏感信息泄露。
社會工程學(xué)攻擊
如下圖所示,以下是社會工程學(xué)攻擊過程,總體來說,不太成功,因?yàn)樵撱y行嚴(yán)格限制了出網(wǎng)規(guī)則,由于不出網(wǎng),針對客服系統(tǒng)的XSS釣魚及針對銀行員工的郵件釣魚均沒有成功。

1 微*信聊天發(fā)送壓縮包
通過前期信息收集,再結(jié)合外網(wǎng)web應(yīng)用系統(tǒng)找到的sql注入漏洞、云上數(shù)據(jù)庫權(quán)限等,得到了一個(gè)手機(jī)號列表,通過這些手機(jī)號挨個(gè)加微*信聊天,發(fā)送帶有壓縮包的后門,但是能上線的都是個(gè)人筆記本電腦,辦公網(wǎng)電腦是絕對不允許通外網(wǎng)的,登錄不了微信,所以微*信社工這一思路很快被停止。
2 郵箱偽造發(fā)信人地址攻擊
通過對郵件系統(tǒng)的檢測,發(fā)現(xiàn)郵件系統(tǒng)存在偽造任意源郵箱地址漏洞,結(jié)合Kali Linux的swaks工具可以以任意管理員身份發(fā)送釣魚郵件,并且可以繞過防釣魚郵件網(wǎng)關(guān)。此次紅隊(duì)評估過程,成功假冒銀行信息部管理員([email protected])身份發(fā)送了釣魚郵件,但是最后居然一個(gè)都沒有上線的,后來了解到,員工登錄郵箱環(huán)境不通外網(wǎng)。
大致命令如下:swaks --to [email protected] -f [email protected] --server mail.xxbank.com.cn -p 2525 -au--ehlo xxbank.com.cn --h-From "XXX銀行信息部<[email protected]>" --header "Subject:XXX銀行信息部" --body "hello,您的郵件我已收到."

物理滲透階段
在得到客戶的授權(quán)許可情況下,和幾個(gè)同事一起開車去總行周邊轉(zhuǎn)了好幾圈,強(qiáng)行進(jìn)入總行內(nèi)部看起來可能性不大,于是把重心放在wifi熱點(diǎn)上。經(jīng)過探測發(fā)現(xiàn)了2個(gè)wifi熱點(diǎn),其中有一個(gè)被萬能鑰匙收錄,可以直接連上測試區(qū)網(wǎng)段;第2個(gè)wifi熱點(diǎn),需要提供密碼,此密碼正好在內(nèi)網(wǎng)文檔中找到,所以兩個(gè)wifi熱點(diǎn)均被拿下,但是都只是能通測試區(qū)或者是能上外網(wǎng)的互聯(lián)網(wǎng)區(qū)。

隨后使用平板電腦放在附近,反彈出一個(gè)socks5代理,交給后面同事們對內(nèi)網(wǎng)測試區(qū)進(jìn)行橫向滲透,但是非常遺憾的是,測試區(qū)放置的都是一些測試系統(tǒng),網(wǎng)絡(luò)隔離非常嚴(yán)格,測試區(qū)與生產(chǎn)區(qū)完全隔離,無法連到總行的辦公網(wǎng)或者業(yè)務(wù)網(wǎng)。有時(shí)候在測試區(qū)系統(tǒng)上存在一些**業(yè)務(wù)系統(tǒng)的war包等敏感信息。
內(nèi)網(wǎng)橫向漏洞都是比較常規(guī)的,比如說MS17-010漏洞獲取windows系統(tǒng)權(quán)限,zabbix可以執(zhí)行命令,API網(wǎng)關(guān)管理員弱口令、移動辦公系統(tǒng)的姓名、手機(jī)號信息,商戶管理系統(tǒng)的shiro反序列化等等,這里就不過多敘述了。
Part4 總結(jié)
1. 銀行紅隊(duì)評估項(xiàng)目一般難度都非常大,多數(shù)都得靠0day,靠代碼審計(jì),現(xiàn)在紅隊(duì)人員基本上靠供應(yīng)鏈的漏洞打進(jìn)去的情況較多,供應(yīng)鏈安全防護(hù)也是重中之重。
2. 外網(wǎng)的那些無法拿權(quán)限的漏洞,在后滲透階段,會提供很好的信息支持。sql注入、弱口令可以幫助紅隊(duì)人員了解業(yè)務(wù)系統(tǒng)用戶名的命名方式,內(nèi)網(wǎng)ip地址泄露在后滲透階段可以用于快速定位ip段,所以這些中低危漏洞也要及時(shí)修復(fù)。
3. 物理滲透的Wifi熱點(diǎn)的安全問題,也很常見,有時(shí)候裝一個(gè)萬能鑰匙之類的軟件,就能起到很大效果。
4. 有的云上的系統(tǒng)也可以嘗試一下獲取webshell,因?yàn)橛行┰粕舷到y(tǒng)的代碼中,會有阿里云、騰訊云的AK/SK等,如果碰到一個(gè),一下子拿一片服務(wù)器權(quán)限。
5. 遇到參數(shù)加密的情況,如果是手機(jī)APP,可以試試Frida;如果是Web應(yīng)用,可以試試找到j(luò)avascript解密函數(shù)。

公眾號專注于網(wǎng)絡(luò)安全技術(shù)分享,包括APT事件分析、紅隊(duì)攻防、藍(lán)隊(duì)分析、滲透測試、代碼審計(jì)等,每周一篇,99%原創(chuàng),敬請關(guān)注。
Contact me: 0day123abc#gmail.com(replace # with @)
