什麼是滲透測試?從網路資安看Client-Side Template Injection
你聽過所謂的「滲透測試」嗎?網路資訊安全常聽到的滲透測試,是一種利用以駭客的觀點、技術、工具來模擬駭客攻擊手法,來找出系統中弱點及漏洞的一種檢測的方式,也是現在許多網路資安公司都會使用的一種檢測法。
關於XSS - Cross Site Scripting 跨站腳本攻擊
XSS - Cross Site Scripting 跨站腳本攻擊從90年代開始就是一個遭到駭客大量利用的手法,利用瀏覽器在判別伺服器回傳頁面時,無法分辨頁面的HTML資料是由URL中引入、或是由資料庫所引入的攻擊代碼。在這攻擊持續將近20年後,隨著開發技術的日新月異,網頁前後端分離的情況下,前端頁面的渲染技術不同以往,會透過前端網頁的框架將使用者需要使用的頁面即時產出,但這樣的情況下,就不會出現一樣的問題嗎?網頁模板注入攻擊是一種近代跨站腳本攻擊的新手法,透過注入 JavaScript影響渲染流程,導致頁面中渲染後的HTML出現攻擊代碼,是一種變形過後的XSS攻擊。
Template又是什麼?
在介紹Client-Side Template Injection之前,需要先簡單介紹一下網頁模板(Template)是什麼,模板是一種近代網頁框架中常使用到的技術,其主要目的是
讓HTML頁面的產生渲染的過程更加簡單與方便,以前的網頁在不同的HTML頁面中可能存在大量的重複內容,同一個HTML頁面中也會有大量格式相似的內容,網路框架中的模板就是專門用來簡化這些HTML頁面產生的麻煩。模板一般需要由開發UI的開發者負責撰寫,裡面支援模板引擎(TemplateEngine)提供的特殊語法,用來執行開發者所撰寫的產生頁面的邏輯,最終會透過模板引擎渲染出頁面。
看更多:什麼是DDoS攻擊?一次教你如何做好DDoS防護,保護你的網站!
其中網站框架中的模板使用又分為伺服器端(Server-Side)與客戶端(Client-Side),伺服器端的模板引擎於伺服器的主機上執行,透過伺服器上的模板檔案與變數資料進行渲染並回應HTML給客戶端,通常由後端的程式語言運行模板引擎。客戶端的模板引擎運行在使用者的瀏覽器中,透過從伺服器獲得的模板檔案與變數資料進行渲染,通常透過瀏覽器的JavaScript執行模板引擎。
而客戶端的模板撰寫與修改大多不需要改動到運行資料處理或運算的後端程式碼,因此多用在前後端分離的網站架構中。使用者瀏覽頁面時會從伺服器獲得模板和一些前端的JavaScript或CSS檔案,後續操作透過API從後端獲取資料來更新頁面。前端的模板引擎較為人所知的多是一些較知名的前端框架內提供的模板功能,知名的三大前端框架如:Angular、Vue、React,不過除了這些以外也有其它實做模板功能的套件。
關於Client Side Template Injection
Client-Side Template Injection是指一種針對客戶端的模板注入惡意指令的攻擊,正常而言安全的模板使用方式是透過將使用者輸入放入渲染的變數,接著透過模板引擎進行渲染,然而有時候為了開發上的方便性,有可能會動態的產生模板,並在產生模板時放入使用者輸入的內容。
在上述的例子中,第一個有可能發生的問題是Cross-Site Scripting的攻擊,因為許多模板的實作中是會帶有HTML格式的內容,假設第一個問題透過字元編碼或過濾解決,仍然存在第二個可能發生的問題,就是模板注入攻擊,因為關鍵字元的不同,針對Cross-Site Scripting的編碼與過濾可能無法防範此攻擊。
攻擊
在瞭網路資安的解滲透測試前,建議也要先了解模板注入攻擊,我們得先了解模板引擎提供給開發者使用的語法。
Angular template範例:
Vue template範例:
以Angular和Vue的例子而言可以發現它們都使用"{{}}"作為特殊操作的語法格式。通常以攻擊而言可以先嘗試輸入"{{7*7}}",如果成功被模板引擎解析的話就會變成49,這裡是攻擊前端,我們的目標是執行JavaScript,因此我們可以嘗試輸入"{{alert(0)}} ",但我們可以發現沒有辦法成功,不過我們可以分析模板引擎的行為,觀察我們的輸入如何被執行。
Angular分析
(版本為1.6.0,不同版本有其它處理,此處不做分析)
模板引擎透過Angular中實作的Abstract Syntax Tree分析輸入語法,並產生
JavaScript代碼:
代碼中的函式必須存在於下列兩個變數其中一個當中:
1. $filter
2. getStringValue
Vue分析
透過一個Vue的物件作為vm變數作為this去嘗試執行語法內容產生的代碼:
產生的代碼中的任何函式執行前必須要符合以下其中一個條件才允許執行:
1. vm這個物件中包含這個函式相同名稱的物件或函式
2. 函式名稱的type是字串、第一個字元是'_'且在vm的$data中不包含同名稱的物件或函式
繞過
上述兩個模板引擎的執行機制可以透過一個共通的方法繞過,那就是JavaScript中的constructor,JavaScript中任何物件皆包含constructor,而constructor的constructor循環最終會是JavaScript中原生Function constructor,Functionconstructor可以用字串建構出函式。利用上述特性可以使用"{{constructor.constructor('alert(1)')()}}"作為攻擊注入的代碼,Angular中的兩個條件與Vue的第一個條件皆可達成,最終成功執行了測試用的代碼"alert(1) "。
風險
與XSS - Cross-Site Scripting跨站腳本攻擊的風險基本上完全相同。
1. 在沒有Cookie防護如HTTP Only Cookie的情況下竊取Cookie,若是恰巧是針對用於認證身分的Session Cookie則可達到竊取使用者權限的作用。
2. 竊取頁面中的敏感資訊,攻擊者可利用JavaScript存取頁面關鍵的機敏資料欄位,並透過HTTP請求將資料對其他網站傳送。
3. 竄改頁面顯示內容並誘導使用者者進行不當操作。
4. 利用被攻擊的網域偽造請求,此時偽造情求將會帶上使用者的身分認證資訊,導致權限被攻擊者濫用。
5. 使用者正在使用中的頁面將會被攻擊代碼導向至惡意網站。
防禦
1. 於開發時若無必要性,模板的渲染相關的參數應與使用者輸入分離。
2. 過濾使用者輸入,必須確保不會因為任何轉換造成語法的關鍵字成為模板中的內容。這邊建議可以多看看使用框架的Security Best Practice 章節,裡
面往往會有sanitize相關的內容可以參考,可以透過使用套件方式去過濾使用者的輸入、或是以白名單的做法縮小Attack Surface。
例子
底下我們可以看到兩個來自hackerone這個漏洞懸賞平台的案例:
一、
這個Uber的範例是由知名網頁滲透測試工具BurpSuite的研究總監James Kettle所通報。
瞭解更多:網路資安滲透測試檢測
由回報的URL中,我們可以根據描述了解到此案例中的Angular會使用QuertString中q參數的值產生模板,並且在被渲染時此處被注入的惡意程式碼可以被執行,可用於做出惡意連結,令使用者觸發此惡意行為。這樣的模式是不是很近似反射型的跨站腳本攻擊呢?
二、
根據描述我們無法確認具體的前端框架或模板引擎,不過我們可以看到注入的惡意程式碼與我們前面繞過Angular與Vue的一樣,也許是兩者其中之一。不過我們可以瞭解到在這個案例中注入的惡意程式碼會儲存在資料庫中,並且每此瀏覽此頁面都會觸發,相較於上個案例而言,根據頁面可能造成使用者瀏覽正常頁面時就觸發惡意行為,危害較大。我們在滲透測試的專案中也往往會遇到開發者並未針對資料庫中的資料來源做sanitize過濾,但恰巧此處的資料庫資料是使用者所輸入的,導致會有儲存型跨站腳本攻擊的結果。
結論
近幾年大量前後端分離的網站開發狀況下,在我們執行滲透測試專案時,會特別注意開發者是否針對前端輸出的資料處理到位,確認除了沒有跨站腳本攻擊的問題之外,再多加確認是否存在用戶端模板注入攻擊的問題。也希望透過這樣的文章讓大家了解近幾年較為新型態的網頁攻擊!
延伸閱讀:
預防駭客行動詐騙!看懂App網路資訊安全「原始碼加密」技術!
參考資料:
https://hackerone.com/reports/125027
https://hackerone.com/reports/250837
其他訊息


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