訂閱
糾錯
加入自媒體

PHP文件出現漏洞的原理及解決方案

2、PHP遠程文件包含漏洞獲得網站WebShell

同樣還是采用相同的服務器代碼,其中PHP配置文件中,allow_url_fopen和allow_url_include兩個參數都必須是ON的狀態(tài)。

目標服務器地址:192.168.20.35

攻擊者遠程服務器:192.168.210.102

在攻擊者個人服務器上,放置了一個惡意文件(index.txt),如下:

image.png


該文件可以向目標服務器上創(chuàng)建一個hack.php腳本文件,并向其中寫入一句話木馬(已被Base64加密),這里要注意的是惡意文件不能是php可解析的擴展名,也就是不能以php結尾。

image.png

攻擊者通過遠程文件包含漏洞,觸發(fā)該文件(在file參數處寫入http://192.168.210.35/index.txt即可),如下:

image.png


然后攻擊者就可以通過連接工具,遠程連接木馬并獲得網站WebShell

image.png

防御方案

1、設置白名單

代碼在進行文件包含時,如果文件名可以確定,可以設置白名單對傳入的參數進行比較。

2、過濾危險字符

由于Include/Require可以對PHP Wrapper形式的地址進行包含執(zhí)行(需要配置php.ini),在Linux環(huán)境中可以通過”../../”的形式進行目錄繞過,所以需要判斷文件名稱是否為合法的PHP文件。

3、設置文件目錄

PHP配置文件中有open_basedir選項可以設置用戶需要執(zhí)行的文件目錄,如果設置目錄的話,PHP僅僅在該目錄內搜索文件。

4、關閉危險配置

PHP配置中的allow_url_include選項如果打開,PHP會通過Include/Require進行遠程文件包含,由于遠程文件的不可信任性及不確定性,在開發(fā)中禁止打開此選項,PHP默認是關閉的。

5、提升安全開發(fā)意識

任意文件包含漏洞的主要出現在能夠解析處理腳本文件的函數上,沒有對輸入的變量進行過濾,導致任意文件包含,進而導致惡意代碼執(zhí)行。在開發(fā)處理這類功能函數上,一定要遵循編程規(guī)范;在代碼核心處,對變量進行過濾限制,設置文件路徑或者白名單,避免執(zhí)行任意文件包含。

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

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

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

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

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號