文件包含漏洞

2023-12-05

文件包含漏洞介绍

文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户知道路径的文件,然后将文件包含到当另一个文件里面形式如下;

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=被包含的文件路径
&submit=提交

原理

  • 在通过PHP的相应函数(比如include()) include()等函数通过动态变量的方式引入需要包含的文件,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
  • 本地包含:是包含本地的文件,且传入的文件路径是相对路径
  • 远程包含:默认是不允许的,在php.ini管理php代码的文件里面打开可远程的配置allow_url_include中配置打开即 可。打开这个配置就可以包含远程的文件,也就是绝对路径。

漏洞利用

一.伪协议

对于文件包含在不能包含远程文件的情况下如果不使用为协议直接包含服务器本地文件的话对于查看文件或者获取shell都会比较困难,所以需要灵活的应用php的为协议。

1.php://filter

用于读取文件,并把读取到的文件内容包含到当前页面里面如:

?file=php://filter/read=convert.base64-encode/resource=/flag

这端伪协议的作用是把读取到的内容进行base64加密再被包含到当前文件里面,这样做的目的是防止包含文件的内容有代理被编译了无法容易的查看到

2.php://input

这个伪协议是用于执行当时数据包里 POST 提交的内容,注意是执行一次就没了。并不能保存在当前页面。所以想通过php://input写入木马并不能像如下操作:

这样并不是把木马包含到了当前文件里面,只是简单执行了一下。所以如果想用php://input获取shell,执行的语句必须是写入文件的语句如下:

<?php fputs (fopen("2.php","w"),'<?php eval($_POST[cmd]);?>');?>

当然也可以执行系统命令如下:

<?php system("ls");?>             #这是一类payload是有回显

3.data://伪协议

data://text/plain,hello ctf

上面这句的意思,是把hello ctf这个内容变成txt文件上传到当前目录下。

二.通过包含日志文件利用漏洞

我们访问的网站的内容都会被日志记录下来,那如果我们的数据包中含有一句话木马,通过访问被日志记录下来然后再把日志文件包含到脚本文件里面如php,则可以连接利用。

Nginx中的日志分两种,一种是error.log,一种是access.log。error.log可以配置成任意级别, 默认级别是error,用来记录Nginx运行期间的处理流程相关的信息;access.log指的是访问日志, 用来记录服务器的接入信息(包括记录用户的IP、请求处理时间、浏览器信息等)。

默认nginx日志是:/var/log/nginx/access.log 和 /var/log/nginx/error.log

对于Apache,日志存放路径:/var/log/apache/access.log   

然后包含这个日志文件即可。

但是要记住access.log日志文件中的php代码是不会被解析的,之所以能够执行下列并被成功连接时因为日志里面的php木马被包含在了当前的index.php文件中,所以木马才成功被执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件包含漏洞 的相关文章

随机推荐

  • iOS代码混淆工具

    目录 引言 混淆效果 字符串加密 代码插入 其他混淆选项说明 总结 参考资料 这是一篇介绍iOS代码混淆工具的技术博客 旨在帮助开发者提高代码安全性 本工具来自于Github的混淆词库和代码 通过差异化处理和代码合并生成数亿种用于混淆的单词
  • 栈和队列OJ题——15.循环队列

    15 循环队列 622 设计循环队列 力扣 LeetCode 解题思路 通过一个定长数组实现循环队列 入队 首先要判断队列是否已满 再进行入队的操作 入队操作需要考虑索引循环的问题 当索引越界 需要让它变成最小值 出队 首先要判断队列是否为
  • 长度最小的子数组(Java详解)

    目录 题目描述 题解 思路分析 暴力枚举代码 滑动窗口代码 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 找出该数组中满足其和 target 的长度最小的 连续子数组 numsl numsl 1 numsr 1 nu
  • leetcode:232. 用栈实现队列

    一 题目 原题链接 232 用栈实现队列 力扣 LeetCode 函数原型 typedef struct 我的队列结构定义 MyQueue MyQueue myQueueCreate 我的队列创建及其初始化 void myQueuePush
  • 华为OD机试真题-电脑病毒感染-2023年OD统一考试(C卷)

    题目描述 一个局域网内有很多台电脑 分别标注为0 N 1的数字 相连接的电脑距离不一样 所以感染时间不一样 感染时间用t表示 其中网络内一个电脑被病毒感染 其感染网络内所有的电脑需要最少需要多长时间 如果最后有电脑不会感染 则返回 1 给定
  • 找不到msvcp110.dll如何修复?分享5个亲测有效的修复方法

    在计算机使用过程中 我们经常会遇到一些错误提示 其中之一就是 msvcp110 dll丢失 这个错误通常发生在运行某些程序时 系统无法找到所需的动态链接库文件 那么 msvcp110 dll到底是什么呢 它又有什么作用 当我们遇到这个问题时
  • 【有限窗口RLS算法】【自适应滤波器】与指数窗口和滑动窗口RLS算法相当的复杂度实现具有任意有限长度窗口的RLS算法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 计算机毕业设计:python招聘数据爬取分析可视化系统(BOSS直聘)+Django框架(源码+文档+全套讲解视频)

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 毕业设计 2023 2024年计算机专业毕业设计选题汇总 建议收藏 毕业设计 20
  • REC——命令执行漏洞

    原理 命令执行漏洞是一种常见的安全漏洞 它允许攻击者在受攻击的系统上执行任意的系统命令 这种漏洞的原理通常是 应用程序没有正确地验证和过滤用户输入数据 允许恶意用户可以在输入框等地方注入恶意的系统命令 攻击者可以将恶意的命令附加到应用程序接
  • Jmeter进行压力测试不为人知的秘密

    jmeter是apache公司基于java开发的一款开源压力测试工具 体积小 功能全 使用方便 是一个比较轻量级的测试工具 使用起来非常简单 因为jmeter是java开发的 所以运行的时候必须先要安装jdk才可以 jmeter是免安装的
  • 华为OD机试真题-最长子字符串的长度(一)-2023年OD统一考试(C卷)

    题目描述 给你一个字符串 s 字符串s首尾相连成一个环形 请你在环中找出 o 字符出现了偶数次最长子字符串的长度 输入描述 输入是一串小写字母组成的字符串 输出描述 输出是一个整数 补充说明 1 lt s length lt 5 x 10
  • 【UI自动化测试】Jenkins配置

    前一段时间帮助团队搭建了UI自动化环境 这里将Jenkins环境的一些配置分享给大家 背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测
  • 栈和队列的OJ题——14.用栈实现队列

    14 用栈实现队列 232 用栈实现队列 力扣 LeetCode 解题思路 此题可以用两个栈实现 一个栈进行入队操作 另一个栈进行出队操作 出队操作 当出队的栈不为空是 直接进行出栈操作 如果为空 需要把入队的栈元素全部导入到出队的栈 然后
  • 青藏高原对中国来说到底有多重要?

    青藏高原对中国来说到底有多重要 这个问题涉及到多个方面 包括地理 历史 文化 政治和经济等 在这篇文章中 我们将从不同的角度探讨青藏高原的重要性 首先 从地理角度来看 青藏高原是中国乃至全世界最年轻 最高 最大 最具特色的高原之一 它位于中
  • 基于GWO-BP灰狼算法优化BP神经网络多维回归预测(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文档讲解
  • 一文讲透Python线程池ThreadPoolExecutor!

    01 初识 Python 中已经有了 threading 模块 为什么还需要线程池呢 线程池又是什么东西呢 在介绍线程同步的信号量机制的时候 举得例子是爬虫的例子 需要控制同时爬取的线程数 例子中创建了20个线程 而同时只允许3个线程在运行
  • 无惧代码错误,从unittest开始的单元测试之旅!

    前言 单元测试 Unit Testing 是根据特定的输入数据 针对 程序模块 输出的正确性进行验证的工作 这些程序模块包括 单个程序 函数 类 我们在实现一个程序时不能仅仅实现功能方面的端到端调试 仅仅是能够从数据输入到数据输出能够实现贯
  • HTTPS 之fiddler抓包--jmeter请求

    一 浅谈HTTPS 我们都知道HTTP并非是安全传输 在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的 目前越来越多的企业选择使用HTTPS协议与用户进行通信 如百度 谷歌等 HTTPS在传输数据之前需要客户端 浏览
  • 光储并网直流微电网simulink仿真模型

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现
  • 文件包含漏洞

    文件包含漏洞介绍 文件包含漏洞也是一种注入型漏洞 其本质就是输入一段用户知道路径的文件 然后将文件包含到当另一个文件里面形式如下 http 127 0 0 1 pikachu master vul fileinclude fi local