「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解

引言:什么是路径遍历?如何进行路径遍历攻击并规避常见防御?如何防止路径遍历漏洞。

1. 简介

路径遍历(Path Traversal)是一种安全漏洞,也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确验证用户提供的文件路径时,允许攻击者访问系统上的敏感文件或目录,甚至执行恶意代码。

2. 产生根因

路径遍历攻击通常利用应用程序对用户输入的路径或文件名的不充分验证(如包含跳转符../)。攻击者可以通过在文件路径中添加特殊字符或符号来尝试访问超出其授权范围的文件或目录。攻击者可能会利用此漏洞来获取敏感信息、执行任意代码或破坏系统的完整性。

在这里插入图片描述
上图中可以看到文件路径中包含了"../../etc/passwd",且网站应用未对其作校验,导致了服务器的敏感文件直接泄露给攻击者。

3. 攻击面

  • 用户指定文件名;
  • 能够使用绝对路径或相对路径等形式来指定其他目录的文件名;
  • 未充分校验是否允许访问拼接后的文件名;

4. 主要危害

  • 任意用户可访问系统敏感文件,泄露重要信息;
  • 推断服务器目录结构,便于后续攻击;
  • 篡改或删除Web服务器中的文件,如删除文件来让服务器空宕机、篡改脚本文件来控制服务器或篡改网页内容,诱导用户访问恶意网站

5. 防御方法

以下是一些常见的路径遍历攻击防御措施和防范方法:

  1. 输入验证和过滤:应用程序应该对用户提供的输入进行严格的验证和过滤,以确保输入的路径或文件名只包含预期的字符和结构。可以使用白名单验证来限制输入的字符集,并删除或转义可能导致路径遍历的特殊字符,如目录跳转符../、~/,字符截断符%00、dir命令

  2. 使用安全的文件操作函数:在处理文件和路径时,应使用安全的文件操作函数,如绝对路径而不是相对路径,以确保访问的文件或目录是预期的。避免使用可被滥用的函数,如"../"".."

  3. 限制访问权限:确保应用程序的文件和目录权限设置正确,只允许授权用户或进程访问需要的文件和目录。避免对公共目录或敏感文件设置过宽松的权限。

  4. 沙盒环境:将应用程序运行在沙盒环境中,以限制其访问系统资源和文件的能力。这可以减轻路径遍历攻击的潜在影响。

  5. 安全编程实践:采用安全编程实践,如使用安全的开发框架、库和工具,进行代码审查(避免通过异常信息将内部错误信息泄露)和漏洞扫描,以及及时修复已知的安全漏洞。

综上所述,防止路径遍历漏洞的关键是进行严格的输入验证和过滤,使用安全的文件操作函数,限制访问权限,运行在沙盒环境中,并采用安全的编程实践。这些措施可以降低路径遍历攻击的风险,并提高应用程序的安全性。

6. 参考

[1] https://portswigger.net/web-security/file-path-traversal


推荐阅读:
「 典型安全漏洞系列 」05.XML外部实体注入XXE详解
「 典型安全漏洞系列 」04.服务器端请求伪造SSRF详解
「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解
「 典型安全漏洞系列 」02.SQL注入详解
「 典型安全漏洞系列 」01.跨站脚本攻击XSS详解

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

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

相关文章

mysql生成最近24小时整点/最近30天/最近12个月时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

搭建《幻兽帕鲁》服务器需要怎样配置的云服务器?

随着《幻兽帕鲁》这款游戏的日益流行,越来越多的玩家希望能够在自己的服务器上体验这款游戏。然而,搭建一个稳定、高效的游戏服务器需要仔细的规划和配置。本文将分享搭建《幻兽帕鲁》服务器所需的配置及搭建步骤,助力大家获得更加畅快的游戏…

搭建k8s集群实战(一)系统设置

1、架构及服务 Kubernetes作为容器集群系统,通过健康检查重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。 …

树的学习day01

树的理解 树是一种递归形式的调用 树是由于多个结点组成的有限集合T 树中有且仅有一个结点称为根 当结点大于1的时候,往往其余的结点为m个互不相交的有限个集合T1,…,Tm,每个互不相交的有限集合本身右是一棵树,称为这个根的子树 空树也是树 关…

选现货白银投资划不划算?

可以肯定的是选择现货白银投资是划算的,但投资者需要有足够的知识和经验,以及对市场的敏锐观察力。只有这样,投资者才能在现货白银投资中获取收益。在投资市场上,白银作为一种特殊的投资品种,一直以来都备受投资者们的…

JUC-CAS

1. CAS概述 CAS(Compare ans swap/set) 比较并交换,实现并发的一种底层技术。它将预期的值和内存中的值比较,如果相同,就更新内存中的值。如果不匹配,一直重试(自旋)。Java.util.concurrent.atomic包下的原…

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化…

【51单片机】点亮第一个LED灯

目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制…

数据库查询练习

数据准备 #建学生信息表student create table student ( sno varchar(20) not null primary key, sname varchar(20) not null, ssex varchar(20) not null, sbirthday datetime, class varchar(20) ); #建立教师表 create table teacher ( tno varchar(20) not null primary…

仿真机器人-深度学习CV和激光雷达感知(项目2)day04【简单例程】

文章目录 前言简单例程运行小海龟仿真启动节点查看计算图发布 Topic调用 Serviece 用 Python 发布和接收 Topic创建工作空间创建功能包,编译编写 Topic Publisher 节点编写 Topic Subscriber 节点运行节点 自定义消息类型用 Python 注册和调用 Serviece新建功能包在…

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类…

鸿蒙开发案例002

1、目标需求 界面有增大字体按钮,每次点击增大字体按钮,“Hello ArkTS”都会变大 2、源代码 Entry Component struct Page {textValue: string Hello ArkTSState textSize: number 50myClick():void{this.textSize 4}build() {Row() {Column() {//…

stm32 FOC 电机介绍

今年开始学习foc控制无刷电机,这几天把所学整理一下,记录一下知识内容。 前言: 为什么要学习FOC? 1.电机控制是自动化控制领域重要一环。 2.目前直流无刷电机应用越来越广泛,如无人机、机械臂、云台、仿生机器人等等。 需要什么基础&…

基于Springboot的大学生心理健康管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的大学生心理健康管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体…

MySQL安装及可视化工具SQLyog下载

编程如画,我是panda! 最近学习Web开发的时候要用到数据库,一开始下载的ZIP版本的,还得修改配置文件,挺麻烦的,后来发现可以直接使用msi版的安装包疯狂next,所以就出一期教程。 前言 MySQL 是一…

Database__进阶

文章目录 😊 作者:Lion J 💖 主页: https://blog.csdn.net/weixin_69252724?spm1000.2115.3001.5343 🎉 主题: 数据库mysql(高级部分) ⏱️ 创作时间:2024年01月24…

TortoiseSVN源码安装与迁移全攻略

一、前言 随着版本控制系统的普及,越来越多的开发者和团队开始使用SVN(Subversion)来管理代码。本文将详细介绍TortoiseSVN的源码安装及迁移过程,帮助您轻松掌握这一版本控制工具。 二、TortoiseSVN源码安装 依赖环境安装&…

thymeleaf常用语法大全

有时候需要借鉴别人的代码,发现一个相似的功能点,但是自己的是html页面别人的是jsp页面,那如果不了解thymeleaf的话还是要费点功夫的。 什么是thymeleaf,通俗点,jsp中的${},以及jstl中的if标签什么的都不能用&#xf…

使用 LlamaIndex 部署本地 Mistral-7b 大模型实现 RAG

原理 LlamaIndex的文档链接:Using LLMs - LlamaIndex 🦙 0.9.33 LlamaIndex 的一般使用模式如下: 加载文档(手动或通过数据加载器)将文档解析为节点构建索引(来自节点或文档)(可选,高级&…

2024年 IT 行业就业情况能否回春?很多人说道…

我只能说可以,以前我是看不到的。但是鸿蒙全栈自研让我重新看到希望! 2024年1月18日,华为鸿蒙千帆启航发布会。讲到HarmonyOS NEXT作为原生鸿蒙,其系统底座全栈自研,去掉了传统的AOSP 代码(“Android 开放…