42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

03-05 1567阅读 0评论

文章目录

  • 文件包含
    • 文件包含原理
    • 攻击思路
    • 文件包含分类
    • session
    • PHP伪协议进行文件包含

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,方法,网站,第3张
      (图片来源网络,侵删)

      文件包含

      文件包含原理

      文件包含其实就是引用,相当于C语言中的include 。文件包含漏洞常出现于php脚本中,当include($file)中的$file变量用户可控,就造成了文件包含漏洞。**注意被包含的文件中只要存在php代码,就可以被php解释器解析,不受文件后缀名的影响。**例如?file=1.txt,1.txt中的php代码也会被解析。

      攻击思路

      1. 配合文件上传进行获取webshell。上传图片(带有脚本后门),包含这个文件,脚本代码就会被执行;
      2. 利用php伪协议直接读取文件或者直接执行php代码;
      3. 配合日志文件进行获取webshell。日志文件记录访问者UA信息,修改UA信息为后门代码,包含就会触发后门代码;
      4. 配合会话文件进行获取webshell。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      黑盒测试中,当URL中出现?x=文件名,修改为文件路径测试文件包含漏洞。

      文件包含分类

      本地包含(LFI)和远程包含(RFI)的区别:一个只能包含本地文件,一个可以远程加载文件(可以使用php伪协议中的http://和https://协议)。具体形成原因是由代码和环境配置文件决定。在php中可以通过配置php.ini文件来禁止远程文件包含,allow_url_fopen=On和allow_url_include=On。

      远程文件包含示例:?file=http://www.baidu.com,使用http://和https://协议加载百度。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,方法,网站,第6张
      (图片来源网络,侵删)
      1. 在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。
      2. php伪协议资料:php伪协议、php伪协议

      session

      linux下,默认保存session的文件路径/tmp或/var/lib/php/session;Windows下session文件的路径不固定。

      关于session,只要你与一个网站建立连接,网站某个文件夹下就会产生session文件,关闭浏览器或者过了一段时间,session就会失效,再次建立连接的话就会产生新的session文件。

      服务器端的session文件命名如下,尝试简单爆破是几乎不可能的。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      实际上,数据包中的cookie中有个PHPSESSID的值,服务端将sess_与PHPSESSID的值进行拼接,就是当前会话session的文件名。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,方法,网站,第9张
      (图片来源网络,侵删)

      如何通过session文件进行文件包含?(以php为例)

      利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含,简单来说,上传一个文件名为PHP_SESSION_UPLOAD_PROGRESS的文件,服务器将使用sess_和这个数据包的cookie字段的PHPSESSID生成一个session文件,session文件的文件内容就是。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      注意:php中session.upload_progress.cleanup默认是开启的,这个东西一旦开启,就是说当文件上传结束后,php将会立即清空对应session文件中的内容。要用到条件竞争写入后门文件,防止上传的后门代码直接失效。浅谈 SESSION_UPLOAD_PROGRESS 的利用

      PHP伪协议进行文件包含

      在包含文件的时候,通常include('conn/'.$file),也就是给你固定到一个目录下,这时候使用..进行跳转,?file=../../xxx。但是使用伪协议的时候就会使得php伪协议失效。因此,要想使用php伪协议,文件包含代码必须为include($file)。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      除此之外,不同的协议,需要开不同的开关。如http://和https://协议:

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      填充垃圾字符,绕过文件后缀。

      42、WEB攻防——通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

      参考:文件包含截断的3种方法


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1567人围观)

还没有评论,来说两句吧...

目录[+]