WEB通用漏洞-文件包含
WEB通用漏洞-文件包含
原理
文件包含从本质上说就是代码共享。将公共的功能存入到一个文件中,当使用这个功能时,就将这个文件进行包含,从而可以调用实现该功能的函数。
对于文件包含来说,包含这个文件,相当于这个文件内的代码被执行(具体语言具体分析,php是这样的)。
那么,如果攻击者可以自由的变换所包含的文件,那么这就形成了文件包含漏洞。(可控变量)
分类
本地包含(LFI)和远程包含(RFI)的区别
一个只能包含本地文件,一个可以远程加载文件。
具体的形成原因由代码和环境配置文件决定。
利用思路
一篇文章:https://www.cnblogs.com/echoDetected/p/13976405.html
文件包含,即包含一个文件,这个文件有后门代码,就可以shell连上去。
这个文件哪里来?
- 可以通过文件上传获取,上传的文件在服务器上。
- 没有文件上传,借助日志写入(UA),session文件写入
配合文件上传
配合文件上传进行getshell,图片带有脚本后门代码,包含这个图片,脚本代码就会被触发。
配合日志文件
配合日志文件进行getshell,日志会记录访问UA信息,修改UA信息为后门代码,包含这个日志,就会触发这个脚本代码。
配合会话文件
配合会话文件(Session)进行getshell。当服务端采用Session认证时,会将会话存储在服务器中。那么,我们可以将后门写在Session文件中,之后通过包含这个session文件,就可以达到代码执行的效果。
这里有个问题:如何获取session文件的名称?这里可以通过抓包,查看cookie字段值,通过sessionID的值来进行获取(或者可以将其修改,修改后生成的session文件名以你修改的值为准)。这样的话就获取了session文件的名称。(这个特性需要具体语言具体分析,php是这样的)
利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含。
我们可以写一个这样的表单:
<!DOCTYPE html>
<html>
<body>
<form action="http://e113b1bc-28b8-4f08-9e60-b74fe3a96ef3.chall.ctf.show/" method="POST" enctype="multipart/form-data">
<!-- 这个地方name为 PHP_SESSION_UPLOAD_PROGRESS,value为你要写入的session文件的内容-->
<input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php system('ls');?>" />
<input type="file" name="file" />
<input type="submit" value="submit" />
</form>
</body>
</html>
这么书写表单之后,通过抓包修改sessionID的值为a,那么就可以创建出:名称为sess_a的内容为<?php system('ls');?>的session文件。
php常见伪协议及相关用法
注:伪协议有一定的缺点:不同语言支持的伪协议不同,即使该语言支持该伪协议,也需要在配置文件中设定才可以。
注:如果在包含文件时,预先设定好了目录,那么伪协议会失效。(具体代码具体分析)
//这种格式会导致伪协议失效。如果直接在x变量中书写伪协议的话
include('files/'.$x.'.php')
伪协议没有上传文件也可以进行php代码执行、读文件、写文件(编码算法的转换)。
注:伪协议常常配合编码解码操作来实现利用(对于伪协议的验证进行绕过)。
常见的编码绕过:
- base64
- rot13(凯撒)
- convert.iconv
这里的内容建议阅读:CTF-Show-文件包含系列
php常见伪协议:
黑盒测试(不太好测试)
主要观察所传递的参数是否类似一个文件名,如果类似,可以尝试其他文件进行包含。如果不是,GG。
白盒测试
- 可通过应用功能追踪代码定位审计
- 可通过脚本特定函数搜索定位审计
- 可通过伪协议玩法绕过相关修复等
致谢
https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click
免责声明
本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!