什么是目录遍历漏洞
在 Web 功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活, 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件
在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过../
这样的手段让后台打开或者执行一些其他的文件,从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞
需要区分一下的是,如果你通过不带参数的url(比如:http://xxxx/doc)列出了doc文件夹里面所有的文件,这种情况,我们称为敏感信息泄露,而并不归为目录遍历漏洞
源码分析
核心代码如下,文件路径:pikachu-mastervuldirdir_list.php
$html='';
if(isset($_GET['title'])){
$filename=$_GET['title'];
require "soup/$filename";
}
?>
这里从 Get 请求中提取 title 参数作为$filename
函数的值,并且后端直接把传进来的内容进行了require()
函数的执行,故我们可以修改 URL 中的 title 参数实现目录遍历
Pikachu 靶场实践
直接修改 title 参数即可实现任意文件读取,这里尝试读取win.ini(windows 配置文件)
这里解释一下为什么要写四个../
,先说一下路径
-
当前路径: D:phpstudy_proWWWpikachu-mastervuldir
-
win.ini
路径:C:Windows
之前我们说过,../
就相当于“上一级”,所以这里填写四次就是因为需要跳转四次到 C 盘的位置(D 盘和 C 盘在同一层级),然后再寻找 C 盘下的/windows/win.ini
路径
原文始发于微信公众号(天禧信安):【Pikachu 靶场精讲】目录遍历
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论