先上一张图看看什么是目录遍历漏洞。
对,目录遍历就长成这样子
一般遇到目录遍历漏洞,我们常做的就是去寻找有价值的东西去下载,比如数据库
一般是没有index.php就可能出现像这样的一个目录遍历的漏洞,但是一般情况下index文件都会有的。
那么怎么去找目录遍历漏洞,一般是输入到文件目录,看页面响应,
比如站点上的一张图片的的连接为:http://192.168.24.190/Images/185_01.jpg
我们把图片删除,只保留目录:http://192.168.24.190/Images/
浏览器看看
那这样子就是存在目录遍历漏洞。
一. 什么是目录遍历漏洞
目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。
二. 目录遍历漏洞原理
程序在实现上没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
三. 目录遍历漏洞实例
读取文件的url:
http://www.test.com/my.jsp?file=abc.html
恶意url:
http://www.test.com/my.jsp?file=../../Windows.system.ini
四. 目录遍历漏洞的防御
1.对用户的输入进行验证,特别是路径替代字符“…/”
2.尽可能采用白名单的形式,验证所有输入
3.合理配置web服务器的目录权限
4.程序出错时,不要显示内部相关细节
五.出现场景
出现在文件读取或者展示图片等对文件读取交互的功能块。
六、漏洞实例
(1)利用Web应用代码进行目录遍历攻击的实例
在包含动态页面的Web应用中,输入往往是通过GET或是POST的请求方法从浏览器获得,以下是一个GET的Http URL请求示例:
http://test.webarticles.com/show.asp?view=oldarchive.html
利用这个URL,浏览器向服务器发送了对动态页面show.asp的请求,并且伴有值为oldarchive.html的view参数,当请求 在Web服务器端执行时,show.asp会从服务器的文件系统中取得oldarchive.html文件,并将其返回给客户端的浏览器,那么攻击者就可 以假定show.asp能够从文件系统中获取文件并编制如下的URL:
http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini
那么,这就能够从文件系统中获取system.ini文件并返回给用户,…/的含义这里就不用多说了,相信大家都会明白。攻击者不得不去猜测需要往上多少层才能找到Windows目录,但可想而知,这其实并不困难,经过若干次的尝试后总会找到的。
(2)利用Web服务器进行目录遍历攻击的实例:
除了Web应用的代码以外,Web服务器本身也有可能无法抵御目录遍历攻击。这有可能存在于Web服务器软件或是一些存放在服务器上的示例脚本中。
在最近的Web服务器软件中,这个问题已经得到了解决,但是在网上的很多Web服务器仍然使用着老版本的IIS和Apache,而它们则可能仍然无法抵御这类攻击。即使你使用了已经解决了这个漏洞的版本的Web服务器软件,你仍然可能会有一些对黑客来说是很明显的存有敏感缺省脚本的目录。
例如,如下的一个URL请求,它使用了IIS的脚本目录来移动目录并执行指令:http://server.com/scripts/..\../Windows/System32/cmd.exe?/c+dir+c:\
这个请求会返回C:\目录下所有文件的列表,它使通过调用cmd.exe然后再用dir c:\来实现的,%5c是web服务器的转换符,用来代表一些常见字符,这里表示的是“\”
新版本的Web服务器软件会检查这些转换符并限制它们通过,但对于一些老版本的服务器软件仍然存在这个问题。
如何判断是否存在目录遍历漏洞?
最好的方式就是使用Web漏洞扫描器,Web漏洞扫描器能够遍历你Web站点的所有目录以判断是否存在目录遍历漏洞,如果有它会报告该漏洞并给出解决的方法,除了目录遍历漏洞以外,Web应用扫描还能检查SQL注入、跨站点脚本攻击以及其他的漏洞。
路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名