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

网安-文件包含

目录

文件包含

文件包含漏洞

文件包含漏洞分类

本地文件包含漏洞(LIF):

远程文件包含漏洞(RLF):

PHP中常见的包含文件的函数

文件包含漏洞挖掘

文件包含漏洞的危害

包含漏洞读取敏感文件

Unix/Linux系统

Windows系统

CVE典型案例

本地文件包含漏洞利用技巧

PHP伪协议

PHP 支持的伪协议

php://filter

PHP伪协议

修复防范


文件包含

程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时直接调用此文件,无需再次编写,这种调用文件的过程一般被称为文件包含。
1.一种是包含内容
2.一种是包含函数

文件包含漏洞

随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校验或者校验被绕过就造成了文件包含漏洞。

文件包含漏洞分类

本地文件包含漏洞(LIF):

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

远程文件包含漏洞(RLF):

本地文件包含和远程文件包含造成漏洞的原因是一样的,当php.ini 中的配置选项allow_url_fopen和allow_url_include(默认是关闭的)为ON的话,则包含的文件可以是第三方服务器中的文件,这样就形成了远程文件包含漏洞。

PHP中常见的包含文件的函数

include:当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来发生错误时之给出一个警告,继续向下执行。
include_once:功能与Include()相同,区别在于当重复调用同一文件时,程序只调用一次。
require:require()与include()的区别在于require( )执行如果发生错误,函数会输出错误信息。
require_once:功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。

文件包含漏洞挖掘

文件包含在URL中能够明显的看出来,但是不代表含有这些特征就一定有文件包含漏洞。只不过有这些特征可以进行判断是存在文件包含的,但是能不能利用是另一方面。

http://www.xxx.com/index.php/?name=x.php
http://www.xxx.com/index.php/?file=index2

文件包含漏洞的危害

1.PHP包含漏洞结合上传漏洞
2.读文件
3.写文件

 

包含漏洞读取敏感文件

Unix/Linux系统

/etc/passwd
/usr/local/app/apache2/conf/httpd.conf //apache2默认配置文件
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/my.cnf //MySQL配置文件

Windows系统

C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件
C:\windows\repair\sam //存储Windows系统初始安装密码
C:\boot.ini //查看系统版本

CVE典型案例

CVE-2018-12613 PHPMyAdmin后台 任意文件包含漏洞


本地文件包含漏洞利用技巧

1.配合文件上传使用:有时候不到文件上传漏洞,无法上传webshell,可以先上传一个图片格式的webshell到服务器,再利用本地文件包含漏洞进行解析。
2.包含Apache日志文件:有时候网站存在文件包含漏洞,但是却没有文件上传点。这个时候还可以通过利用Apache的日志文件来生成一句话木马

利用条件:

对日志文件可读
知道日志文件存储目录、

PHP伪协议

PHP伪协议(PHP Protocol Override)是一种在PHP处理数据时,通过替换数据报的头部信息来欺骗网络协议的方式来提高性能的技术。

PHP 支持的伪协议

file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
phar:// — PHP 归档
rar:// — RAR
ogg:// — 音频流
ssh2:// — Secure Shell 2

php://filter

是一种元封装器,这个伪协议提供了对数据流进行过滤的能力,可以对输入数据进行编码、解码、加密、解密等各种操作。

php://filter 用于读取源码
php://input 用于执行php代码

 

 

 

PHP伪协议


# 编码读取
index.php?file1=php://filter/read=convert.base64- encode/resource=flag.php


php:input
php://input 可以访问请求的原始数据的只读流,将 post 请求的数据当作php代码执行

http://127.0.0.1/include.php?file=php://input[POST DATA部分]<?php fputs(fopen('juran.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

修复防范

1.数据输入验证
对用户提交的文件路径参数进行严格的格式检查和白名单策略,只允许包含预定义的、安全的文件路径禁止包含绝对路径,转而使用相对路径,并且确保相对路径不会超出预期的目录范围。
2.禁用危险函数或配置
如果不是必须,尽量避免使用容易导致文件包含漏洞的函数,如PHP中的allow_url_include配置项应设为Off以禁用远程文件包含在php.ini配置文件中,可以设置open_basedir限制PHP脚本只能访问指定目录及其子目录下的文件。
3.使用安全函数
使用更安全的函数替代易出问题的文件包含函数,例如在PHP中,可以使用readfile()配合自定义的文件路径处理逻辑来代替include()。
4.错误处理与日志记录
正确处理文件包含失败的情况,不要暴露过多的错误信息,以免给攻击者提供有用的信息记录详细的日志,以便在发生异常时追溯分析问题。

 

http://www.dtcms.com/a/288760.html

相关文章:

  • Eureka+LoadBalancer实现服务注册与发现
  • WiFiMouseServer手机等作为远程输入
  • Web-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • 【Python数据采集】Python爬取小红书搜索关键词下面的所有笔记的内容、点赞数量、评论数量等数据,绘制词云图、词频分析、数据分析
  • 基于Transformer的智能对话系统:FastAPI后端与Streamlit前端实现
  • 敏捷开发的历史演进:从先驱实践到全域敏捷(1950s-2025)
  • CSS 单位完全指南:掌握 em、rem、vh、vw 等响应式布局核心单位
  • SpringBoot热部署与配置技巧
  • 从修图到特效:Pillow库的Python图像处理高级实战指南
  • kafka--基础知识点--5.4--max.in.flight.requests.per.connection
  • 《计算机网络》实验报告五 DNS协议分析与测量
  • 网络(HTTP)
  • QT无边框窗口
  • 分享如何在Window系统的云服务器上部署网站及域名解析+SSL
  • kotlin 扩展函数 在链式调用的妙用
  • LINUX入门(二)QT的安装及运行环境搭建
  • jmeter如何做自动化接口测试?
  • 元宇宙经济的四个特征
  • Spring Boot中REST与gRPC并存架构设计与性能优化实践指南
  • Dify 1.6 安装与踩坑记录(Docker 方式)
  • LeetCode 198 打家劫舍 LeetCode 213.打家劫舍II
  • 华为开源自研AI框架昇思MindSpore应用案例:基于ERNIE模型实现对话情绪识别
  • [Python] -项目实战4- 利用Python进行Excel批量处理
  • 基于pyside6的通用机器人遥控控制界面
  • client-go: k8s选主
  • JAVA面试宝典 -《容灾设计:异地多活架构实践》
  • go-redis Pipeline 与事务
  • 民法学学习笔记(个人向) Part.1
  • 如何应对“躺平”文化对项目的冲击
  • 生物化学笔记:安全防护 射频和微波辐射防护 电磁辐射与防护 生物电磁学