【BP靶场portswigger-服务端3】目录遍历漏洞-6个实验(全)

news2024/10/2 6:38:38

目录

一、目录遍历

1、意义

二、通过目录遍历阅读任意文件

1、示例

        实验1:文件路径遍历(简单)

三、利用文件路径遍历漏洞的常见障碍

1、对于../等的限制

        实验2:文件路径遍历(用绝对路径旁路阻止遍历序列)

2、嵌套遍历序列

        实验3:文件路径遍历(非递归地剥离遍历序列)

3、编码绕过

        实验4:文件路径遍历(用多余的URL解码剥离遍历序列)

4、基文件夹开头

        实验5:文件路径遍历(验证路径起始)

5、文件扩展名固定

        实验6:文件路径遍历(空字节旁路验证文件扩展名)

四、如何防止目录遍历攻击


一、目录遍历

1、意义

1、目录遍历(也称为文件路径遍历)是一个Web安全漏洞,使得攻击者能够读取运行应用程序的服务器上的任意文件(包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件)

——

2、在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器



二、通过目录遍历阅读任意文件

1、示例

1、销售商品图像的购物应用程序:
图像通过HTML加载,如
<img src="/loadImage?filename=218.png">


该loadImage图像URL采用filename参数并返回指定文件的内容

映像文件本身存储在磁盘上的位置/var/www/images/。为返回映像,应用程序将请求的文件名附加到此基目录,并使用文件系统API读取文件的内容。

文件路径:/var/www/images/218.png


 

2、攻击者:

如果应用程序未对目录遍历进行防御,请求以下URL,从服务器的文件系统中检索任意文件: 
https://insecure-website.com/loadImage?filename=../../../etc/passwd

这将导致应用程序从以下文件路径读取:
/var/www/images/../../../etc/passwd
(../表示向上一级目录)

Unix的操作系统上:  ../
Windows:         ../ and ..\ 都是有效的目录遍历序列

系统文件:
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini

涉及实验:

实验1:文件路径遍历(简单)

实验1:文件路径遍历(简单)

信息:

需要我们检索/etc/passwd的内容


part1:

随便点开一个博客

(同时抓包)

第三个数据包就带有filename参数进行检索内容,修改filename参数


part2:

发送到repeater进行分析

../../../etc/passwd

检索出了密码

在拦截的数据包中修改后取消拦截

 



三、利用文件路径遍历漏洞的常见障碍

1、对于../等的限制

1、将用户输入放置到文件路径中的应用程序实现了某种类型的防御路径遍历攻击,而这些攻击通常可以被绕过

————

2、如果应用程序从用户提供的文件名中剥离或阻止目录遍历序列,那么就有可能使用各种技术绕过防御

如,使用文件系统根目录的绝对路径(filename=/etc/passwd)直接引用文件,而不使用任何遍历序列。

————

涉及实验:

实验2:文件路径遍历(用绝对路径旁路阻止遍历序列)

实验2:文件路径遍历(用绝对路径旁路阻止遍历序列)

信息:

绝对路径/etc/passwd


part1:

点击一个博客

 第三个数据包的filename参数


part2:

发到repeater

题目提示的绝对路径/etc/passwd

账号密码回显

 修改数据包,并关闭拦截

 


2、嵌套遍历序列

如....// or ....\/ ,当内部序列被剥离时(过滤一遍),它将恢复为简单的遍历序列

————

涉及实验:

实验3:文件路径遍历(非递归地剥离遍历序列)

实验3:文件路径遍历(非递归地剥离遍历序列)

信息:

还是告诉了/etc/passwd


part1:

拦截到第三个数据包


part2:

发送到repeater

使用嵌套遍历....//....//....//etc/passwd

数据包修改,并关闭拦截

 


3、编码绕过

1、除去遍历序列:在某些上下文中,如在URL路径或filename的参数multipart/form-data请求时,Web服务器可能会在将输入传递到应用程序之前去除任何目录遍历序列。

2、编码绕过:有时可以通过URL编码或甚至双URL编码来绕过这种清理,../ 字符,一次编码%2e%2e%2f、二次编码%252e%252e%252f。各种非标准编码,如..%c0%af或..%ef%bc%8f,也可能起到作用

3、工具:BP Intruder提供了一个预定义的负载列表(将GitHub或自己收集的特殊编码导入,观察哪些可以使用),其中包含各种可供尝试的编码路径遍历序列。 


涉及实验:

实验4:文件路径遍历(用多余的URL解码剥离遍历序列)

实验4:文件路径遍历(用多余的URL解码剥离遍历序列)

信息:

还是告诉了/etc/passwd


part1:

拦截到第三个数据包


part2:

发送到repeater

URL编码一次

URL编码二次

 使用编码绕过..%252f..%252f..%252fetc/passwd

 

数据包修改,并关闭拦截

 


4、基文件夹开头

要求用户提供的文件名必须以预期的基文件夹开头

如,/var/www/images

需要包括基本文件夹,加上遍历序列:

filename=/var/www/images/../../../etc/passwd


涉及实验:

实验5:文件路径遍历(验证路径起始)

实验5:文件路径遍历(验证路径起始)

信息:

还是告诉了/etc/passwd


part1:

拦截到第四个数据包


part2:

发送到repeater

带基路径的遍历/var/www/images/../../../etc/passwd

数据包修改,并关闭拦截

 


5、文件扩展名固定

应用程序要求用户提供的文件名必须以预期的文件扩展名(如.png)结尾,则可以使用空字节在所需扩展名之前有效地终止文件路径,如

filename=../../../etc/passwd%00.png(实战中可能得考虑更多办法,如在hex中改为%0a换行截断等方法)


涉及实验:

实验6:文件路径遍历(空字节旁路验证文件扩展名)

实验6:文件路径遍历(空字节旁路验证文件扩展名)

信息:

还是告诉了/etc/passwd


part1:

拦截到第三个数据包


part2:

发送到repeater

直接上路径,可能没什么有用报错信息

就得结合场景自己尝试了(原文件为图片,就可能会检测后缀,如果是上传,就可能还会检测文件类型了)

带上图片的后缀,并空字节截断后缀

../../../etc/passwd%00.png

数据包修改,并关闭拦截

 



四、如何防止目录遍历攻击

1、防止文件路径遍历漏洞的最有效方法是完全避免将用户提供的输入传递给文件系统API。许多执行此操作的应用程序函数可以重写,以便以更安全的方式提供相同的行为。


2、如果认为将用户提供的输入传递给文件系统API是不可避免的,那么应该同时使用两层防御来防止攻击:

————

(2)白名单(输入前):应用程序应该在处理用户输入之前对其进行验证。理想情况下,验证应该与允许值的白名单进行比较。如果对于所需的功能来说这是不可能的,那么验证应该验证输入是否只包含允许的内容,比如纯字母数字字符。

————

(2)符合路径规范(输入后):验证提供的输入后,应用程序应将输入附加到基目录,并使用平台文件系统API规范化路径。应用程序应验证规范化路径是否从预期的基目录开始。

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

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

相关文章

相距两千多公里,仅仅数月,从相亲走到结婚 | 2022年复盘日记

&#x1f468;‍&#x1f393;作者&#xff1a;bug菌 &#x1f389;简介&#xff1a;CSDN、掘金等社区优质创作者&#xff0c;全网合计7w粉&#xff0c;对一切技术都感兴趣&#xff0c;重心偏Java方向&#xff0c;目前运营公众号「猿圈奇妙屋」&#xff0c;欢迎小伙伴们的加入&…

制造型企业如何利用WMS系统在大环境中取胜

如今数字化转型已经成为制造型企业高质量高发展的重要手段&#xff0c;越来越多的企业开始加大对数字化转型的投入来提升竞争力。例如&#xff1a;有些企业会上线WMS系统来搭建自己的数字化仓库管理平台&#xff0c;实现仓库业务的自动化和数字化升级。随着制造企业市场规模的不…

基于Xlinx的时序分析与约束(6)----如何读懂vivado下的时序报告?

写在前面 在《基于Xlinx的时序分析与约束&#xff08;3&#xff09;----基础概念&#xff08;下&#xff09;》文章中写了一些时序分析的基础概念&#xff0c;同时还说了文章中提到的公式根本就不需要记忆&#xff0c;因为综合工具vivado会帮你把所有时序路径都做详尽的分析&am…

Springboot延伸之自定义Banner

前言 前几周陆陆续续花了5万多字写了我读到的Springboot启动过程的源码&#xff0c;收获颇多&#xff0c;其中给自己留了扩展的作业。我们每次启动Springboot的时候&#xff0c;都有一个Spring的Banner&#xff0c;读源码的过程中可以得知我们可以自定义属于自己的Banner&…

领域驱动设计

DDD的代码结构_ronshi的博客-CSDN博客_ddd代码结构 DDD( 领域驱动设计)概念来源于2004年著名建模专家eric evans的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名&#xff1a;领域驱动设计—软件核心复杂性应对之道)。 DDD领域驱动设…

全流量安全分析为IT运维提供高效保障(二)

前言 某高校信息中心老师反应&#xff0c;用户反馈教务系统有访问慢的情况&#xff0c;需要通过流量分析系统来了解系统的运行情况&#xff0c;此报告专门针对系统的性能数据做了分析。 前一章做了系统功能模块分析和整体流量分析&#xff0c;本章将进行异常分析、其他信息发…

【Linux】C语言缓冲区、缓冲区的实现

目录 一、C语言缓冲区 1.1 什么是缓冲区 1.2 缓冲区刷新 1.3 问题解释 1.4 stdout与stderr 1.5 perror的实现 二、模拟实现缓冲区 2.1 接口展示 2.2 函数实现 2.3 测试与源代码 一、C语言缓冲区 1.1 什么是缓冲区 缓冲区本质是一块C语言提供的内存空间&#xff0c…

边缘计算网关的应用有哪些

边缘计算网关&#xff08;又叫物联网边缘计算网关&#xff09;&#xff0c;简称 Edge-Gateway&#xff0c;是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关&#xff0c;可以在无需联网的情况实现设备的本地联动以及数据处理分析。 其具备接口丰富&…

无线蓝牙耳机什么牌子的好?好的无线蓝牙耳机推荐

无线蓝牙耳机因为携带更便捷&#xff0c;连接也越来越迅速而受到了不少用户的喜爱。在目前的耳机市场中&#xff0c;蓝牙耳机所占的比例越来越高&#xff0c;无线蓝牙耳机牌子也逐渐增多。那么&#xff0c;什么牌子的无线蓝牙耳机好&#xff1f;下面&#xff0c;我给大家盘点了…

迁移学习的 PyTorch 实现

什么是迁移学习&#xff1f;迁移学习是一种用于机器学习的技术&#xff0c;它使用预先训练好的模型来创建新的模型。这可以减少新创建模型所需的训练时间&#xff0c;因为它将继承以前学习的特性&#xff0c;这也将提高其准确性。但是迁移学习能带来多大的不同呢&#xff1f;为…

销售促单话术

销售过程中&#xff0c;销售不仅可以运用一些销售技巧来吸引客户的兴趣&#xff0c;也可以通过一些话术来获得客户的认同。 ​ 前言 销售过程中&#xff0c;销售不仅可以运用一些销售技巧来吸引客户的兴趣&#xff0c;也可以通过一些话术来获得客户的认同。很多销售一定遇到过…

【观察】全面赋能汽车行业数字化转型,亚马逊云科技的决心与诚意

毫无疑问&#xff0c;新一轮科技革命正在驱动整个汽车产业发生颠覆性的重大变革&#xff0c;传统的行业游戏规则也将在数字化时代被改写&#xff0c;而未来以电动化、智能化、互联化、共享化为特征的“新四化”&#xff0c;也正在成为整个汽车产业技术创新和商业模式进化的新方…

一文带你走进Python文件操作

Py文件操作 一: """ 1.找到这个文件,双击打开 ​ open(文件路径,mode"",encoding"") mode>读/写 encoding>文件的编码集是什么 ​文件路径:1.绝对路径d:Tools/Tool/python/a.txt 不安全2.相对路径相对于当前你的程序所在的文件夹…

回首来时路,未来皆坦途.......

不觉间&#xff0c;又到了年末&#xff0c;这一年似乎并没有什么特别的经历和值得一提的业绩&#xff0c;就是这样平淡的过着每一天&#xff0c;这大概就是普通人的人生吧..... 今年最大的改变就是跨行业成长&#xff0c;从事了售前工程师的工作&#xff0c;由于之前并没有相关…

20221230英语学习

今日单词 agreeable adj.惬意的&#xff0c;宜人的&#xff1b;可接受的&#xff0c;适合的&#xff1b;欣然同意的 gleam v.发微光&#xff1b;闪烁&#xff1b;隐约闪光&#xff1b;&#xff08;在眼中&#xff09;闪现&#xff1b;表露 hypothesis n.[复数hypotheses] 假…

CSS3 filter滤镜

filter 顾名思义就是过滤的意思 使用 filter属性为元素(常用于<img>)带来视觉的效果 filter描述none默认值&#xff0c;没有效果。blur(px)给图像设置模糊效果。默认是0&#xff1b;这个参数可设置css长度值&#xff0c;但不接受百分比值。brightness(%)调整图像的对比…

main 方法演示 spring 注解方式获取 bean

文章目录一、环境准备1、创建 Java 工程&#xff0c;引入 spring 相关 jar 包2、构建 path二、开发1、准备一个 User 类2、编写配置类 BeanConfig3、编写测试类 SpringTest4、验证结果本文章使用 JavaSE 方式&#xff0c;创建含有 main 方法的类&#xff0c;演示如何用简单的方…

用天翎低代码做办公协同软件,简单高效

编者按&#xff1a;在数字办公流行的现在&#xff0c;办公协同软件是企业必备。本文分析了办公协同软件的作用&#xff0c;并指出了基于低代码平台实现的办公协同软件可以很好地满足企业需求&#xff0c;最后进行了相关案例展示。 关键词&#xff1a;私有化部署&#xff0c;数…

从云原生实战峰会,透视2023年云原生发展趋势

CSDN&#xff1a;如果用两个关键词来总结 2022 年云原生的发展态势&#xff0c;您会有哪些评价&#xff1f;——繁荣和普惠。“繁荣”代表当前云原生的技术和产品蓬勃发展&#xff1b;“普惠”代表云原生技术从互联网走向金融、零售、政企等行业&#xff0c;普惠千行百业构建丰…

MySQL学习笔记(十五)行锁表锁间隙锁临键锁共享锁排他锁死锁

行锁表锁间隙锁临键锁共享锁排他锁死锁手动提交行锁&#xff08;记录锁Record Locks&#xff09;表锁间隙锁&#xff08;Gap Locks&#xff09;临键锁&#xff08;Next-Key Locks&#xff09;共享锁&#xff0c;排他锁死锁查看事物&#xff0c;锁的命令死锁的4个必要条件模拟死…