简介:
目录穿越(又称目录遍历diretory traversal/path traversal)是通过目录控制序列 ../ 或者文件绝对路径来访问存储在文件系统上的任意文件和目录的一种漏洞。
原理:
web应用对于url请求没有进行合理的审查与过滤,导致构造目录控制序列直接传入文件系统apl。
危害:
对于存在该漏洞且文件权限没有严格控制的文件系统,攻击者可以肆意的浏览敏感系统文件、配置文件及日志文件等。
常见攻击手法:
- Url参数:../(父级目录,js) ..\(父级目录,php + dev css)
- Nginx off by Slash:https://xxx.xx.com/files../
- UNC Bypass(通用命名规范Universal Naming Convention):\localhost\c$\windows\win.ini
常用绕过手段:
- 单次替换(双写):....//
- url编码:.(%2c) /(%2f) \(%5c) %(%25)
- 截断绕过(特定文件限制防御时使用):%00
练习实践:
环境:burpsuite官网提供的靶场:Web Security Academy: Free Online Training from PortSwigger
第一关:
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。
目标:为解决实验室,检索/ etc / passwd文件的内容。
根据提示随机打开一个产品信息:
F12搜集有用的页面信息,按照官方给的提示,寻找有关图片的信息
根据信息构造url,或者右击图片打开图片的完整显示,这里我们就可以用前面说到的攻击手法进行测试了
修改url后面部分,改为绝对路径filename=/etc/passwd 发现行不通
采用目录序列控制符:../ 构造路径filename=../etc/passwd、filename=../../etc/passwd、filename=../../../etc/passwd……进行逐一尝试(因为咱并不知道该目录的级别,当然如果熟悉linux目录结构的话,也可一部到位),在filename=../../../etc/passwd尝试中,发现返回页面有所不同,但因为某些错误无法显示
改用burpsuite抓包改包,成功执行
第二关:
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。应用程序阻止遍历序列,但将提供的文件名视为相对于默认工作目录。
目标:要解决实验室,需要检索/ etc / passwd文件的内容
根据提示重复第一关的操作,直接用相对路径成功获取:filename=/etc/passwd
文章来源地址https://www.toymoban.com/news/detail-718014.html
第三关:
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。应用程序在使用之前从用户提供的文件名中剥离路径遍历序列。
目标:为解决实验室,检索/ etc / passwd文件的内容
本关加了防御措施,对目录控制序列符号进行了处理,需要绕过。绕过一般首选用编码绕过,不过我试后发现不行,重新选择单次替换进行绕过,构造filename=....//....//....//etc/passwd(有了第一关的基础就不需要探测这是几级目录了)
第四关:
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。应用程序对包含路径遍历序列的输入进行分块。然后在使用之前对输入进行URL解码。
目标:为解决实验室,检索/ etc / passwd文件的内容
这关提示很明确,就是利用编码绕过:filename=%2c%2c%2f%2c%2c%2f%2c%2c%2fetc/passwd
失败(将../编码):
Filename=%2c%2c/%2c%2c/%2c%2c/etc/passwd(将 . 编码)失败:
Filename=..%2f..%2f..%2fetc/passwd(将/编码)失败:
Filename=..%252f..%252f..%252fetc/passwd(将 / 和 % 编码)成功:
第五关
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。应用程序通过请求参数传输完整的文件路径,并验证所提供的路径以预期的文件夹开始。
目标:为解决实验室,检索/ etc / passwd文件的内容
由提示可知,该关采用了固定文件路径开头的防御措施,这也意味着filename=/var/www/images/,或者更上一层/var/www/,甚至/var/ ,不能改动,从长到短逐一进行测试:
Filename=/var/www/images/../../../etc/passwd,成功:
第六关:
关卡提示:在产品图像的显示中包含文件路径遍历漏洞。应用程序验证所提供的文件名以预期的文件扩展名结束。
目标:为解决实验室,检索/ etc / passwd文件的内容
本关对文件类型做了限制,采用%00进行截断:
Filename=../../../etc/passwd%00.jpg
总结:虽然在提示下,很容易便能达到目的,但是在实战中我们只能自己去提取有用的信息为攻击做铺垫,可能需要用到各种绕过方式进行组合尝试才能达到我们想要的结果。文章来源:https://www.toymoban.com/news/detail-718014.html
防御:
- 避免将用户提供的输入完全传递给文件系统API;
- 白名单验证,如仅允许纯字母或数字字符等,在验证所提供的输入之后,应用程序应该将输入追加到基本目录中,并使用平台文件系统API来规范化路径;
- 黑名单(将截断符拉黑)加文件类型限制。
到了这里,关于web安全之目录穿越的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!