跟bWAPP學WEB安全(PHP程式碼)--SSL(Server-Side-Include)漏洞
阿新 • • 發佈:2019-01-09
什麼是Server-Side-Include漏洞
服務端包含漏洞是指傳送指令到伺服器,伺服器會將指令執行完,把執行結果包含在返回檔案中傳送給你。利用這種漏洞可以獲取服務端的資訊甚至執行命令,這樣的指令是構造在HTML註釋中發過去的。當然,因為包含SSI指令的檔案要求特殊處理,所以必須為所有SSI檔案賦予 SSI副檔名。預設副檔名是 .stm、.shtm和 .shtml。
指令型別
- 顯示服務端變數<!--#echo var="PATH"-->
- 將文字內容新增到文件<!--#include file="phpi.php"-->
- 執行命令<!--#exec cmd="ping -c 4 172.16.204.1"-->
- 還有其他的,類似<!--#config xx=xxx--><!--#flastmod #fsize-->等等
burp掃描展示可以確認:
程式碼分析原理和防禦
function xss($data) { switch($_COOKIE["security_level"]) { case "0" : $data = no_check($data); break; case "1" : $data = xss_check_4($data); break; case "2" : $data = xss_check_3($data); break; default : $data = no_check($data); break; } return $data; }
本質是程式碼在shtml裡面就會被執行,那麼沒啥,來看防禦嘛,從程式碼來看,應該還是過濾,我們來測試測試中級嘗試繞過辦法。
繞過
無防禦時候的payload嘗試【失敗】:<!--#echo var="PATH"-->
編碼了<> 測試失敗
看來轉義了",編碼"測試<!--#echo var=%22PATH%22-->
都編碼測試一下也失敗
burp沒有問題
其實還是可以
使用<!--#printenv-->可以獲取資訊
高階
水平太菜,無能為力
防禦
- 1、配置禁止ssi和xssi
//例如Nginx的配置檔案中
ssi on;//修改為ssi off;
- 2、輸入過濾嚴格,使用htmlspecialchars函式。