知識簡介 : 模版引擎和框架的區別
ssti的中文翻譯 : 服務端的模版的注入?
模版引擎 :前端的用于裝飾優化html的模版 最簡單的就是在騰訊會議中的聊天功能
框架 : 這個是一套獨立存在的邏輯 如TP他是一個區別于php語法的后端邏輯(框架的作用就是 優化后端的功能和安全性)
兩者的共性就是為了省時
怎么發現對方的web套用了模版引擎
主要是看頁面的規律性和是不是非常的板正,大部分的web都是套用的模版 手寫的工程量是非常大的
漏洞的原理
這個就類似于 框架的rce 模版引擎會有獨特的語法,如果對方的模版引擎中有寫入的這個功能,那就會導致惡意的模版引擎的語法的寫入,再者沒有對其進行過濾從而導致了,ssti注入
漏洞利用的邏輯思路
1、找尋是什么模版引擎
這個是模版對應的語法,所以我們的思路就是先找對方是什么語言寫的 web 然后在語言中進行全掃即可,如對方使用的是php 那就是把php類的所以語法進行寫到注入點進行測試
ssti的漏洞的場景就是需要在有輸入的地方,并且這個輸入之后會有輸出的回顯,這樣就能進行操作
案例一:
實驗:基本服務器端模板注入 |網絡安全學院
靶場要求是讓我們使用模版的rce刪除morale.txt
我們隨便點擊一個商品?
發現回顯的地方? 這個英文的意思是商品缺貨 然后這個注入點讓我們想到的漏洞 1、xss 2、sql注入
然后就是我們的模版rce
工具介紹 : SSTImap
安裝一下依賴
使用 :
python sstimap.py -u "https://0a6800de041a131880a644a800e2001d.web-security-academy.net/?message=*"
這個工具的用法和sqlmap差不多? 這個就表示成功 然后判斷ssti是ERB類型的
這個工具有個不好的地方就是不會保留緩存
我們可以指定類型之后使用他的后滲透模式,也可以自己構造,看著上面的模版圖
erb語法??
<%= exec 'ls -al' %>
然后就發現我們的語句被嵌套到了這個模版中去 , 然后進行了前端的回顯
或者使用工具的自動模式 :
第二個靶場
實驗:基本服務器端模板注入(代碼上下文) |網絡安全學院
這個就比較隱晦了? 不是那種明顯的,這個其實是模版的語法用于post包中
登錄提示給的賬號密碼之后,隨便進入到一個文章中去?
發現有個評論的功能 : 聯想到ssti的前端模版就是一些輸入框,評論區或者是聊天的地方
我們先對評論進行ssti試一下 先抓個包 :
我們首先猜測的是在 comment 然后這個內容會自動的加載到前端的模版中去
最后測試發現失敗了,那就聯系到名字也是會在前端進行回顯
測試修改名字??????????????????????????????????????????????????????????????????????
然后返回我們的評論區 :
發現 7*7被執行了 所以這個就是注入點
最終的payload
blog-post-author-display=user.name}}{%25+import+os+%25}{{os.system('ls%20-al')
這個不能直接使用工具測試出來,手工是最好的
實驗三
Login - PortSwigger
這個靶場模擬的是 后臺ssti提取的一個場景
后臺有個模擬修改前端的代碼一個功能
可以進行編輯然后 就能在前端回顯
payload :
模版 :Freemarker:
<#assign test="freemarker.template.utility.Execute"?new()> ${test("ls")}
之后這里就會出現