实验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规范化路径。应用程序应验证规范化路径是否从预期的基目录开始。