当前位置:首页 > 焦点

网站目录字典

搞渗透测试的网站人,电脑里多半躺着一份甚至几份目录字典。目录这东西不像漏洞利用工具那么显眼,字典但少了它,网站很多活儿根本没法往下推。目录我见过一个刚入行的字典哥们儿,拿到目标站点后对着首页翻了半天,网站说“没东西啊”。目录我让他跑一遍字典,字典三分钟后`/backup/`目录直接列出来了,网站里面躺着整个数据库的目录压缩包。他愣了半天,字典问这字典哪来的网站。

目录字典的目录本质就是一个纯文本文件,一行一个路径片段。字典跑起来也简单,工具拿着字典里的每条记录拼到目标URL后面,看返回状态码是200、301还是403。听起来很笨对吧?但偏偏就是这种笨办法,能撞出那些开发人员忘了删、懒得删、或者以为没人知道的东西。

市面上流传的字典很多,`dirsearch`自带一份,`dirb`有自己的一套,`SecLists`项目里那个`Discovery/Web-Content`目录下的文件更是五花八门。但直接拿默认字典去跑,效果往往一般。为什么?因为默认字典追求的是覆盖面,里面塞了大量通用词,比如`admin`、`login`、`upload`、`images`。这些词命中率确实高,可问题是,现在稍微有点安全意识的站点,这些路径要么被WAF拦了,要么早就改成了别的东西。

真正好用的字典是养出来的。我自己的习惯是分场景维护。给Java站点跑的时候,字典里会塞`actuator`、`swagger-ui`、`druid`、`jolokia`这些;给PHP站点跑,`phpinfo`、`phpmyadmin`、`wp-content`、`xmlrpc.php`出现的频率明显更高。这不是什么高深技巧,纯粹是踩坑踩出来的经验。有一次扫一个Spring Boot应用,默认字典里没有`actuator/env`,我手动加进去,直接拿到了数据库连接串。

字典的另一个关键点是后缀。很多人只跑目录,不加后缀。其实很多备份文件、源码泄露都是靠后缀撞出来的。`.zip`、`.rar`、`.tar.gz`、`.bak`、`.old`、`.swp`、`.sql`——这些后缀配上常见的文件名,比如`www`、`web`、`backup`、`db`、`test`,命中率相当可观。我见过一个站点,`/static/www.zip`直接可下载,里面是完整的网站源码。

还有个小细节:字典里的路径要不要带斜杠?其实两种都跑一遍更稳妥。`/admin`和`/admin/`在某些服务器上返回的东西完全不一样。Nginx和Apache对目录的处理逻辑有差异,IIS又是另一套。别嫌麻烦,多跑一次的事。

工具方面,`dirsearch`算是比较顺手的,Python写的,参数直观,支持多线程和递归。`ffuf`更快,但配置稍微麻烦点。`gobuster`也不错,Go写的,单文件直接跑。我一般用`dirsearch`做初步扫描,发现有意思的目录再用`ffuf`做深度爆破。速度这东西,取决于目标站点的响应时间和你的线程数设置,别开太高,把人家打挂了就不好玩了。

字典不是万能的。遇到返回全200的站点,或者带随机token的WAF,字典跑出来的结果全是噪音。这时候得换思路,比如从JS文件里提取路径,或者用爬虫先把站点结构摸一遍,再根据爬到的路径去定制字典。纯靠字典硬撞,效率会低得让人想砸键盘。

最后说个容易被忽略的点:字典要更新。不是定期去下载最新版,而是每次做完项目,把新发现的路径记下来,合并到自己的字典里。日积月累,你的字典会变成最贴合你目标环境的武器。别人的字典再全,也不如你自己养出来的那份顺手。

分享到: