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文件


相关文章:
Web安全漏洞分析—文件包含
在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…...
C++入门【9-C++循环】
C 循环 有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次…...
Python3 数字(Number) ----20231215
Python3 数字(Number) # Python3 数字(Number)# Python 数字数据类型用于存储数值。 # 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。# 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var2 = 10# 您也可以使用del语句删除一些数…...
PyQt6 QToolBar工具栏控件
锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计44条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...
nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐
银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理,完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障,目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…...
EMC RI/CI测试方案助您对抗电磁设备干扰!
方案背景 电磁或射频干扰的敏感性,会给工程师带来重大的风险和安全隐患。尤其是在工业、船用和医疗设备环境。这些环境系统中的控制、导航、监控、通信和警报等关键零部件必须具备电磁抗扰水平,以确保系统始终正常运行。 抗扰系统测试方案一般分为传导…...
【机器学习】数据降维
非负矩阵分解(NMF) sklearn.decomposition.NMF找出两个非负矩阵,即包含所有非负元素(W,H)的矩阵,其乘积近似于非负矩阵x。这种因式分解可用于例如降维、源分离或主题提取。 主成分分析(PCA) sklearn.decomposition.PCA使用数据的奇异值分解…...
vue3路由跳转及传参
1.创建项目及路由 1.1 创建文件时记得勾选上vue-router,没有勾选也没有关系 // vue3安装命令 npm create vuelatest // 以下选项可根据自己所需,进行选择,不懂就翻译 ✔ Project name: … <your-project-name> ✔ Add TypeScript? …...
cesium 自定义贴图,shadertoy移植教程。
1.前言 cesium中提供了一些高级的api,可以自己写一些shader来制作炫酷的效果。 ShaderToy 是一个可以在线编写、测试和分享图形渲染着色器的网站。它提供了一个图形化的编辑器,可以让用户编写基于 WebGL 的 GLSL 着色器代码,并实时预览渲染结…...
引用阿里图标库,不知道对应的图标是什么,可在本地显示图标ui,再也不要担心刚来不知道公司图标对应的是什么了
项目中使用了阿里的图标库,但是无法看到对应显示什么,每次都要去阿里图标库里面找 在下载下来的文件中会发现有两个文件一个是iconfont.css和iconfont.json, 这两个文件的数据可以拿到然后显示在页面上 有两个问题: 1:…...
HandlerMethodArgumentResolver用于统一获取当前登录用户
这里记录回顾一些知识,不然就快忘记啦。 环境:SpringBoot 2.0.4.RELEASE需求:很多Controller方法,刚进来要先获取当前登录用户的信息,以便做后续的用户相关操作。准备工作:前端每次请求都传token࿰…...
记录 | mac打开终端时报错:login: /opt/homebrew/bin/zsh: No such file or directory [进程已完成]
mac打开终端时报错:login: /opt/homebrew/bin/zsh: No such file or directory [进程已完成],导致终端没有办法使用的情况 说明 zsh 没有安装或者是安装路径不对 可以看看 /bin 下有没有 zsh,若没有,肯定是有 bash 那就把终端默…...
anolisos8.8安装显卡+CUDA工具+容器运行时支持(containerd/docker)+k8s部署GPU插件
anolisos8.8安装显卡及cuda工具 一、目录 1、测试环境 2、安装显卡驱动 3、安装cuda工具 4、配置容器运行时 5、K8S集群安装nvidia插件 二、测试环境 操作系统:Anolis OS 8.8 内核版本:5.10.134-13.an8.x86_64 显卡安装版本:525.147.05 c…...
Golang 链表的创建和读取 小记
文章目录 链表的相关知识链表的创建:模拟方式建立链表的**递归创建** 链表的读取遍历读取递归读取 完整代码 链表的相关知识 链表有时会具有头节点,头节点的指针指向第一个节点的地址,其本身的数据域可以根据自己的选择进行赋值 接下来我将以将int转…...
实验记录:深度学习模型收敛速度慢有哪些原因
深度学习模型收敛速度慢有哪些原因? 学习率设置不当: 学习率是算法中一个重要的超参数,它控制模型参数在每次迭代中的更新幅度。如果学习率过大,可能会导致模型在训练过程中的振荡,进而影响到收敛速度;如果…...
Arris VAP2500 list_mac_address未授权RCE漏洞复现
0x01 产品简介 Arris VAP2500是美国Arris集团公司的一款无线接入器产品。 0x02 漏洞概述 Arris VAP2500 list_mac_address接口处命令执行漏洞,未授权的攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环境 FOFA…...
【Jenkins】节点 node、凭据 credentials、任务 job
一、节点 node Jenkins在安装并初始化完成后,会有一个主节点(Master Node),默认情况下主节点可以同时运行的任务数是2,可以在节点配置中修改(系统管理/节点和云管理)。 Jenkins中的节点&#…...
华为OD机试 - 高效货运(Java JS Python C)
题目描述 老李是货运公司承运人,老李的货车额定载货重量为 wt。 现有两种货物: 货物 A 单件重量为 wa,单件运费利润为 pa货物 B 单件重量为 wb,单件运费利润为 pb老李每次发车时载货总重量刚好为货车额定的载货重量 wt,车上必须同时有货物 A 和货物 B ,货物A、B不可切割…...
基于python netmiko去ssh备份网络设备配置
自己为了便利写出来的基于python netmiko去ssh备份网络设备配置,用过secureCRT的脚本去备份设备配置,但是它没有图形化界面,使用不方便,自己就重新用python开发了一个,同时用pyinstaller打包成可执行程序(这…...
【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 Slover 部分
【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 Slover 部分 概述Solver 在多模态发言人识别中的作用Solver 在多模态发言人识别中的重要性Solver 的工作原理 二次规划二次规划的基本形式二次规划的特点二次规划在多模态发言中的应用 (我的理解) 代码详解数…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
