当前位置: 首页 > news >正文

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安全漏洞分析—文件包含

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

C++入门【9-C++循环】

C 循环 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次…...

Python3 数字(Number) ----20231215

Python3 数字(Number) # Python3 数字(Number)# Python 数字数据类型用于存储数值。 # 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。# 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var2 = 10# 您也可以使用del语句删除一些数…...

PyQt6 QToolBar工具栏控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计44条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐

银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理&#xff0c;完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障&#xff0c;目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…...

EMC RI/CI测试方案助您对抗电磁设备干扰!

方案背景 电磁或射频干扰的敏感性&#xff0c;会给工程师带来重大的风险和安全隐患。尤其是在工业、船用和医疗设备环境。这些环境系统中的控制、导航、监控、通信和警报等关键零部件必须具备电磁抗扰水平&#xff0c;以确保系统始终正常运行。 抗扰系统测试方案一般分为传导…...

【机器学习】数据降维

非负矩阵分解(NMF) sklearn.decomposition.NMF找出两个非负矩阵&#xff0c;即包含所有非负元素(W&#xff0c;H)的矩阵&#xff0c;其乘积近似于非负矩阵x。这种因式分解可用于例如降维、源分离或主题提取。 主成分分析(PCA) sklearn.decomposition.PCA使用数据的奇异值分解…...

vue3路由跳转及传参

1.创建项目及路由 1.1 创建文件时记得勾选上vue-router&#xff0c;没有勾选也没有关系 // vue3安装命令 npm create vuelatest // 以下选项可根据自己所需&#xff0c;进行选择&#xff0c;不懂就翻译 ✔ Project name: … <your-project-name> ✔ Add TypeScript? …...

cesium 自定义贴图,shadertoy移植教程。

1.前言 cesium中提供了一些高级的api&#xff0c;可以自己写一些shader来制作炫酷的效果。 ShaderToy 是一个可以在线编写、测试和分享图形渲染着色器的网站。它提供了一个图形化的编辑器&#xff0c;可以让用户编写基于 WebGL 的 GLSL 着色器代码&#xff0c;并实时预览渲染结…...

引用阿里图标库,不知道对应的图标是什么,可在本地显示图标ui,再也不要担心刚来不知道公司图标对应的是什么了

项目中使用了阿里的图标库&#xff0c;但是无法看到对应显示什么&#xff0c;每次都要去阿里图标库里面找 在下载下来的文件中会发现有两个文件一个是iconfont.css和iconfont.json&#xff0c; 这两个文件的数据可以拿到然后显示在页面上 有两个问题&#xff1a; 1&#xff1a…...

HandlerMethodArgumentResolver用于统一获取当前登录用户

这里记录回顾一些知识&#xff0c;不然就快忘记啦。 环境&#xff1a;SpringBoot 2.0.4.RELEASE需求&#xff1a;很多Controller方法&#xff0c;刚进来要先获取当前登录用户的信息&#xff0c;以便做后续的用户相关操作。准备工作&#xff1a;前端每次请求都传token&#xff0…...

记录 | mac打开终端时报错:login: /opt/homebrew/bin/zsh: No such file or directory [进程已完成]

mac打开终端时报错&#xff1a;login: /opt/homebrew/bin/zsh: No such file or directory [进程已完成]&#xff0c;导致终端没有办法使用的情况 说明 zsh 没有安装或者是安装路径不对 可以看看 /bin 下有没有 zsh&#xff0c;若没有&#xff0c;肯定是有 bash 那就把终端默…...

anolisos8.8安装显卡+CUDA工具+容器运行时支持(containerd/docker)+k8s部署GPU插件

anolisos8.8安装显卡及cuda工具 一、目录 1、测试环境 2、安装显卡驱动 3、安装cuda工具 4、配置容器运行时 5、K8S集群安装nvidia插件 二、测试环境 操作系统&#xff1a;Anolis OS 8.8 内核版本&#xff1a;5.10.134-13.an8.x86_64 显卡安装版本&#xff1a;525.147.05 c…...

Golang 链表的创建和读取 小记

文章目录 链表的相关知识链表的创建:模拟方式建立链表的**递归创建** 链表的读取遍历读取递归读取 完整代码 链表的相关知识 链表有时会具有头节点&#xff0c;头节点的指针指向第一个节点的地址&#xff0c;其本身的数据域可以根据自己的选择进行赋值   接下来我将以将int转…...

实验记录:深度学习模型收敛速度慢有哪些原因

深度学习模型收敛速度慢有哪些原因&#xff1f; 学习率设置不当&#xff1a; 学习率是算法中一个重要的超参数&#xff0c;它控制模型参数在每次迭代中的更新幅度。如果学习率过大&#xff0c;可能会导致模型在训练过程中的振荡&#xff0c;进而影响到收敛速度&#xff1b;如果…...

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在安装并初始化完成后&#xff0c;会有一个主节点&#xff08;Master Node&#xff09;&#xff0c;默认情况下主节点可以同时运行的任务数是2&#xff0c;可以在节点配置中修改&#xff08;系统管理/节点和云管理&#xff09;。 Jenkins中的节点&#…...

华为OD机试 - 高效货运(Java JS Python C)

题目描述 老李是货运公司承运人,老李的货车额定载货重量为 wt。 现有两种货物: 货物 A 单件重量为 wa,单件运费利润为 pa货物 B 单件重量为 wb,单件运费利润为 pb老李每次发车时载货总重量刚好为货车额定的载货重量 wt,车上必须同时有货物 A 和货物 B ,货物A、B不可切割…...

基于python netmiko去ssh备份网络设备配置

自己为了便利写出来的基于python netmiko去ssh备份网络设备配置&#xff0c;用过secureCRT的脚本去备份设备配置&#xff0c;但是它没有图形化界面&#xff0c;使用不方便&#xff0c;自己就重新用python开发了一个&#xff0c;同时用pyinstaller打包成可执行程序&#xff08;这…...

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 Slover 部分

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 Slover 部分 概述Solver 在多模态发言人识别中的作用Solver 在多模态发言人识别中的重要性Solver 的工作原理 二次规划二次规划的基本形式二次规划的特点二次规划在多模态发言中的应用 (我的理解) 代码详解数…...

3种完整破解方案深度解析:Beyond Compare 5授权密钥生成技术实现指南

3种完整破解方案深度解析&#xff1a;Beyond Compare 5授权密钥生成技术实现指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen BCompare_Keygen是一个基于Python 3开发的Beyond Compare 5.x版…...

《软件工程实务》课程学习心得:从理论到实践的蜕变之旅

《软件工程实务》课程学习心得&#xff1a;从理论到实践的敏捷蜕变 关键词&#xff1a;软件工程、敏捷开发、Scrum、微服务、DevOps、Codeup、能源管理系统 可在该链接内学习相关内容&#xff1a; https://www.bilibili.com/ 一、写在前面 本学期我修读了《软件工程实务》课程&…...

Node.js 与前端 JavaScript 的区别:不止运行环境,底层完全不一样

很多开发者误以为 Node.js 和浏览器 JavaScript 只是运行地方不同、语法一样&#xff0c;实际二者虽共用 ECMAScript 语法规范&#xff0c;但在全局对象、API 能力、DOM/BOM、模块系统、事件循环、系统权限、应用场景等方面存在本质差异。本文从技术底层全面对比&#xff0c;帮…...

别再手动画图了!用Python ASE + Matplotlib一键生成高质量材料结构图(附完整代码)

科研绘图革命&#xff1a;用Python ASEMatplotlib实现材料结构可视化自动化 深夜的实验室里&#xff0c;屏幕荧光映照着一张疲惫的脸——这可能是许多材料科学研究者共同的记忆。当你在论文截稿日前夕&#xff0c;还在反复调整VESTA中的原子位置、尝试各种角度截图时&#xff0…...

PostgreSQL17高级特性实战

PostgreSQL 17 高级特性实战:JSON 增强、增量备份与逻辑复制深度指南 🐘 PostgreSQL 17 是 2024 年最重要的数据库版本更新之一——JSON 能力大幅增强、备份恢复效率翻倍、逻辑复制全面升级。本文带你深入每个新特性的实战用法。 📌 前言 PostgreSQL 一直是「最先进」的开…...

2026公考培训机构综合评测:粉笔教育领跑,线上线下一体化成关键优势

【评测说明】 2026年公考培训市场持续分化&#xff0c;考生在选择机构时&#xff0c;不再只看“名师”或“价格”&#xff0c;而是综合考量上榜概率、资金安全、学习便捷性。本文从上岸数据可验证性、性价比、退费效率、师资体系稳定性、线上线下覆盖能力五大维度&#xff0c;对…...

从手机拍照到工业质检:聊聊自适应白平衡算法在实际项目里的那些‘坑’

从手机拍照到工业质检&#xff1a;自适应白平衡算法的实战避坑指南 在工业视觉检测线上&#xff0c;一台价值百万的自动化设备突然频繁误判产品颜色——原因竟是车间顶灯老化导致色温偏移&#xff0c;而算法团队引以为傲的"完美反射"白平衡模型完全失效。类似场景每天…...

【Amazon Quick 桌面 AI 助手初体验】把重复造轮子的活交给 Quick 大显身手

&#x1faaa; 本文作者&#xff1a;许业宝 ✍️ 作者信息&#xff1a; &#x1f31e; VSTECS云解决方案架构师 &#xff5c; AWS APN Ambassador &#xff5c; &#x1faaa; AWS Community Builder | 亚马逊云科技技能云博主 | UGL ⭐ 已获得 AWS 认证大满贯&#xff08;13 个…...

【2024最新版】ElevenLabs有声书生产流水线:1个API Key+3个Python脚本+2个FFmpeg指令=日更10小时高质量音频

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs有声书生产流水线全景概览 ElevenLabs 的有声书生产流水线是一套融合文本预处理、语音合成、音频后处理与元数据封装的端到端自动化系统&#xff0c;专为高质量、多语种、情感一致的有声内容…...

STM32H7硬件JPEG编码实战:从RGB565到JPEG文件,一个完整项目的避坑记录

STM32H7硬件JPEG编码实战&#xff1a;从RGB565到JPEG文件的完整避坑指南 在嵌入式图像处理领域&#xff0c;实时压缩摄像头采集的原始图像数据一直是个挑战。STM32H7系列凭借其内置的硬件JPEG编解码器&#xff08;HJPEG&#xff09;&#xff0c;为开发者提供了高效的解决方案。…...