JAVA世界中不安全的反序列化風險
INTRODUCTION
OWASP Top 10 Application Security Risks - 2017在上個月底熱騰騰的出爐啦!其中與先前2013版本新增的重大風險是:A4XML外部實體注入的風險、A8不安全的反序列化、A10不充分的記錄及監控。這次的專欄我們針對A8不安全的反序列化做介紹。我們將會以Java語言作為示範反序列化的過程、以及以CVE2017-12149 JBOSS Application Server 5.X/6.X的反序列化遠端代碼執行的弱點作為示範。
What is DESERIALIZATION?
要提到反序列化,想當然爾必須先了解何為"序列化"。
我們從Java的官網的tutorial中找到這段文字介紹:
To serialize an object means to convert its state to a byte stream so that the byte stream can be reverted back into a copy of the object.
(將一個物件轉換成一個"可還原"的byte stream)
讓我們來看以下這段簡單的SAMPLE CODE:
大致上的意思是在建立一個文字字串的物件,然後將它序列化成檔案"serialization.demo"之後儲存到硬碟中,隨後將檔案讀回程式,再反序列化後將字串輸出。執行過程如下:
其中的關鍵我們可以來觀察"serialization.demo"這個檔案:由於是byteStream格式,所以我們使用xxd將binary格式轉換一下,變成可以看懂的字元,可以看到我們寫好的字串的確被包裝於檔案中。
再來下一步我們進階"實作"一個Serializable的MyObject物件來嘗試做反序列化:
我們實作了一個MyObject物件,並且在readObject時印出serializable!!!字串。執行情況如下:
果真如預期的先是印出了serializable!!!字串,再行印出物件所帶出的字串。
有注意到兩次輸出之後我們都有再將資料做一次base64編碼嗎?可以注意到有趣的是Java的反序列化物件在編碼後都是以rO0AB開頭,這是一個在執行滲透測試時相當重要的特徵。
What is INSECURE DESERIALIZATION in Java?
在我們看完簡單的序列化原理後,就要進入正題啦!為什麼反序列化被當作參數後,遭到惡意攻擊者修改後,就能輕鬆的達到遠端代碼執行的攻擊效果呢?
我們用倒果為因的方式,先從當下時下攻擊Java反序列化攻擊必備的ysoserial這套攻擊代碼產生工具( https://github.com/frohoff/ysoserial )的思維和程式碼,來快速切入思考反序列化的問題。
從使用方法中我們可以看到必須輸入Payload類型,而每個類型的Payload有其對應有反序列化問題的Java函式庫Dependency,為什麼Payload會有相依性呢?
我們挑選其中最常見的CommonCollections這個系列的第五項,來做為這次探討反序列化發生的原因,並在最後以一個Real Case: CVE2017-12149 JBOSS Application Server 5.X/6.X的反序列化遠端代碼執行的弱點作為示範。
在ysoserial的CommonCollections5.Java原始碼中,我們可以看到最上面註解部分提到利用來執行反序列化達成遠端代碼執行的"Gadget Chain",所謂"Gadget Chain"是利用Java語言反射的特性,將前面Dependency函式庫中,所定義的類別裡的函式做組合後,構成繞過Java機制可強制被執行的函式鍊,再將此函式鍊反序列化後的byteStream送至伺服器端,讓伺服器成功達到我們想要的遠端代碼執行。
此Gadget Chain的撰寫技巧在於將一般正常的執行函式,以反射的方式與Apache CommonCollections 中的ChainedTransformer結合,只要可以觸發transform()這個函式,就能成功將鏈結裡的InvokerTransformer串起後執行。這時我們從頂層重新看起,觸發的部分就靠Java原有的AnnotationInvocationHandler當作初始的關鍵觸發元件,其中的entrySet()被稱作magic method,會觸發Map中的invoke方法,再傳遞至內層的AnnotationInvocationHandler的invoke方法,最後包裝於CommonCollections的LazyMap中,將前面的ChainedTransformer放在裡面,即可成功執行。
CVE2017-12149 JBOSS AS 5.X/6.X Insecure Deserialization to RCE
我們先針對JBOSS AS 做簡單的code review,這個漏洞發生於URL路徑/invoker/readonly之中,經過Trace之後發現實際程式位置在org.jboss.invocation.http.servlet中的ReadOnlyAccessFilter,其中針對了輸入資料做反序列化的動作。
既然程式端有反序列化,那麼我們就來開始構造我們的payload吧!
由於最後會執行Runtime.getRuntime().exec()的關係,加上最後解析時會出現一些問題,所以我們透過以下工具將執行語句( http://jackson.thuraisamy.me/runtime-exec-payloads.html )快速編碼成base64格式:
隨後再將編碼好之payload以ysoserial工具,將payload填入Gadget Chain中再反序列化。
最後就可以在我們預先設定好之nc之下得到reverse shell了!
Conclusion
由於攻擊者利用Java反射機制的副作用,在物件return之前就將所有動作執行完畢,導致反序列化在解開byteStream時並且跳出error之前就將Payload全數執行。導致攻擊者只要掌握後端程式中有何種函式庫,將函式庫中各種函式做組合,跨函式庫呼叫函式組合成Gadget Chain,最終執行Runtime.getRuntime().exec()以執行任意惡意代碼。
簡單來說就是一個使用者將110V的電器插入220V的插座中,雖然是一樣的插座孔,不過使用者並不知道插座的伏特數是多少,直到插座與電器通電、電器燒壞後才發現伏特數不合拍。同樣的,反序列化也是在含有遠端代碼執行的byteStream進入系統,在Payload執行後才發現,這byteStream格式是有問題的。
其他訊息


社交工程是什麼?被攻擊該如何防範?5大資安攻擊和防範手法一次知!
2018/01/05
企業需要用到CDN嗎?3分鐘快速瞭解CDN架構、用途和優點!
2018/01/05
AWS是什麼?AWS雲端服務類型、優勢和使用方式一次瞭解!
2018/01/05
DevOps和SRE差在哪?DevOps的4大優勢和相關服務推薦一次看!
2018/01/05
如何做好雲端安全防護?推薦這6大雲端資安健診方法一次看!
2018/01/05
IDC是什麼?我適合用嗎?挑選IDC機房3個重點和注意事項一次懂!
2018/01/05
全新登場!阿里雲 CAPTCHA 服務,給您頂級安全防護與用戶體驗
2018/01/05
什麼是DDoS攻擊?一次教你如何做好DDoS防護,保護你的網站!
2018/01/05
如何提升網站效能優化?推薦5個改善網站速度的方法一次看!
2018/01/05
雲端遷移成功關鍵因素
2018/01/05
SOC它到底是什麼?它對資安有什麼作用?對於SOC資訊安全監控的功能與優勢有哪些?
2018/01/05
精準運維,一站監控:探索騰訊雲可觀測平台的強大功能
2018/01/05
Page Speed網頁速度如何加快?四種方法教你如何改善網站速度!
2018/01/05
果核 2024 首發 Hacker Talk 論壇, 破解資安求職與無人機資安盲點
2018/01/05
如何定義開源軟體&套件?3分鐘快速搞懂第三方套件的授權模式!
2018/01/05
雜貨店也能數位轉型?食品零售商如何透過公有雲優化商務呢
2018/01/05
騰訊雲CCN雲聯網 手把手配置 高效穩定企業跨境全球互聯
2018/01/05
【2024最新】公司企業的3款最佳Devops工具,成功案例一次看!
2018/01/05
使用CDN安全嗎?CDN如何達到基本防護功能呢?
2018/01/05
我用的APP安全嗎?會被竊個資嗎?3分鐘快速檢查手機APP資安!
2018/01/05
如何確保做好企業資訊安全?這4大DDoS防護方法,推薦學起來!
2018/01/05
發現手機被追蹤怎麼辦?注意 這十大被駭徵兆,手機資安恐不 保!
2018/01/05
如何加快網站速度?影響網速的要件及升級指南
2018/01/05
Vertex AI 和 Workbench 語言模組實戰,打造有人性的客服小幫手
2018/01/05
我的 AWS實例啟用失敗,應該怎麼做?
2018/01/05
果核 2023 最終場駭客論壇,探討網站風險、原碼檢測盲點與 Crypto 黑暗面
2018/01/05
DDOS流量清洗是什麼?可以阻擋攻擊嗎?DDOS防禦方法一次看!
2018/01/05
Devops是什麼?推薦企業一次看懂Devops定義、流程及優缺點!
2018/01/05
如何做好資安防護?3個APP資安檢測工具、費用及功能一次看!
2018/01/05
CDN廠商怎麼選?中華電信CDN、Cloudflare及Multi CDN大評比!
2018/01/05
如何檢測iOS、Android手機資安?4招檢測方法預防詐騙&駭客!
2018/01/05
Google Cloud 引領潮流,擴大企業級生成式 AI的應用範疇,開創無限可能!
2018/01/05
果核邀請專家獻策,破解惡意後門與車載資安盲點
2018/01/05
企業為什麼要上雲?用途為何?盤點上雲5大優勢和費用解析!
2018/01/05
可自建CDN嗎?和供應商差在哪?兩者優缺點和供應商挑選一次懂!
2018/01/05
優化數據處理體驗:探索騰訊雲 EdgeOne 邊緣計算新境界
2018/01/05
我該如何選擇最適合 AWS EC2 實例?
2018/01/05
企業如何挑選合適的雲端服務?公有雲、私有雲差異比較總整理
2018/01/05
技術專欄_運用AWS Network Firewall控制 Workspaces
2018/01/05
弱點掃描工具有哪些?5款免費、付費弱點掃描工具優缺點分析!
2018/01/05
如何設定網站CDN?推薦公司企業使用CDN加速的4大原因!
2018/01/05
如何應對邊緣節點的網路攻擊?在 CDN 邊緣節點建立防護系統!
2018/01/05
如何測試網站安全?OWASP工具測試弱點掃描的功能服務解析!
2018/01/05
如何防禦DDoS攻擊?推薦這4大DDoS防護方法,避免網站被駭!
2018/01/05
Google Cloud 初學者指南:我該將服務運行在哪呢?
2018/01/05
果核串聯執法機關、資安廠商與風險顧問引導企業降低遇駭危機
2018/01/05
企業需要SOC資安監控嗎?如何評估?看懂SOC監控的5大功能!
2018/01/05
Multi CDN是什麼?為什麼要融合CDN?其應用方法與原理一次知!
2018/01/05
如何利用CDN內容傳遞網路讓網站加速?4大優勢與趨勢分析!
2018/01/05
DDoS攻擊怎麼防禦?DDoS攻擊手法與資安供應商挑選一次搞懂!
2018/01/05
為什麼網站速度慢?和網頁設計有關嗎?速度慢會造成什麼影響?
2018/01/05
如何提升企業雲端防護力-Cloud Armor
2018/01/05
果核 2023 首發論壇,揭示藍隊能力升級、 開發/資安磨合的奧妙心法
2018/01/05
2021 OWASP Top 10 A09資安紀錄與監控失效
2018/01/05
2021 OWASP Top 10 A10伺服器請求偽造
2018/01/05
安全防護:Web Application Firewall 設定教學
2018/01/05
主動追蹤 AWS 「資源用量」,避免配額用盡造成任務失敗
2018/01/05
我的網站慢嗎?如何檢測讓網站加速?新手必知 5 項網站優化指南!
2018/01/05
阿里雲訪問控制與權限設置教學
2018/01/05
該怎麼選擇 GCP Disk ?
2018/01/05
AWS-WorkSpaces雲端桌面服務 (下集)
2018/01/05
SOC 是什麼?SOC 資訊安全監控 v.s NOC 網路操作中心的差異?
2018/01/05
2021 OWASP Top 10 A08軟體及資料完整性失效
2018/01/05
OWASP前10大A07認證及驗證機制失效,瞭解如何修補及預防!
2018/01/05
2022 果核 Hacker Talk 漂亮收尾, 解構開發模式、弱點檢測之安全盲點
2018/01/05
CDN 內容傳遞網路是什麼?其運作的原理及用途為何?
2018/01/05
SOC 資訊安全監控中心是什麼?4 項功能服務與優勢一次知!
2018/01/05
如何提高網站的速度,為中國用戶提供可靠的體驗?
2018/01/05
如果AWS訪問密鑰暴露怎麼辦?記住這4步驟一定要先做起來!
2018/01/05
快速上手打造專屬直播平台
2018/01/05
2021 OWASP Top 10 A06易受攻擊和已淘汰的組件
2018/01/05
果核Hacker Talk傳授企業資安設計要訣,並探索IoT資安風險化解之道
2018/01/05
HACKER TALK - 常被遺漏的開發測試環境如何面對駭客迎擊? 弱點掃描是否足夠阻擋駭客攻擊? 今年最後一場論壇,精彩議程不容錯過!
2018/01/05
資安弱點掃描v.s滲透測試,差異在哪?3分鐘看優缺點與流程!
2018/01/05
智慧戰情室能夠帶給企業什麼好處?一次瞭解其功能與特點!
2018/01/05
我該如何選擇最適合的阿里雲 ECS 實例?
2018/01/05
收到 AWS Abuse Report,該怎麼辦?
2018/01/05
AWS-WorkSpaces雲端桌面服務 (上集)
2018/01/05
公司網站速度慢怎麼辦?4 大網站速度慢原因,與自我檢測方法一次看
2018/01/05
智慧戰情室能夠帶給企業什麼好處?一次瞭解其功能與特點!
2018/01/05
什麼是公有雲?公有雲安全嗎?適合哪種企業使用?
2018/01/05
2021 OWASP Top 10 A05 Security Misconfiguration 安全設定缺陷
2018/01/05
2021 OWASP Top 10 A04 不安全設計
2018/01/05
雲端WAF是什麼?WAF應用程式防火牆6點效益,提升網站安全防護力!
2018/01/05
網站該建置雲端WAF嗎?如何運用WAF保護您的網站應用程式!
2018/01/05
2021 OWASP Top 10 A03 Injection 的攻擊
2018/01/05
多層式安全防護機制教學!運用 Anti-DDoS、WAF、CDN 和 Cloud Firewall 鞏固線上業務
2018/01/05
2021 OWASP Top 10 A02加密機制失效的問題
2018/01/05
【企業案例】《今日新聞》融合CDN技術,網站流量成長 50%
2018/01/05
2021年OWASP Top 10新規範,有效補強企業資安機制缺陷!
2018/01/05
Hack Talk駭客論壇,深度剖析ICS攻擊與Windows提權威脅!
2018/01/05
源碼檢測是什麼?動態&靜態的弱點掃描測試有什麼不同?
2018/01/05
OWASP Top 10 2021 十大常見的弱點與風險,如何做好企業資安防護?
2018/01/05
網站速度太慢怎麼辦,速度也會影響到網站的轉換率嗎?
2018/01/05
內容傳遞網路(CDN)提供哪些服務?Alibaba Cloud CDN如何?
2018/01/05
SSTI惡意指令注入防不勝防,面對駭客惡意攻擊,要如何戒備與防範?
2018/01/05
2021最大資安漏洞!修補方式一次完整揭露
2018/01/05
「負載平衡」是什麼意思?網站加速與負載平衡也有關嗎?
2018/01/05
企業安全合規5式,做好DDOS防護提升您的網絡安全策略!
2018/01/05
線上學習網站速度太慢怎麼辦?透過CDN達到網站加速!
2018/01/05
遇到DDoS駭客攻擊怎麼辦?一站式的雲端安全管理有用嗎?
2018/01/05
如何提升網站速度及效能?推薦先搞懂動態v.s靜態網站的差 異!
2018/01/05
網站在中國速度很慢?中國網站加速的CDN內容傳遞最佳實務!
2018/01/05
什麼是滲透測試?從網路資安看Client-Side Template Injection
2018/01/05
手機更新後銀行帳密全被盜!小心Flubot惡意軟體入侵
2018/01/05
APP資安防禦不可輕忽!最新手遊作弊修改器GameGuardian!
2018/01/05
飛馬間諜軟體讓駭客監控你的手機!不點連結就能自動感染
2018/01/05
什麼是幸運破解器Lucky Patcher?不得不正視的APP資安問題!
2018/01/05
從零基礎學破解的駭客工具 Magisk Root, 看懂駭客攻擊如何操作!
2018/01/05
新型Android安卓駭客破解工具Mhook出現!當心被手機駭客攻擊!
2018/01/05
什麼是ApkCrack?3步驟瞭解駭客工具並完美預防駭客攻擊!
2018/01/05
預防駭客行動詐騙!看懂App網路資訊安全「原始碼加密」技術!
2018/01/05
支付、網銀金融App安全嗎?你必知的白帽App資安漏洞分析!
2018/01/05
手機被駭怎麼辦?5分鐘一次教你破解Mobile App駭客攻擊手法!
2018/01/05
App手機行動裝置的Xposed軟件攻擊模式,該如何防禦網路資安?
2018/01/05
什麼是Web Cache?3分鐘快速帶你瞭解Web Cache的功能及使用方式!
2018/01/05
如何防範網站速度的延遲及停機?看國外在特賣期間是如何做到的!
2018/01/05
常見手機APP駭客工具-FRIDA,預防你的網站遭受駭客攻擊!
2018/01/05
注意!行動裝置App資安檢測最需要注意「防記憶體偵測」技術!
2018/01/05
要如何預防駭客攻擊?6步驟教你如何提升網路資安的安全性!
2018/01/05
網路詐騙手法!釣魚信件、釣魚網站的社交工程駭客常見3手法!
2018/01/05
來自外部的威脅 - XXE漏洞攻擊成因
2018/01/05
JAVA世界中不安全的反序列化風險
2018/01/05
API 安全問題探討
2018/01/05
駭客工具的氾濫VS企業所面對的資安威脅
2018/01/05
會員、個人資料外洩怎麼辦?4個預防資料外洩方法一次看懂!
2018/01/05
嚇!手遊資安危機 數小時恐喪失上億營收
2018/01/05
Pokemon Go越紅公司損失越大! 歷時兩年開發,上市不到72小時就被駭
2018/01/05
注意!金融業已成為駭客攻擊目標,4個防範手機App的資安威脅!
2018/01/05
準行政團隊Line國事作法急轉彎,準經長受命客製臺版即時通
2018/01/05
從Google Play下載App保證安全!? 資安業者:超過100款惡意程式會偷資料、點擊詐騙
2018/01/05
網銀App漏洞 金管會關注
2018/01/05
Google釋出Nexus Android 4月份更新,一次修補近40項漏洞
2018/01/05
Android逆向之旅---靜態分析技術來破解Apk
2018/01/05
Xcode Ghost事件說明及處理建議
2018/01/05
NEW-【第一季資安報告】加密勒索軟體感染翻兩倍;行動惡意威脅App突破500萬大關!
2018/01/05
Critical GHOST vulnerability affects most Linux Systems
2018/01/05