【网络安全的神秘世界】目录遍历漏洞

news2024/9/21 17:22:14

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具

先来了解两个概念:

身份认证:验证用户或者系统身份的过程,确保他们所声明的身份是真实的

访问控制:判断该用户是否被允许执行或访问所请求的资源

常见的访问控制漏洞有 ”水平越权、垂直越权、未授权访问、目录遍历“ 四种

  • 水平越权:同级别用户之间的越权
  • 垂直越权:普通用户能拥有管理员用户的权限
  • 未授权访问:原本应该登陆后才能访问到的资源 ,在不登陆的情况下也可以直接访问
  • 目录遍历:…没做好过滤

一、概述

1.1 漏洞介绍

目录遍历(Directory traversal),也称文件路径遍历、目录穿越、路径穿越等。是由于网站本身存在配置缺陷,导致网站目录可以被任意浏览,从而使得攻击者可以访问到原本不具备权限访问的内容,造成信息泄露,为攻击者实施进一步的网络入侵提供帮

1.2 漏洞原理

一般来说,网站会有对服务器文件进行读取查看的功能,大多会用到提交的参数来指明文件名,比如:

# test.jpg是本身存在于服务器上的

http://www.magedu.com/getfile=test.jpg

当服务器处理传送过来的test.jpg文件名时,会自动添加完整路径,比如:

c://site/hack/test.jpg

随后将读取到的内容返回给用户

初看,这只是文件交互的一种简单的过程,但是由于用户输入的文件名可以任意更改且服务器支持“~/”、“…/”等目录跳转符,而网站在实现上又没有过滤用户输入的目录跳转符,从而导致攻击者可以拼接路径来遍历服务器上的目录或者文件,造成目录遍历漏洞

在文件名中添加 ..\

http://www.magedu.com/getfile=..\..\..\windows\win.ini

服务器再次处理传送过来的 ..\..\..\windows\win.ini 文件名,自动添加完整路径

c://site/hack/..\..\..\windows\win.ini

读取到windows操作系统的配置文件

1.3 文件包含和目录遍历的区别

  • 从技术层面上看:文件包含漏洞是通过include、require、read等函数把文件读取到当前路径内并进行加载和解析,而且目录遍历漏洞则是中间件配置不完善引发的问题,可以读取查看,一般不具备解析功能
  • 从URL表现来看:文件包含中url = 后面的内容通常是文件名,而目录遍历中url = 后面的内容不一定是文件名,也有可能是路径
  • 从内容表现来看:文件包含造成的信息泄露,泄露的信息是展示在HTML中,而目录遍历引发的泄露可能是泄露文件自身
  • 从攻击效果来看:文件包含可以实现Getshell,目录遍历则是造成信息泄露

二、如何发现目录遍历漏洞

关于目录遍历漏洞,主要有两种测试方式:手工测试和使用自动化扫描器

2.1 手工测试

  • 可能存在目录遍历漏洞的业务场景:尝试寻找对服务器的文件有读取查看的功能点,比如文件上传和导入、文件下载和导出、文件删除、文件解压、加载图片等

    #存在关键字,和文件包含关键字一样
    
    ?page/file=
    
  • 直接访问网站的各种目录(不加文件名和参数),如果以非HTML文件的形式显示了该目录下的文件或者目录信息,证明存在该漏洞

    在这里插入图片描述

2.2 自动化扫描

主流web漏洞扫描工具都支持目录遍历漏洞的自动化测试,比如AWVS、DirBuster等

三、常见的绕过

3.1 绝对路径绕过

应用程序禁用了目录跳转符如 ../ ,直接换成绝对路径即可实现绕过

../../../etc/passwd ===> /etc/passwd

3.2 双写绕过

应用程序通过正则匹配目录跳转符然后清除,但是仅清楚一次,所以利用双写即可实现绕过

../../../etc/passwd ===> ..././..././..././etc/passwd

3.3 编码绕过

应用程序通过正则匹配 / 然后清除,可以对斜杠 / 进行URL编码变成 %2f ,避免被匹配到,即可实现绕过。但是这种绕过方法有使用前提,编码后的 %2f 到了后端会再进行一次解码,还原成斜杠 / 本身

../../../etc/passwd ===> ..%2f..%2f..%2fetc%2fpasswd

3.4 加密参数绕过

应用程序对文件名加密后再提交,比如:downfile.php?filename=bWFnZWR1LmpwZw==,在参数filename使用base64加密,而攻击者想要绕过,只需要将构造好的路径文件进行base64加密后再附加提交即可

所以说应用程序采用一些有规律或者轻易识别的加密方式,也是存在风险的

../../../etc/passwd ===> Li4vLi4vLi4vZXRjL3Bhc3N3ZA==

3.5 预期路径绕过

应用程序仅检测路径的开头部分是否预期路径,如果是则允许通过

起始预期路径+相对路径的方法进行绕过

../../../etc/passwd ===> /var/www/html/../../../etc/passwd

3.6 00截断绕过

应用程序在读取前,会对提交的文件后缀名进行检测,可以通过在文件名后放一个空字节编码(%00)来绕过文件类型检测

../../../etc/passwd ===> ../../../etc/passwd%00.jpg

四、pikachu演示

4.1 源码分析

在这里插入图片描述

如上图,代码的逻辑是从Get请求中提取title参数作为$filename的值,然后使用require语句加载 $filename并执行,这一过程没有进行任何过滤从而导致目录遍历漏洞的产生

因为用到了require(),所以既可以做文件包含也可以目录遍历

4.2 漏洞演示

http://pikachu/vul/dir/dir_list.php?title=..\..\..\windows\win.ini

在这里插入图片描述

五、防御方法

  • 输入验证与过滤:检查输入中是否包含特殊字符或路径分隔符,并拒绝包含不可信内容的输入

  • 白名单:限制允许访问的文件或目录,预先定义路径

  • 安全文件路径处理:在构造文件路径时,避免直接拼接用户提供的输入。建议使用安全的文件路径处理函数或库

  • 权限控制:确保文件的访问权限设置正则

  • 安全编程实践:开发人员应遵循安全编程实践,并对用户输入进行充分的验证、过滤和转义。不可信的用户输入应该被视为潜在的目录遍历攻击

    目前常见的存在目录遍历漏洞的中间件及其修复方式如下:

    IIS 
    关闭目录浏览功能,在IIS的网站属性中,勾去“目录浏览”选项,重启IIS
    
    Apache
    关闭目录浏览功能,打开Apache配置文件http.conf,查找“Options IndexesFollSymLinks",修改为”Options -IndexesFollSymLinks"(减号表示取消),保存并退出,重启Apache
    
    Nginx
    默认不开启目录浏览功能,若发现开启了该功能,可以编辑nginx.conf文件,删除如下两行:
    autoindex on;
    autoindex exact size on;
    重启Nginx
    

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

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

相关文章

UE 禁用运行模式下的引擎内置按键

找到对应引擎版本安装目录下的BaseInput.ini文件,打开并修改

YoloV8改进策略:BackBone改进|Swin Transformer赋能YoloV8,性能跃升的新篇章

摘要 在深度学习领域,目标检测作为计算机视觉的核心任务之一,其性能的提升始终吸引着研究者们的目光。近期,我们创新性地将Swin Transformer这一前沿的Transformer架构引入到YoloV8目标检测模型中,通过替换其原有的主干网络,实现了检测性能的显著提升,为YoloV8系列模型注…

.Net网络通信组件 - TouchSocket

文章目录 .Net网络通信组件 - TouchSocket1、新建.Net8控制台项目2、Nuget安装TouchSocket组件3、编写服务端代码4、编写客户端代码5、编写Program代码6、运行效果7、日志组件(NLog)参考我的另一篇博客 .Net网络通信组件 - TouchSocket 1、新建.Net8控制…

网络安全学习路线,史上最全网络安全学习路线整理

很多小伙伴在网上搜索网络安全时,会出来网络安全工程师这样一个职位,它的范围很广,只要是与网络安全挂钩的技术人员都算网络安全工程师,一些小伙伴就有疑问了,网络安全现在真的很火吗? 那么无涯就带大家看…

《高等代数》范德蒙德行列式(应用)

说明:此文章用于本人复习巩固,如果也能帮助到大家那就更加有意义了。 注:1)此题中的行列式是缺失了一行的范德蒙德行列式,解题思路是将其与范德蒙德行列式进行对比,我们将其添上一行和一列补成范德蒙德行列…

解决SPI1在发送和接收8位数据时出现接收不同步的问题

STM32G474的SPI1工作在主机模式,将SPI1_MISO和SPI1_MOSI连接一起,实现自发自收测试。但是在“使用8位数据自发自收时”时,发现接收数据不是同步的。虽然SPI1初始化正确,但是还需要对SPI1_DR寄存器进行强制转换,否则&am…

2024年网络安全人才发展报告一览

前不久,由信通院、工业和信息化部教育与考试中心、中国网络空间新兴技术安全创新论坛等单位联合发布了《2024网络安全产业人才发展报告》,长达87页的调研报告深度剖析了目前中国网络安全产业人才供需、分布、就业等现状,这里,星尘…

C++ 第三讲:内存管理

C 第三讲:内存管理 1.C内存分布2.内存管理方式2.1C语言内存管理方式2.2C内存管理方式2.2.1new\delete操作内置类型2.2.2new\delete操作自定义类型 3.operator new与operator delete函数4.new和delete实现原理4.1内置类型4.2自定义类型 5.定位new5.1内存池的基本了解…

基于Java的学生档案管理系统的设计与实现

基于springbootvue实现的学生档案管理系统 (源码L文ppt)4-065 第4章 系统设计 4.1 总体功能设计 学生档案管理系统的总体功能设计包括学生信息管理、课程管理、教师信息管理、成绩管理和系统配置管理。系统将提供用户友好的界面,支…

【网络】传输层协议TCP

TCP协议 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP在IP(Internet Protocol,互联网协议)网络层上提供…

【Linux】—— muduo网络库的安装配置与使用

muduo网络库编程 Linux环境下Epollpthread线程库 Boost库安装与使用 安装Boost库 下载boost库源码,linux环境解压 tar -zxvf boost_1_69_0.tar.gz 解压完成后,进入该目录,查看内容 运行bootstrap.sh工程编译构建程序 ./bootstrap.sh …

javascript-代码执行原理

js 是解释型语言 js 引擎执行流程 分为两个阶段: 语法分析执行阶段执行阶段涉及的数据结构: 调用栈。处理执行上下文和执行代码内存堆。给对象分配内存任务队列。暂存待执行的任务,分为宏任务队列和微任务队列语法分析 词法分析 > 语法分析 > 代码生成(字节码) …

封装svg图片

前言 项目中有大量svg图片,为了方便引入,所以对svg进行了处理 一、svg是什么? svg是可缩放矢量图形,是一种图片格式 二、使用步骤 1.创建icons文件夹 将icons文件夹放进src中,并创建一个svg文件夹和index.js&…

深入探索迭代器模式的原理与应用

🎯 设计模式专栏,持续更新中 欢迎订阅:JAVA实现设计模式 🛠️ 希望小伙伴们一键三连,有问题私信都会回复,或者在评论区直接发言 迭代器模式 💻 迭代器模式 (Iterator Pattern) 是一种行为设计模…

【LeetCode】每日一题 2024_9_19 最长的字母序连续子字符串的长度(字符串,双指针)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:坐上公交的最晚时间 代码与解题思路 func longestContinuousSubstring(s string) (ans int) { // 题目要求: 最长 的 字母序连续子字符串 的长度// 双指针,start …

【学习笔记】线段树分裂

前言 有线段树合并就应该有线段树分裂。它是线段树合并的逆过程。具体的,你需要以权值线段树中第 k 小的数为分界线,把线段树分成两半。 算法流程 和线段树上二分类似。假设原来的线段树为 u,要分裂出线段树 v 记左子树的权值为 val。如果…

CodeMeter助力软件授权与IP保护,保障工业自动化与物联网安全

随着工业自动化的飞速发展,Hilscher的开放工业4.0联盟(OI4)旗舰店应运而生,将应用商店模式引入工业领域。凭借CodeMeter授权和加密技术的支持,该商店为工业用户提供了一个安全且开放的应用程序和解决方案平台。该平台不…

超声波清洗机哪个品牌好用又实惠?精选业内四款优质清洗机推荐

超声波清洗机作为一种创新的清洁解决方案,凭借其深入微观的清洁效能、简便的操作方式以及对物品的细腻呵护,正逐渐成为广受喜爱的清洁良品。不过,市面上品牌林立、型号多样,价格亦波动不一,这无疑为消费者选购时平添了…

ATT&CK靶机实战系列之vulnstack2

声明: 本文章只是用于网络安全交流与学习,若学者用学到的东西做一些与网络安全不相关的事情,结果均与本人无关!!! 靶场环境: 使用kali作为hacker的攻击机器,来对web pc dc进行攻击。 这里声明一下: 关于…

Cesium billboard 自定义shader实现描边效果

Cesium billboard 自定义shader实现描边效果 uniform sampler2D u_atlas;uniform vec2 dimensions;in vec2 v_textureCoordinates;in vec4 v_pickColor;in vec4 v_color;in float v_splitDirection;void main(){if (v_splitDirection < 0.0 && gl_FragCoord.x > …