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

免责声明

    本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
posted @   夏目^_^  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示