1. 程式人生 > >跟bWAPP學WEB安全(PHP程式碼)--SSL(Server-Side-Include)漏洞

跟bWAPP學WEB安全(PHP程式碼)--SSL(Server-Side-Include)漏洞

什麼是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函式。