溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞怎么預(yù)防

發(fā)布時(shí)間:2023-02-24 11:16:06 來源:億速云 閱讀:118 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞怎么預(yù)防的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞怎么預(yù)防文章都會(huì)有所收獲,下面我們一起來看看吧。

    漏洞的產(chǎn)生原因

    • 代碼層過濾不嚴(yán)。應(yīng)用程序直接或間接使用了動(dòng)態(tài)執(zhí)行命令的危險(xiǎn)函數(shù),并且這個(gè)函數(shù)的運(yùn)行參數(shù)是可控的

    • 系統(tǒng)的漏洞造成命令注入

    漏洞的本質(zhì)

    應(yīng)用有時(shí)需要調(diào)用一些執(zhí)行系統(tǒng)命令的函數(shù),當(dāng)服務(wù)器沒有嚴(yán)格過濾用戶提供的參數(shù)時(shí),就有可能導(dǎo)致用戶提交惡意代碼被服務(wù)器執(zhí)行,從而造成命令執(zhí)行漏洞。

    涉及到的函數(shù)

    • 1.system

    • 2.exec()

    • 3.shell_exec()

    • 4.passthru()

    • 5.popen()

    • 6.反引號(hào)

    命令執(zhí)行漏洞的危害

    • 1.繼承Web 服務(wù)器程序權(quán)限(Web用戶權(quán)限),去執(zhí)行系統(tǒng)命令

    • 2.繼承Web服務(wù)器權(quán)限,讀寫文件

    • 3.反彈Shell

    • 4.控制整個(gè)網(wǎng)站

    • 5.控制整個(gè)服務(wù)器

    命令執(zhí)行漏洞的防御

    • 1、盡量少使用執(zhí)行命令函數(shù)或者禁用disable_functions

    • 2、在進(jìn)入執(zhí)行命令的函數(shù)之前,對(duì)參數(shù)進(jìn)行過濾,對(duì)敏感字符進(jìn)行轉(zhuǎn)義

    • 3、參數(shù)值盡量使用引號(hào)包括,并在拼接前調(diào)用addslashes進(jìn)行轉(zhuǎn)義

    命令執(zhí)行相關(guān)函數(shù)的使用

    system()

    • 說明:能夠?qū)⒆址鳛镺S命令執(zhí)行,自帶輸出功能

    • 測(cè)試參考代碼:

    <?php
    if(isset($_GET['cmd'])){
        system($_GET['cmd']);
    }
    ?>
    payload:?cmd=ipconfig

    exec()

    • 說明:能將字符串作為OS命令執(zhí)行,但無輸出,需要輸出執(zhí)行結(jié)果print。

    • exec() 默認(rèn)只輸出最后一行的數(shù)據(jù)

    • 如果想讓他輸出全部結(jié)果,可以加一個(gè)參數(shù),即exec(ifconfig,$arr); print_r($arr);,如一句話木馬:<?php exec($_REQUEST[123],$arr);print_r($arr)?>

    • 測(cè)試參考代碼

    <?php
    if(isset($_GET['cmd'])){
        print exec($_GET['cmd']);
    }
    ?>
    payload:?cmd=whoami

    shell_exec()

    • 說明:執(zhí)行命令并以字符串的形式,返回完整的信息,但是函數(shù)無回顯,需要輸出執(zhí)行結(jié)果。

    • 測(cè)試參考代碼

    <?php
    if(isset($_GET['cmd'])){
        print shell($_GET['cmd']);
    }
    ?>
    payload:?cmd=whoami

    passthru()

    • 說明:執(zhí)行外部命令,與system()類似,但是該函數(shù)會(huì)直接將結(jié)果輸出,無需輸出執(zhí)行。

    • 測(cè)試參考代碼

    <?php
    if(isset($_GET['cmd'])){
        passthru($_GET['cmd']);
    }
    ?>
    payload:?cmd=whoami

    popen()

    • 說明:能夠執(zhí)行OS命令,但是該函數(shù)并不是返回命令結(jié)果,而是返回一個(gè)文件指針

    • 測(cè)試參考代碼

    <?php
    if(isset($_GET['cmd'])){
        $cmd=$_GET['cmd'].">>1.txt";
        popen($cmd,'r');
    }
    ?>
    payload:?cmd=whoami

    反引號(hào)

    • 說明:反引號(hào)[``]內(nèi)的字符串,也會(huì)被解析成OS命令

    • 反引號(hào)背后執(zhí)行的代碼其實(shí)是調(diào)用了shell_exec(),所以禁用了shell_exec()同樣反引號(hào)也無法使用了。

    • 測(cè)試參考代碼

    <?php
    if(isset($_GET['cmd'])){
        $cmd=$_GET['cmd'];
        print `$cmd`;
    }
    ?>
    payload:?cmd=whoami

    關(guān)于“php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞怎么預(yù)防”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞怎么預(yù)防”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    php
    AI