侵權投訴
訂閱
糾錯
加入自媒體

PHP文件包含漏洞原理分析|美創安全實驗室

2020-08-19 09:59
美創科技
關注

PHP是目前非常流行的Web開發語言,但是在利用PHP開發Web應用時,如果稍有不注意,就會產生PHP文件包含漏洞。PHP文件包含漏洞是一種常見的漏洞,而通過PHP文件包含漏洞入侵網站,甚至拿到網站的WebShell的案例也是不勝枚舉。本期美創安全實驗室將帶大家了解PHP文件包含漏洞的產生原因和漏洞原理。

漏洞簡介

文件包含漏洞(File Inclusion)是一種常見的依賴于腳本運行從而影響Web應用的漏洞。嚴格來說,文件包含漏洞是“代碼注入”的一種,許多腳本語言,例如PHP、JSP、ASP、.NET等,都提供了一種包含文件的功能,這種功能允許開發者將可使用的腳本代碼插入到單個文件中保存,在需要調用的時候可以直接通過載入文件的方式執行里面的代碼,但是如果攻擊者控制了可執行代碼的路徑,也就是文件位置時,攻擊者可以修改指定路徑,將其指向一個包含了惡意代碼的惡意文件。

文件包含漏洞通常都會使Web服務器的文件被外界瀏覽導入信息泄露,執行的惡意腳本會導致網站被篡改,執行非法操作,攻擊其他網站,獲取WebShell等嚴重危害。

漏洞產生原理

在上一節的描述中我們提到,攻擊者通過控制可執行代碼的路徑就可以實現文件包含漏洞,這只是一個對整體攻擊流程的簡化描述,在實際情境下,服務器解析執行php文件時通過包含函數可以加載另一個文件中的php代碼,當被包含的文件中存在木馬時,就意味著木馬程序會在服務器上加載執行。

所以產生文件包含漏洞的根本原因在于開發者是否對通過包含函數加載的文件進行了嚴格且合理的校驗,在PHP中總共有四種文件包含函數:

1)Include():包含并運行指定的文件,只有在程序執行到include時才包含文件,且當包含文件發生錯誤時,程序警告,但會繼續執行。

2)Require():只要程序一運行就會執行該包含文件函數,當包含文件發生錯誤時,程序直接終止執行。

3)Include_once():和include()類似,不同之處在于include_once會檢查這個文件是否已經被導入,如果已導入、下文便不會再導入。

4)Require_once():和require()類似,不同處在于require_once也是與include_once一樣只導入一次。

根據被包含文件的位置不同,PHP文件包含漏洞可以分為本地文件包含漏洞(Local File Inclusion,LFI),和遠程文件包含漏洞(Remote File Inclusion,RFI)。顧名思義,所謂的本地文件包含漏洞指的是攻擊者通過控制包含文件函數,如include(),require()等,加載服務器本地上的PHP腳本文件,當然如果本地的PHP腳本文件都是一些對系統無害的功能性文件,攻擊者也無法進行進一步的利用,但若是攻擊者能夠配合任意文件上傳漏洞,將惡意文件上傳進服務器中,再通過本地文件包含執行該惡意腳本就可以達到獲得網站控制權的目的。

而遠程文件包含漏洞是指攻擊者可以通過文件包含函數加載其他服務器上的PHP文件,在實際項滲透目中,攻擊者可以在自己的服務器上存放一個可執行的惡意文件,然后通過目標網站存在遠程文件包含漏洞來加載相關文件,實現任意命令執行。

漏洞復現

1、PHP本地文件包含漏洞獲取服務器敏感信息

搭建測試環境,為了方便演示,我們簡單設計了一個服務器上的PHP腳本代碼,如下:

image.png


其中PHP配置文件中,allow_url_fopen和allow_url_include兩個參數默認是ON的狀態。(在本地文件包含漏洞中,allow_url_fopen必須是ON的狀態allow_url_include的狀態可以不用必須指定。)

image.png

通過訪問該資源,可以判斷使用了文件包含函數。

image.png


服務器直接將file參數當作文件包含的參數路徑,并未做任何過濾,攻擊者可以直接在file參數后面填寫服務器敏感文件路徑,從而獲得服務器敏感信息,例如在file后加上../../MYSQL/my.ini即可讀取到服務器本地的Mysql配置文件。

image.png

1  2  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

文章糾錯
x
*文字標題:
*糾錯內容:
聯系郵箱:
*驗 證 碼:

粵公網安備 44030502002758號

红黑梅方游戏机漏洞 2017年大小波色单双句 中金在线股票行情 疯狂飞艇的骗局 天津快乐十分中4位多少钱 黑龙江6 1走势图b2 体彩和福彩开奖结果 安徽十一选五定牛遗漏 3d过滤器苹果版app下载 快乐十分选号万能3码 3d开机号和试机号 东方6+1基本走势图 联创电子股票股吧 上海快三开奖查询快200期 辽宁11选5用哪个软件下载 股票亏了死守会回本吗 吉林快三单双全天精准计划