什么是目录遍历
第一次接触到目录遍历漏洞还是在 ThinkJS 2 的时候。代码如下图,目的是当用户访问的 URL 是静态资源的时候返回静态资源的地址。其中 pathname
就是用户访问的 URL 中的路径,我们发现代码中只是简单的解码之后就在22行将其与资源目录做了拼接,这就是非常明显的目录遍历漏洞了。
[
](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fthinkjs%2Fthinkjs%2Fblob%2Fdf482e75b46146104d1a21ca3e72b63f17342828%2Fsrc%2Fmiddleware%2Fcheck_resource.js%23L17-L22 “https://github.com/thinkjs/thinkjs/blob/df482e75b46146104d1a21ca3e72b63f17342828/src/middleware/check_resource.js#L17-L22”)
为什么这么说呢?