久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      深入淺析PHP文件包含漏洞

      本篇文章給大家?guī)黻P于PHP的相關知識,其中主要介紹了關于文件包含漏洞的相關問題,文件包含漏洞的產(chǎn)生原因是在通過PHP的函數(shù)引入文件時,由于傳入的文件名沒有經(jīng)過合理的校驗,從而操作了預想之外的文件,希望對大家有幫助。

      深入淺析PHP文件包含漏洞

      推薦學習:《PHP視頻教程》

      漏洞描述

      文件包含漏洞的產(chǎn)生原因是在通過PHP的函數(shù)引入文件時,由于傳入的文件名沒有經(jīng)過合理的校驗,從而操作了預想之外的文件,就可能導致意外的文件泄露甚至惡意的代碼注入。
      PHP中引發(fā)文件包含漏洞的通常是以下四個函數(shù):
      1、include()當使用該函數(shù)包含文件時,只有代碼執(zhí)行到include()函數(shù)時才將文件包含進來,發(fā)生錯誤時只給出一個警告,繼續(xù)向下執(zhí)行。
      2、include_once()功能和include()相同,區(qū)別在于當重復調用同一文件時,程序只調用一次。
      3、require()只要程序一執(zhí)行就會立即調用文件,發(fā)生錯誤的時候會輸出錯誤信息,并且終止腳本的運行
      4、require_once()它的功能與require()相同,區(qū)別在于當重復調用同一文件時,程序只調用一次。

      漏洞危害

      攻擊者可利用該漏洞進行任意文件包含讀取,獲取服務器敏感信息。

      漏洞影響版本

      此漏洞的存在與版本無關

      漏洞分析

      在給PHP發(fā)送POST數(shù)據(jù)包時,如果數(shù)據(jù)包里包含文件區(qū)塊,無論你訪問的代碼中有沒有處理文件上傳的邏輯,PHP都會將這個文件保存成一個臨時文件(通常是/tmp/php[6個隨機字符]),文件名可以在$ _FILES變量中找到。這個臨時文件,在請求結束后就會被刪除。
      同時,因為phpinfo頁面會將當前請求上下文中所有變量都打印出來,所以我們如果向phpinfo頁面發(fā)送包含文件區(qū)塊的數(shù)據(jù)包,則即可在返回包里找到$_FILES變量的內容,自然也包含臨時文件名。
      在文件包含漏洞找不到可利用的文件時,即可利用這個方法,找到臨時文件名,然后包含之。
      但文件包含漏洞和phpinfo頁面通常是兩個頁面,理論上我們需要先發(fā)送數(shù)據(jù)包給phpinfo頁面,然后從返回頁面中匹配出臨時文件名,再將這個文件名發(fā)送給文件包含漏洞頁面,進行getshell。在第一個請求結束時,臨時文件就被刪除了,第二個請求自然也就無法進行包含。
      這個時候就需要用到條件競爭,具體流程如下:
      1)發(fā)送包含了webshell的上傳數(shù)據(jù)包給phpinfo,這個數(shù)據(jù)包的header,get等位置一定要塞滿垃圾數(shù)據(jù)。
      2)phpinfo這時會將所有數(shù)據(jù)都打印出來,其中的垃圾數(shù)據(jù)會將phpinfo撐得非常大。
      3)PHP默認緩沖區(qū)大小是4096,即PHP每次返回4096個字節(jié)給socket連接。
      4)所以,我們直接操作原生socket,每次讀取4096個字節(jié),只要讀取到的字符里包含臨時文件名,就立即發(fā)送第二個數(shù)據(jù)包。
      5)此時,第一個數(shù)據(jù)包的socket連接其實還沒有結束,但是PHP還在繼續(xù)每次輸出4096個字節(jié),所以臨時文件還未被刪除。
      6)我們可以利用這個時間差,成功包含臨時文件,最后getshell。

      環(huán)境搭建

      1. 啟動docker:
        service start docker
      2. 在docker-compose.yml文件所在的路徑執(zhí)行:
        docker-compose build
        docker-compose up -d
        深入淺析PHP文件包含漏洞

      漏洞復現(xiàn)

      1. 訪問http://your-ip:8080/phpinfo.php,可以看到頁面出現(xiàn)phpinfo頁面
        深入淺析PHP文件包含漏洞2. 再訪問http://your-ip:8080/lfi.php?file=/etc/passwd,可以看到該頁面是存在文件包含漏洞的。
        深入淺析PHP文件包含漏洞POC驗證:
        使用方法:python3 PHP文件包含漏洞_poc.py –target-url http://192.168.60.244:8080
        深入淺析PHP文件包含漏洞

      修復建議

      設置白名單。

      推薦學習:《PHP視頻教程》

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