目录遍历漏洞
目录遍历
目录
- 概念
- 漏洞分析
- 加密型传递参数
- 编码绕过
- 目录限定绕过
- 绕过文件后缀过滤(截断上传原理)
- 漏洞挖掘
- 访问图片文件
- 测试时去掉文件名只访问目录路径
- 搜索引擎谷歌关键字
- pikachu目录遍历
目录遍历与任意文件下载其实差不多,但是如果目录遍历比如etc/passwd
只能看不能下载那只是能遍历,如果是在下载的接口输入etc/passwd
那么就输入任意文件下载了,二者或许会一起出现又能看又能下
概念
目录浏览漏洞是由于网站存在配置缺陷,存在目录可浏览漏洞,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以更容易得到网站权限,导致网站被黑 访问任意的文件 (可以是web根目录以外的文件),甚至可以执行系统命令
jira是Jupyter NoteBoo
下的目录
网站的目录全部暴露,一般碰到这种就是寻找有价值的东西比如 数据库,文件内包含的密码这些, 一般是没有index.php 就可能出现像这样的一个目录遍历的漏洞,但是一般情况下 index 文件都会有的。
那么怎么去找目录遍历漏洞,一般是输入到文件目录,看页面响应。比如站点上的一张图片的的连接为:http://192.168.24.190/Images/185_01.jpg
,我们把图片删除,只保留目录:http://192.168.24.190/Images/
,最后浏览器看看并没有自动刷新到185_01.jpg
文件,而是返回上一级 那么这个样子就是存在目录遍历
漏洞分析
目前许多的 Web 应用程序一般会有对服务器的文件读取查看的功能,大多会用到提交的参数来指明文件名,形如:http://www.nuanyue.com/getfile=image.jpg
。当服务器处理传送过来的 image.jpg 文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,将读取的内容返回给访问者 我们可以构造对应的路径由于文件名可以任意更改而服务器支持“~/”,“/…”等特殊符号的目录回溯
加密型传递参数
在网站中对传递的数据进行加密后提交,比如, 其中 file
的数据采用的是Base64加密 我们只需要将数据进行相应的解密即可入侵
也就是采取一些规律性的加密方式也是不安全的
http://www.***.com/downfile.jsp?file=ZmfdWq==
编码绕过
采用不同的编码进行过滤型绕过,比如对参数使用url 编码提交来绕过
http://www…com/downfile.jsp?file=%66%1E%23%16%5A*
目录限定绕过
有的网站使用限定目录权限来分离,攻击者可以通过某些特定符号来绕过,比如根目录 /
被限定了权限,但是可以通过 ~
来进入根目录
~/…/boot 等价于 /boot
绕过文件后缀过滤(截断上传原理)
设置了后缀名检测(黑名单或白名单时) 可以通过 %00 截断绕过
…/…/…/boot.ini%00.jpg ==> …/…/…/boot.ini
漏洞挖掘
访问图片文件
右键新标签中打开有时候会暴露出路径
有了这个路径后我们往前构造那么久会发现目录
测试时去掉文件名只访问目录路径
搜索引擎谷歌关键字
- 任意文件下载:site:域名 filetype:zip|rar|zip|xml
- 敏感信息(目录):site:域名 index of、intitle:“Index of /admin”
- 未授权访问:inurl:php? intext:CHARACTER_SETS,COLLATIONS, ?intitle:phpmyadmin、
- 后台:site:xxx.com inurl:login|admin|manage|member|admin_login|user
- 敏感信息泄露:site:xxx.com intext:管理|后台|登录|用户名|密码|系统|账号|admin|login|managetem|password|username
- sql注入:site:域名 inurl:?id=
pikachu目录遍历
进入关卡点击页面每个展示都不同,得到路径参数
http://localhost/pikachu-master/vul/dir/dir**_**list.php?title=jarheads.php
http://localhost/pikachu-master/vul/dir/dir**_**list.php?title=truman.php
这里是通过已知的文件路径来构造出title
参数后面的路径
pikachu/vul/fileinclude/fileinclude.php 文件包含漏洞的概念页面
只要我们可以通过这个路径访问到,那么我们就可以攻击到,假设文件jarheads.php
和文dir_list.php
在同一个文件夹,下列为py
http://localhost/pikachu-master/vul/dir/dir_list.php?title=…/fileinclude/fileinclude.php
- 报错显示 title参数值表示 文件的内容用的是
require(
)函数 - 文件jarheads.php和文件dir_list.php不在同级目录下,jarheads.php在dir_list.php同级的soup目录下
- 网站所在目录 B:\phpstudy_pro\WWW
require()
函数作用
重新构造
http://localhost/pikachu-master/vul/dir/dir**_**list.php?title=…/…/fileinclude/fileinclude.php
如果说想获得网站外的文件,那么我们还是使用 ../../
命令回到windows的路径
http://localhost/pikachu-master/vul/dir/dir_list.php?title=…/…/…/…/…/…/Windows/System32/drivers/etc/hosts