[Web安全 网络安全]-文件读取与下载漏洞
文章目录:
一:任意文件读取漏洞
1.定义
2.危害
3.产生原因
4.发现漏洞
5.利用漏洞
6.防范措施
7.读取漏洞举例
二:任意文件下载漏洞
1.定义
2.漏洞利用
3.漏洞挖掘
4.漏洞验证
5.漏洞防御修复
pikachu靶场:是一个网络安全训练平台,旨在模拟真实世界中的网络攻击和防御场景,帮助用户提高网络安全技能和知识
一:任意文件读取漏洞
1.定义
任意文件读取漏洞属于文件操作漏洞的一种,攻击者通过提交特定的输入,可以绕过安全限制,读取服务器上的敏感文件或配置文件这种漏洞通常发生在文件读取函数(如readfile(), file_get_contents(), fopen()等)的使用过程中 当这些函数的输入路径未经过严格校验或校验不严时,攻击者就可以控制这个变量来读取任意文件
2.危害
任意文件读取漏洞的危害极大,它不仅可以泄露网站的结构目录,还可能导致敏感信息(如用户密码、数据库配置文件、系统配置文件等)的泄露这些敏感信息一旦被攻击者获取,就可能被用于进一步的攻击,如密码破解、数据篡改、系统控制等
3.产生原因
1.文件读取函数的输入路径用户可控2.输入路径未经过严格校验或校验不严3.服务器未对文件访问权限进行严格控制
4.发现漏洞
一般可以通过构造特殊的URL请求来尝试触发文件读取漏洞例如,在URL中添加特殊的路径参数(如../或~/),并观察服务器是否返回了非预期的文件内容
5.利用漏洞
1.读取系统配置文件(如/etc/passwd, /etc/shadow等),获取系统用户信息2.读取数据库配置文件(如数据库连接字符串),尝试直接连接数据库3.读取网站源代码或配置文件,寻找其他安全漏洞4.读取日志文件,获取网站访问记录或用户操作记录
6.防范措施
1.对所有输入进行严格的校验和过滤,确保输入路径符合预期2.使用白名单机制来限制可访问的文件类型和路径3.对敏感文件和目录设置严格的访问权限,对所有文件路径输入进行严格的验证和清理4.使用参数化查询或安全的文件操作函数来避免直接拼接用户输入5.定期对网站进行安全审计和漏洞扫描,及时发现并修复安全漏洞6.始终将上传的文件存储在Web根目录之外的安全目录中,禁用或严格限制文件上传功能,如果它们不是必需的7.确保服务器配置正确,以防止符号链接和其他潜在的文件系统攻击8.记录和监控所有文件上传和下载尝试,以便在发生安全事件时进行检测和响应记录和监控所有文件访问尝试,以便在发生安全事件时进行检测和响应9.考虑使用Web应用防火墙(WAF)来增强安全性10.始终使用最新版本的PHP和服务器软件,并应用所有安全补丁
7.读取漏洞举例
假设有一个Web应用程序,它提供了一个文件下载功能,允许用户通过URL参数指定要下载的文件名
<?php $filename = $_GET['file']; // 从URL参数中获取文件名 // 假设有某种简单的安全检查,但不够严格 if (strpos($filename, '..') === false) { // 如果文件名中不包含"..",则认为是安全的 if (file_exists('/path/to/files/' . $filename)) { // 文件存在,则读取并发送给用户 readfile('/path/to/files/' . $filename); } else { echo "文件不存在"; } } else { echo "非法请求"; } ?>
代码审计、漏洞分析
在这个例子中,虽然有一个简单的安全检查来防止路径遍历(即检查文件名中是否包含"..")http://example.com/download.php?file=../../../etc/passwd但这种检查是不充分的,攻击者可以利用:编码、URL编码/百分比编码、符号链接或其他技巧来绕过这种检查URL编码/百分比编码http://example.com/download.php?file=%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswdUnicode编码:假设服务器错误地将Unicode字符U+202E(右至左标记)与文件名处理结合,导致路径解析被逆转http://example.com/download.php?file=a.txt%E2%80%AE..%E2%80%AE..%E2%80%AEetc%E2%80%AEpasswd路径截断http://example.com/download.php?file=a.txt%00../etc/passwd
二:任意文件下载漏洞
1.定义
任意文件下载 实现过程是:根据参数filename的值,获得该文件在网站上的绝对路径,读取文件内容,发生给客户端进行下载任意文件下载漏洞:网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件类型、目录不做限制则恶意用户就能够查看或下载服务器上任意敏感文件,这就是文件查看与下载漏洞本来是指定目录下的下载展示文件,但是我们可以下载目录下页面没有展示的文件 ?filename=downloadfile.png目录穿越漏洞:下载任意目录下的文件 ?filename=../../downloadfile.txt
2.漏洞利用
漏洞利用获取源码(黑盒——>百盒);获得站点与中间件配置文件; 获得应用与系统配置文件(ssh、mysql)针对web应用php:获取inc/config.php获得数据库连接字符串中的口令信息。asp:获取inc/conn.asp文件,获得数据库连接字符串,得到数据库口令。若是ACCESs数据库,可以得到数据库路径,在下载数据库内容aspX获取网站根目录web.config文件,获得数据库连接字符串中的口令信息获取bin/*.dll文件,获取网站源码(不完整代码)。使用.NET reflector工具打开编译后的dll文件jsp获取conf/tomcat-user.xml文件,获得tomcat管理界面的口令信息,上传war包GetShell获取wEB-INF/Web.xml文件,获得数据库连接字符串中的口令信息针对操作系统WindowsC:\boot.ini //查看系统版本C:\WindowslSystem32\inetsrvMetaBase.xml //llS配置文件C:\Windows\repairsam //存储系统初次安装的密码C:\Program Filesimysqlmy.ini //Mysql配置C:Program Filesimysqlldatalmysqlluser.MYD //Mysql rootC:\Windowsiphp.ini //php配置信息C:lWindowsimy.ini //Mysql配置信息C:lWindowslwin.ini //Windows系统的一个基本系统配置文件LinuX/root/.ssh/authorized keys/root/.ssh/id_rsa/root/.ssh/id ras.keystore/root/.ssh/known hosts //记录每个访问计算机用户的公钥/etc/passwd/etc/shadow/etc/my.cnf //mysql配置文件/ctc/httpd/conf/httpd.conf //apachc配置文件/root/.bash_history //用户历史命令记录文件/root/.mysql_history //mysql历史命令记录文件
3.漏洞挖掘
漏洞挖掘1.Google Hacker利用inurl:"readfile.php?file=" //搜索含有关键字的url地址 allinurlintitle:关键字 //把网页标题中某个关键字作为搜索条件 allintitle完全匹配intext:关键字 //把网页正文中某个关键字作为搜索条件 allintext完全匹配关键字 site:网址 //返回域名中所有的url地址filetype:拓展名(不可单独使用) //搜索特点格式的文件.pwI 口令文件.tmp 临时文件.cfg 配置文件.ini 系统文件.hlp 帮助文件.dat 数据文件.log 日志文件.par 交互文件.pdf\.doc\.docx 文档文件.xls\.xlsx\.csv 表格文件.ppt\.pptx 幻灯片文件.zip\.rar\.7z\.iso 压缩文件 cache:网站 //搜索一个网站的缓存运行info:关键字 //搜索指定站点的一些基本信息define //搜索关键字的定义link //查找与关键字做了链接的 URL 地址related:URL //搜索与指定 URL 相关的页面stocks //搜索有关一家公司的股票市场信息insubject //搜索 Google 组的标题行msgid //搜索识别新闻组帖子的Google 组信息标识符和字符串group //搜索 Google 组搜索词汇帖子的题目author //搜索新闻组帖子的作者bphonebook //仅搜索商业电话号码簿 rphonebook //仅搜索住宅电话号码簿phonebook //搜索商业或者住宅电话号码簿daterange //搜索某个日期范围内Google做索引的网页inanchor //搜索一个 HTML 标记中的一个链接的文本表现形式运算符空格 逻辑与操作- 逻辑非操作,如 A-C表示搜索有A但没C的网页OR | 逻辑或,如A OR B表示搜索含有A的网页B的网页和同时含A和B的网页''' 精确搜索用双引号通配符* 代替任意字符串? 代替任意字符~ 代替同义词.. 数字范围 1..4==1,2,3,4其他事项Google 对英文关键字的大小写不敏感Google对出现频率极高的英文单词做忽略处理。如.com i www http等如果要对忽略的关键字进行强制搜索,则需要在该关键字前加上明文的”+”号Google大部分常用英文符号(如问号,句号,逗号等)无法成为搜索关键字,加强制也不行2.从链接上看download.php?path=download.php?file=down.php?file=data.php?filc=readfile.php?fileread.php?filename3.从参数上看&realPath=&filePath=&filepath=&filepath=&path=&path=&inputFile=&Inputfile=&urls=&url=
4.漏洞验证
漏洞验证index.php?f=../../../../../../etc/passwdindex.php?f=../../../../windows/win.iniindex.php?f=../index.php
5.漏洞防御修复
漏洞防御修复1.正则表达式严格判断用户输入参数的格式2.下载路径不可控,而是程序自动生成后保存在数据库中,根据ID进行下载3.过滤.:对参数做严格的过滤,不能进行目录遍历(穿越)4.php.ini配置open basedir限定文件访问范围
相关文章:
[Web安全 网络安全]-文件读取与下载漏洞
文章目录: 一:任意文件读取漏洞 1.定义 2.危害 3.产生原因 4.发现漏洞 5.利用漏洞 6.防范措施 7.读取漏洞举例 二:任意文件下载漏洞 1.定义 2.漏洞利用 3.漏洞挖掘 4.漏洞验证 5.漏洞防御修复 pikachu靶场:是一个…...

2024.9.12(k8s环境搭建2)
一、接9.11 19、部署calico的pod 4. 查看容器和节点状态 异常处理: 出现Init:0/3,查看node节点 /var/log/messages是否有除网络异常之外的报错信息 三台机器执行:(更新版本) yum list kernel yum update kernel reb…...
Redis 字典的哈希函数和 rehash 操作详解
Redis 字典的哈希函数和 rehash 操作详解 在 Redis 中,字典(Hash Table)是一种重要的数据结构,用于存储键值对。下面解释 Redis 字典的哈希函数和 rehash 操作。 一、哈希函数 作用 Redis 的字典使用哈希函数将键转换为一个整数索引,这个索引用于确定键值对在哈希表中的…...

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用
背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…...

Halo 开发者指南——项目运行、构建
准备工作 环境要求 OpenJDK 17 LTSNode.js 20 LTSpnpm 9IntelliJ IDEAGitDocker(可选) 名词解释 工作目录 指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 halo-next 的文件夹,绝对路径为 ~/ha…...

【C++】——list
文章目录 list介绍和使用list注意事项 list模拟实现list和vector的不同 list介绍和使用 在C中,list是一个带头双向链表 list注意事项 迭代器失效 删除元素:当使用迭代器删除一个元素时,指向该元素的迭代器会失效,但是不会影响其他…...

07_Python数据类型_集合
Python的基础数据类型 数值类型:整数、浮点数、复数、布尔字符串容器类型:列表、元祖、字典、集合 集合 集合(set)是Python中一个非常强大的数据类型,它存储的是一组无序且不重复的元素,集合中的元素必须…...

结合人工智能,大数据,物联网等主流技术实现业务流程的闭环整合的名厨亮灶开源了
明厨亮灶视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。AI技术可以24小时…...
vue环境搭建相关介绍
一、路由管理器说明 1.route:译为路由,可以理解为单个路由或者某一个路由。 2.routes:路由集合,可以理解为多个route的集合。 3.router:路由器,可以理解为路由集合的管理者。例如,当我们在页面…...
MyBatis系统学习(四)——MyBatis的关联映射和缓存机制
MyBatis 是一个优秀的持久层框架,它通过 XML 或注解将 Java 对象与 SQL 语句相映射,简化了 JDBC 代码,增强了 SQL 的灵活性。在复杂业务场景中,数据库表之间经常存在一对一、一对多、多对多的关联关系,MyBatis 提供了相…...
【iOS】present和push
【iOS】present和push present和push的比较 present和push都用于iOS的视图切换,并且切换都是可逆的,原始视图不会被销毁,还可以直接更改window的rootViewController来切换视图,但是这种方法不可逆,并且原始视图会被销毁…...

Axure RP 9最新安装程序及汉化包下载(支持Win、Mac版,附下载安装教程)
数月前Axure RP官方已经发布了Axure RP 9的消息,并计划在今年夏天发布beta版本。新版Axure RP 9将是该工具向前迈出的重要一步,其中包括一系列广泛的改进:全面的UI修改,新的设计和文档功能以及前所未有的内部优化。我们已经彻底重…...

k8s环境搭建(续)
查看节点信息并做快照 kubectl get nodes 将components.yml文件上传到master主机 创建nginx,会在添加一个新的pod kubectl run nginx --imagesnginx:latest 查看nginx的pod信息 [rootk8s-master ~]# kubectl get po -Aowide|grep nginx 出现错误,查…...

kali——binwalk的使用
目录 前言 使用方法 分析文件 分离文件 前言 binwalk是一个用于分析、逆向工程和提取固件映像的工具。 binwalk能够分析固件映像文件,识别其中包含的文件。例如,它可以从一个设备固件中提取出压缩文件或图片等嵌入内容。 使用方法 分析文件 binwa…...

Ubuntu 24.04中安装virtualenv
在Ubuntu 24.04中安装virtualenv,可以按照以下步骤进行: 1. 确保Python已安装: 在终端中输入python --version或python3 --version来检查Python的安装情况。 python3 --version2. 安装pip(如果尚未安装)&#x…...

一个简约的uniapp登录界面,基于uniapp+vue3+uview-plus
uniapp-vue3-template 一个简约的uniapp登录界面,基于uniappvue3uview-plus 页面主要包括:用户登录,手机验证码登录,用户注册,重置密码等页面 登录进去后为空白模板 源码在文末 界面 源码 uniapp登录界面源码...
系统架构设计师 需求分析篇二
📘 面向对象分析方法 1. 用例模型 📈 构建用例模型一般需要经历 4 个阶段: 识别参与者 🔍:识别与系统交互的所有事物。合并需求获得用例 🔗:将需求分配给予其相关的参与者。细化用例描述 &am…...

IP 协议分析《实验报告》
目录 一、 实验目的 二、实验设备和环境 三、实验记录 1、实验环境搭建 2、IP 协议分析 1.设置抓包接口 2.IP 报文分析 3.报文长度计算 4.生存时间 TTL 5.分析总结 3、IP分片 1.IP 分片简介 2.捕获分组 3.结果分析 一、 实验目的 1、掌握 IP 协议数据报格式&…...

人工智能开发实战matplotlib库应用基础
内容导读 matplotlib简介绘制直方图绘制撒点图 一、matplotlib简介 matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成高质量的图形。 matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 我们只需几行代码…...
Android 源码集成可卸载 APP
android系统包含三类APP: 1、可自由卸载APP安装在 /data/app目录下。 2、系统APP放在 /system/app目录。 3、特权APP放在 /system/priv-app目录。 系统编译后,打包前, /data分区不起作用,因此系统打包前,可以先将APP全部拷贝到 /…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

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 …...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...