「 典型安全漏洞系列 」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…

在浏览器输入一个url,浏览器会发生什么?

文章目录 在浏览器输入一个URL后,浏览器会经历以下主要的步骤: 1、URL解析: 浏览器首先会解析输入的URL,包括协议(比如http)、域名、端口、路径和查询参数等。 2、DNS解析: 如果输入的是域名而…

创作活动(九十三)———ChatGPT 和文心一言哪个更好用?

#ChatGPT 和文心一言哪个更好用?# 根据提供的搜索结果,ChatGPT和文心一言各有特点和优势,选择哪一个更好用取决于具体的应用场景和个人需求。以下是两者的对比: ChatGPT: 适用场景:适合需要生成大量知识性…

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

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

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

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

树的学习day01

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

【Docker】Docker学习② - Docker安装及基础命令介绍

【Docker】Docker学习② - Docker安装及基础命令介绍 一、Docker简介二、Docker安装及基础命令介绍1. Docker安装验证2. Docker存储引擎3 Docker服务进程4. Docker镜像加速配置 三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokc…

kafka乱序消费可能的原因和解决方案

Kafka乱序消费可能的原因有以下几个: 分区顺序:Kafka中的消息按照分区进行存储和分发,每个分区内的消息是有序的,但不同分区之间的消息顺序是无法保证的。如果消费者在多个分区上进行并行消费,并且不处理消息的顺序&am…

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

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

javaweb总览

javaweb需要学习哪些技术 前端web开发: 技术描述HTML用于构建网站的基础结构的css用于美化页面的,作用和化妆或者整容作用一样JavaScript实现网页和用户的交互Vue主要用于将数据填充到html页面上的Element主要提供了一些非常美观的组件Nginx一款web服务…

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) 是通用输入输出端口的简称, 可以通过软件来控制…

我的2023年总结:旅行见天地,读书明事理,工作合行知

我的2023年总结 呵,时间过得真快啊! 有多快呢? 像烟花,一瞬间。 一瞬间 就在一瞬间 一场梦 梦了一千年 一转眼 只是一转眼 梦已醒 却过了一千年这是写年总结以来的第四年, 2023年往事回首三个字可概括:恍,荒,慌。 文章目录 我的2023年总结1、往年总结2、旅行如书2.1、…

数据库查询练习

数据准备 #建学生信息表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新建功能包在…

系统架构设计师教程(十四)云原生架构设计理论与实践

云原生架构设计理论与实践 14.1 云原生架构产生背景14.2 云原生架构内涵14.2.1 云原生架构定义14.2.2 云原生架构原则14.2.3 主要架构模式14.2.4 典型的云原生架构反模式14.3 云原生架构相关技术14.3.1 容器技术14.3.2 云原生微服务14.3.3 无服务器技术14.3.4 服务网格14.4 云原…

【Docker】Dokcer学习① - 简介

【Docker】Docker学习① - 简介 一、Docker简介1. Docker是什么2. Docker组成3. Docker对比虚拟机4. Linux Namespace技术5. Linux control groups6. 容器管理工具 二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Dock…

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

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

NumPy必知必会50例 | 2. 数组索引和切片:探索 NumPy 数组的秘密

文章目录 2. 数组索引和切片:探索 NumPy 数组的秘密数组索引:抓住您所需的元素一维数组索引多维数组索引 数组切片:选择您想要的一部分一维数组切片多维数组切片 切片的高级用法下一步 2. 数组索引和切片:探索 NumPy 数组的秘密 …