Web安全漏洞分析—文件包含

  在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对策略。 

       文件包含漏洞通常发生在Web应用程序中,攻击者通过巧妙构造输入,成功绕过系统的安全防护,进而执行恶意代码或读取敏感文件。特别是在PHP等动态语言中,文件包含函数的使用不当可能导致严重后果。

       将以简练而深刻的语言,介绍文件包含漏洞的定义及其对系统安全的威胁。通过具体实例,我们将展示攻击者可能采用的不同手段,以揭示潜在的危害。而为了更全面地了解和应对这一挑战,我们将深入研究防御策略,包括输入验证、白名单控制、关闭不必要的函数等多个层面的解决方案。

一、文件包含漏洞及防御

1、文件包含

1)、概念

把可重复使用的函数写入到单个文件中在使用该函数时,直接调用此文件,无需再次编写函数。这一过程被称为包含

2、PHP文件包含

1)、文件包含函数

①、include0: 找不到被包含文件时会产生警告 (E_WARNING)

②、include_once(): 与include () 类似,代码已经被包含则不会再次包含

③、Require(): 找不到被包含的文件时会产生致命错误 (E_COMPILE_ERROR)

④、require_once(): 与require () 类似,代码已经被包含则不会再次包含

2)、文件包含示例

(3)、文件包含示例2

分别修改phpinfo.txt扩展名为: jpg、rar、360发现均可解析,

只要文件内容符合PHP语法规范,任何扩展名都可以被PHP解析

(4)、远程文件包含

(5)、文件包含漏洞

正常访问页面逻辑:

①、1.html

②、点击标签

③、跳转包含文件

攻击者思路: http://127.0.0.1/include/03/index.php?page=xxx.php

3、PHP文件包含利用

1)、读取敏感文件

http://127.0.0.1/include/03/index.php?page=C: \windows-version.txtWindows系统敏感信息:

C: \boot.ini                    //查看系统版本

C: \windows \system32 \inetsrv \MetaBase.xml               //IIS配置文件

C:\windows \repair\ sam                   //windows初次密码

C: program \Files\ mysql \my.ini       //Mysgl配置

C:\program Files\mysql data mysql\user.MYD\windows \php.ini  //Mysql root C://php配置信息

(2)、读取敏感文件

Linux系统敏感信息:

/etc/passwd                      //linux用户信息

/usr/local/app/apache2/conf/httpd.conf     //apache2配置文件

/usr/local/app/php5/lib/php.ini           //php设置

etc/httpd/conf/httpd.conf           //apache配置文件

etc/my.cnf                       //Mysql配置文件

3)、远程包含shell

allow_url_fopen开启

访问: http://127.0.0.1/include/03/index.php?page=http://127.0.0.1)include/04/1.txt

会在indexphp目录下生成shell.php

(4)、本地包含配合文件上传

已经上传图片木马路径为: /upload/1.png图片代码如下:

会在index.php目录下生成shell.php

访问: http://127.0.0.1/include/03/index.php?page=D: upload\1.png

(5)、使用PHP封装伪协议

PHP 内置有很多内置 URL 风格的封装协议,可用于fopen()、 copy(),file_exists() 和 filesize()的文件系统函数。

(6)、data://命令执行

http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>h ttp : / / 1 2 7 .0 .0 .1 / c m d .

p h p ?file = data : / / te x t /plain;base64,PD9waHAgcGhwaW5mbygpPz4=

(7)、zip://实验

http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/www/file.jpg%23phpcode.txt先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.ipg后在上传,其他几种压缩格式也可以这样操作。

8)、使用PHP封装伪协议

写入PHP文件 (allow_url include:on)http://127.0.0.1/include/03/index.php?page=php://input

9伪协议用法小结

(10)、包含Apache日志文件

①、找到Apache路径,利用保护漏洞包含日志文件获取Webshell。Apache两个日志文件: access.log、error.log

各字段分别为: 客户端地址、访问者标识、访问者的验证名字、请求时间请求类型、状态码、发送给客户端短的字节数

②、当发现网站存在包含漏洞,但无webshell文件包含,也无上传点时?当访问不存在的资源时,apache日志同样会记录。如果访问:127.0.0.1/include/<?php phpinfo0;?>,再包含access.log是否可行?

(11)、截断包含

二、文件包含漏洞实例

1、CVE-2018-12613

1)、漏洞简介

phpMyAdmin是开源的MySQL数据库管理工具,可实现可视化对数据库进行管理受影版本: 4.8.0~4.8.1

index.php界面存在文件包含功能,代码分析进行绕过可实现漏洞利用

(2)、漏洞分析

/index.php第55~63行

(3)、漏洞分析

为了实现文件包含功能,需先通过几个条件判断

①、 target变量不为空;

②、target变量值为字符串;

③、 target变量值不能以'index’开头

④、target变量值不在黑名单中 ;

⑤、调用checkPageValidity函数处理target变量;

4)、/libraries/classes/Core.php    443~476行

(5)、漏洞分析

checkPageValidity 函数中五个条件判断

①、引入$goto_whitelist 白名单 (31行)

②、如果$page变量没有定义或不为字符串则返回false;

③、$page值在白名单中返回true;

④、如果$_page 存在白名单中返回true;

⑤、$page经过ulr解码存在于白名单则返回true;

6)、漏洞利用

Payload: **/index.php?target=db_sql.php%253f/../../../file.txt

注意事项: 

(7)、漏洞利用-getshell方法

①、利用数据库功能写入shell,查询文件位置select @@datadir包含.frm文件

②、利用数据库查询语句将shell写入session文件,包含该session文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

visio打出根号,下标,并调整符号的大小

插入公式对象 打出根号和带下标的字母 调整符号大小 把做好的公式符号弄到visio中的图中 ctrla 复制符号 进入visio中粘贴 并 调整大小 调整大小直接拖动边框上的圆点即可。

【数据结构】八大排序之希尔排序算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.优化直接插入排序算法 我们在之前对直接插入排序算法的优化部分通过对直接插入排序的分析可以得到一个结论,即: 进行直接插入排序的数组,如果越接近局部有序,则后续进行直…

软件设计师——计算机组成原理(三)

&#x1f4d1;前言 本文主要是【计算机组成原理】——软件设计师——计算机组成原理的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

计算机网络:运输层

0 本节主要内容 问题描述 解决思路 1 问题描述 1.1 知识回顾 利用如下拓扑对前面的知识进行回顾。 图1 拓扑图 问题&#xff1a;源主机 H 1 \textrm{H}_1 H1​要和目的主机 H 2 \textrm{H}_2 H2​进行通信&#xff0c;源主机 H 1 \textrm{H}_1 H1​要构建数据包封装来自应…

SQL进阶理论篇(九):为什么不存在完美的索引

文章目录 简介索引片和过滤因子如何通过宽表避免回表什么是过滤因子理想索引设计&#xff1a;三星索引为什么很难存在理想的索引设计&#xff1f;参考文献 简介 本节将主要介绍以下部分&#xff1a; 什么是索引片&#xff0c;什么是过滤因子&#xff1f;设计索引的时候&#…

1847_MOSFET预驱以及作用

Grey 全部学习内容汇总&#xff1a;GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1847_MOSFET预驱以及作用 MO…

5分钟部署你的第一个K8S应用

查看k8s集群信息 kubectl cluster-info查看节点信息 kubectl get node查看内部组件 kubectl get pod -A部署第一个K8S应用-Nginx&#xff0c;并通过公网ip访问 创建deployment&#xff08;Pod控制器的一种, 直接删除pod后&#xff0c;会自动创建新的&#xff0c;需要删除de…

黑马头条--day02.文章列表查看

目录 一.分表 1.导入数据库sql脚本 2.导入实体类 3.分表规则 二.文章列表接口 (1)思路 2)接口定义 3)功能实现 1.1)&#xff1a;导入heima-leadnews-article微服务&#xff0c;资料在当天的文件夹中 1.2)&#xff1a;定义接口 1.3)&#xff1a;编写mapper文件 1.4)&…

Support Vector Machine(SVM)——支持向量机

1.从逻辑回归到SVM 回顾一下逻辑回归的模型 然后经过sigmoid函数得到预测y1的概率&#xff0c;sigmoid函数如下图 对于单个样本来说损失函数如下 当一个输入的真实标签为1时&#xff0c;损失函数就只剩&#xff0c;如左图所示,我们想要让&#xff0c;来使损失函数尽可能的小 对…

重新认识Word——尾注

重新认识Word——尾注 参考文献格式文献自动生成器插入尾注将数字带上方括号将参考文献中的标号改为非上标 多处引用一篇文献多篇文献被一处引用插入尾注有横线怎么删除&#xff1f;删除尾注 前面我们学习了如何给图片&#xff0c;公式自动添加编号&#xff0c;今天我们来看看毕…

【TB作品】51单片机读取重量和液位,OLED显示

代码打开下载&#xff1a; http://dt4.8tupian.net/2/28880a64b6666.pg3这段代码是为微控制器编写的&#xff0c;可能是基于8051架构&#xff0c;使用Keil C51编译器。该代码结合了OLED显示器、超声波距离传感器和基于HX711的称重传感器的功能。以下是主要组件及其功能的详细说…

海洋可视化大屏,Photoshop源文件

数据大屏通过实时的数据展示&#xff0c;可及时发现数据的变化和异常&#xff0c;以便及时采取措施。现分享海洋动力大数据监控、海洋数据监控系统、科技感海洋监控系统大屏模版的UI源文件&#xff0c;供UI设计师们快速获取PSD源文件完成工作 若需更多 大屏组件&#xff0c;请…

1852_bash中的find应用扩展

Grey 全部学习内容汇总&#xff1a; https://github.com/GreyZhang/toolbox 1852_bash中的find应用扩展 find这个工具我用了好多年了&#xff0c;但是是不是真的会用呢&#xff1f;其实不然&#xff0c;否则也不会出现这种总结式的笔记。其实&#xff0c;注意部分小细节之后…

电子学会C/C++编程等级考试2021年09月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:双端队列 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。 时间限制:1000 内存限制:65535输入 第一行输入一个整数t,代表测试数据的组数。 每组数据的…

国内最好的开源MES/免费MES/低代码MES

一、系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES、功能最全的开源MES、好看的数字大屏、开源自动排班系统、开源质检系统。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管…

re:Invent2023大会隆重推出自研芯片Graviton4和Trainium2

目录 一、前言 二、体验Graviton系列产品 &#xff08;一&#xff09;创建普通的EC2实例 &#xff08;二&#xff09;创建Graviton处理器的EC2实例 &#xff08;三&#xff09;远程到服务器 方式1&#xff1a;创建成功时连接 方式2&#xff1a;SSH客户端 方式3&#xff1a;正确…

01--二分查找

一. 初识算法 1.1 什么是算法&#xff1f; 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 不正式的说&#xff0c;算法就是任何定义优良的计算过程&#xff1a;接收一些值作为输入&#xff0c;在有限的时间…

【LeetCode:746. 使用最小花费爬楼梯 | 递归 -> 记忆化搜索 -> DP】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Python基础08-文件操作详解

零、文章目录 Python基础08-文件操作详解 1、文件操作概述 &#xff08;1&#xff09;文件是什么 内存中存放的数据在计算机关机后就会消失。要长久保存数据&#xff0c;就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索&#xff0c;引入了**“文件”**的概念。 …