[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限定文件访问范围

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++11 —— 线程库】

C11 —— 线程库 thread类介绍线程函数参数原子性操作库(atomic)lock_guard与unique_lockmutex的种类lock_guardunique_lock 两个线程交替打印奇偶数 thread类介绍 在C11之前&#xff0c;涉及到多线程的问题&#xff0c;都是和平台相关的&#xff0c;比如windows和Linux下各有…

AI 时代程序员的应变之道

一、AI 浪潮来袭&#xff0c;编程界风云变幻 随着 AIGC 大语言模型如 ChatGPT、Midjourney、Claude 等的涌现&#xff0c;AI 辅助编程工具日益普及&#xff0c;程序员的工作方式正经历着深刻的变革。 分析公司 OReilly 日前发布的《2023 Generative AI in the Enterprise》报告…

【Linux基础】冯诺依曼体系结构操作系统的理解

目录 前言一&#xff0c;冯诺依曼体系1. 为什么有内存结构?2. 对硬件中数据流动的再理解 二&#xff0c;操作系统(Operator System)1. 概念2. 操作系统结构的层状划分3. 操作系统对硬件管理的理解4. 用户与操作系统的关系的理解5. 系统调用和库函数的关系6. 为什么要有操作系统…

策略路由与路由策略的区别

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 一、主体不同 二、方式不同 三、规则不同 四、定义和基本概念 一、主体不同 1、路由策略&#xff1a;是为了改…

android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。

1、先上一个图&#xff1a;这个是keystore无效的原因 之前在安装这个旧版本android studio的时候呢&#xff0c;安装过一版最新的android studio&#xff0c;然后通过模拟器跑过测试的demo。 2、运行旧的项目到模拟器的时候&#xff0c;就报错了&#xff1a; Execution failed…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)

接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径&#xff1a; http://big-event-vue-api-t.itheima.net 本项目的技术栈 本项目技术栈基于 ES6、vue3、pinia、vue-router 、vite 、axios 和 element-plus http:/…

RabbitMQ(高阶使用)死信队列

文章内容是学习过程中的知识总结&#xff0c;如有纰漏&#xff0c;欢迎指正 文章目录 一、什么是死信队列&#xff1f; 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列&#xff1f; 先从概念解释上搞…

idea插件推荐之Cool Request

Cool Request是一款基于IDEA的HTTP调试工具&#xff0c;可以看成是轻量版的postman&#xff0c;它会自动扫描项目代码中所有API路径&#xff0c;按项目分组管理。一个类被定义为Controller且其中的方法被RequestMapping或者XXXMapping注解标注以后就会被扫描到。 对应方法左侧会…

C++中一般指针,指针数组,数组指针

凤凰台上凤凰游&#xff0c;凤去台空江自流。 吴宫花草埋幽径&#xff0c;晋代衣冠成古丘。 三山半落青天外&#xff0c;二水中分白鹭洲。 总为浮云能蔽日&#xff0c;长安不见使人愁。 ——《登金陵凤凰台》【唐】李白 今天是中秋节&#xff0c;小编在这里祝大家学业有成&…

自然语言处理实战项目全解析

自然语言处理&#xff08;NLP&#xff09;作为人工智能领域的重要分支&#xff0c;正日益受到关注。无论是在智能客服、文本分析&#xff0c;还是情感分析等场景&#xff0c;NLP都扮演着至关重要的角色。在这篇博客中&#xff0c;我将分享几个与热门搜索主题贴近的实战项目案例…

ElasticSearch数据类型和分词器

一、数据类型 1、Text &#xff08;文本数据类型&#xff09; 2、Keyword&#xff08;关键字数据类型&#xff09; 3、Alias&#xff08;别名类型&#xff09; 4、Arrays (集合类型) 5、日期类型 6、Numeric &#xff08;数值数据类型&#xff09; 7、Boolean&#xff0…

智能硬件从零开始的设计生产流程

文章目录 市场分析团队组建ID设计结构设计pcba设计软件开发手板EVT开模DVTPVTMP 智能硬件研发是一个复杂的过程, 当然一件事要发出萌芽必须得有人, 有一天,几个合伙人凑在一起,说一起开发个智能硬件产品吧,于是故事开始了. 市场分析 合伙人: 万物互联的时代, 智能音箱已经成为…

Docker和K8S

Docker技术可以将生成的镜像&#xff0c;在docker容器中运行。Build Once Run Anywhere K8s是对容器集群进行管理协调的工具 一个K8S集群 有一个master节点和多个node节点 master节点里面有 1、etcd&#xff1a;文件保存集群各个节点的状态数据&#xff0c;配置数据等。使用raf…

递归10小题

注&#xff1a;操作数字的数组均为int [ ]型&#xff0c;操作字符串均为char [ ]型 下面的10个问题很常见&#xff0c;在这里都是用递归解决的。涉及到数组的问题&#xff0c;需要有指针的知识。 1.求1到n的和 int getSum(int n)//求1到n的和 {if(n1){return 1;}return ngetS…

LDR6020,单C口OTG,充放一体新潮流!

PD&#xff08;Power Delivery&#xff09;芯片实现单Type-C接口输入和输出OTG&#xff08;On-The-Go&#xff09;功能&#xff0c;主要是通过支持USB Power Delivery规范和OTG功能的特定硬件和软件设计来实现的。以下是对这一过程的具体解释&#xff1a; 一、PD芯片基础功能 …

c++ gtsam/geometry/Pose3.h详细介绍

gtsam/geometry/Pose3.h 是 GTSAM 库中的一个头文件&#xff0c;定义了 Pose3 类。Pose3 用于表示三维空间中的位姿&#xff08;即位置和姿态&#xff09;&#xff0c;它是处理和表示三维空间变换的核心类之一。以下是对 Pose3 类的详细介绍&#xff1a; Pose3 类概述 Pose3 …

Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)

前言 我在上一篇文章中《Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用&#xff08;text2sql&#xff09;》 利用langchain 中create_sql_agent 创建一个数据库代理智能体&#xff0c;但是实测中发现&#xff0c;使用 create_sql_agent 在对话中&#x…

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

七、垃圾收集器ParNewCMS与底层三色标记算法详解

文章目录 垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法 垃圾收集器1.1 Serial收集器(-XX:UseSerialGC -XX:UseSerialOldGC)1.2 Parallel Scavenge收集器(-XX:UseParallelGC(年轻代),-XX:UseParallelOldGC(老年代))1.3 ParNew收集器(-XX:UseParNewGC)1.4 C…

RNN股票预测(Pytorch版)

任务&#xff1a;基于zgpa_train.csv数据,建立RNN模型,预测股价 1.完成数据预处理&#xff0c;将序列数据转化为可用于RNN输入的数据 2.对新数据zgpa_test.csv进行预测&#xff0c;可视化结果 3.存储预测结果&#xff0c;并观察局部预测结果 备注&#xff1a;模型结构&#xff…