前言:
如今小伙伴们对“iis 目录遍历”都比较关怀,姐妹们都想要知道一些“iis 目录遍历”的相关文章。那么小编也在网摘上搜集了一些对于“iis 目录遍历””的相关文章,希望小伙伴们能喜欢,同学们一起来学习一下吧!本文是 i 春秋论坛作家「dll_s」表哥分享的技术文章,文章仅供学习参考。
目录遍历
今天要介绍的目录遍历不是指我们在信息搜集阶段的路径爆破,而是指攻击者能够通过目录遍历漏洞,读取应用程序服务器上的任意文件,包括应用程序代码和数据、后端系统的凭据等敏感系统文件。
在某些情况下,攻击者甚至还可以通过这一漏洞,在服务器上写入任意文件,从而允许他们修改应用程序的数据或行为,并最终获得服务器控制权限。这里举一个具体的例子方便大家理解:
有一台运行有Web服务的Linux系统服务器,在该Web服务中,存在一个网页对图像路径的引用为<img src="/loadImage?filename=218.png">,通过loadImage URL对图片进行索引,图片存储在/var/www/images/目录下。当我们访问这一网页时会发送一个GET请求,URL为。此时,若服务器后台未对文件名进行检测,我们就可以构造恶意payload如../../../../etc/passwd读取服务器中的敏感文件内容并返回,这就构成了一次成功的目录遍历攻击。
../的含义为返回上一目录,/etc/passwd为Linux系统中的特有文件,存储了系统中所有用户的基本信息。而这在Windows系统中有所不同,../ 和..\ 都可以用于实现返回上一目录这一目的,而相对应可用的文件路径有例如..\..\..\windows\win.ini等,更多相关的敏感文件路径可以参阅扩展阅读中的链接。
实验内容
实验一:简单的目录遍历漏洞
实验提示:这一实验环境中的页面在图像引用中存在目录遍历漏洞。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
因为漏洞存在于图片的引用当中,所以要注意筛选条件的设置,如下图为相关访问流量。
任意选择一条信息流发送到Repeater模块,进行目录遍历尝试。
通过添加多个../即可成功获取到/etc/passwd文件内容,完成实验。因为命令执行原理,这里所使用的../数量是不限的,但是不能过少,这样可能无法到达根路径。
实验二:使用绝对绕过路径遍历保护
实验提示:这一实验环境中的页面在图像引用中存在目录遍历漏洞,虽然后台拒绝了绝对路径的使用,但是将提交的文件名视为相对于默认工作目录的文件名。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
还是一样发送到Repeater模块进行相关操作,根据提示可以使用绝对路径绕过防护。
使用payload/etc/passwd完成实验。
实验三:未进行递归过滤路径符
实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞,且会过滤用户提交数据中的路径符。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
这个提示简单的说就是Web应用后台会对用户提交的路径进行处理,尝试去除../这样的内容,但是由于考虑不周(比如仅进行一次判断是否存在../并去除而未进行多次递归),往往可以采取措施进行绕过,例如使用 ....// 或者 ....\ /。
同样监控通信流,并发送到Repeater模块进行处理。
使用payload ....//....//....//etc/passwd成功绕过,完成实验。
实验四:通过编码进行绕过
实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞,且会阻断包含有路径遍历的用户输入,并会在使用前进行解码。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
根据实验提示,我们可以使用编码后的payload对保护机制进行绕过。
使用的payload为..%252f..%252f..%252fetc/passwd。
除了这里使用的编码,还有许多其他编码方式也可以被用于绕过此保护措施,这里列举了一些编码方式。
普通URL编码:
. = %2e/ = %2f\ = %5c
双重URL编码:
. = %252e/ = %252f\ = %255c
Unicode编码:
. = %u002e/ = %u2215\ = %u2216
UTF-8 Unicode编码:
. = %c0%2e, %e0%40%ae, %c0ae/ = %c0%af, %e0%80%af, %c0%2f\ = %c0%5c, %c0%80%5c
关于为什么%C0%AF这类编码可以被用于目录遍历,可以看这个回答,因为太长了就不进行翻译了。简单的讲就是%C0%AF是/的非法UTF-8编码,但是由于不同的具体实现导致在某些情况下其仍能被成功解码并被用于绕过常见的目录遍历防范措施。
实验五:检测路径开头的保护机制
实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞,且会检测路径的开头是否为预期值。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
程序后台会检测路径开头,那我们只需保证路径开头正确,更改后续内容即可绕过保护机制。
使用payload/var/www/images/../../../etc/passwd。
完成实验。
实验六:通过零截断绕过保护机制
实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞,且会检测文件扩展名是否为预期值。
实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容。
后台程序会对扩展名进行检测,那么我们需要在附加扩展名的同时使得文件内容能够成功返回。
这里利用了一个零截断技术,由于Web应用程序使用的API允许字符串中包含空字符,但当实际获取文件名时系统API会直接截断导致成功绕过保护措施。
使用payload ../../../etc/passwd%00.jpg成功完成实验。
总结
目录遍历漏洞背后原理并不复杂,但是造成的危害还是不小的,主要的防范措施有以下几种:
尽量避免将用户提交的输入传递到文件系统API中;在接受参数前做好验证,使用白名单策略;验证参数后,应将其追加到基本目录并做好路径规范化;使用适当的文件系统访问权限。
关于自动利用工具可以使用Kali自带的dotdotpwn,本文不作拓展介绍了,感兴趣的小伙伴可自学,链接:
标签: #iis 目录遍历