游客发表
我见过最离谱的渗透一次渗透测试,攻击者没写一行exp,测试没跑一个payload,字典靠的渗透是一本从旧货市场淘来的《中国电信黄页2003》。他翻到某地级市分公司那一页,测试照着上面的字典号码打过去,冒充设备厂商售后,渗透说要做“年度固件巡检”。测试对方给了VPN账号。字典这事发生在2019年。渗透
字典这个词听起来很工具书,测试但在渗透测试里,字典它更像一本菜谱。渗透菜谱告诉你宫保鸡丁要放多少醋,测试字典告诉你某个系统可能存在什么默认口令。字典区别在于,菜谱做砸了顶多难吃,字典用错了,你得去喝茶。
最常见的字典是口令字典。Kali里自带的那几个rockyou、darkc0de,本质上是过去二十年泄露事件的尸检报告。你往里加一条“admin888”,可能对应的是某个县级医院HIS系统的运维习惯。我认识一个老哥,他的个人字典里有一行是“yao19901123”。那是他前女友的生日加名字缩写。这行口令帮他进过三个不同省份的教务系统。他说的时候在笑,但我知道他每次用之前都会犹豫两秒。
但字典远不止口令。路径字典、参数名字典、子域名字典、甚至报错信息字典,都是渗透测试里的弹药库。Dirsearch默认的那几千条路径,覆盖的是Web中间件和常见CMS的默认后台。可真正好用的路径字典,往往来自甲方自己的运维文档。有一次我拿到一份某政务云的运维手册PDF,里面有一章叫“应急维护入口”。我把那一章的标题全扔进字典,跑出了七个未授权访问的接口。手册是甲方自己给的,他们忘了删。
参数名字典更有意思。SQL注入的字典里,id、uid、pid是标配。但如果你只跑这三个,可能会漏掉某个用“user_id_card”作为参数的接口。这名字一看就是外包团队赶工写出来的。字典的厚度,取决于你见过多少种烂代码。
我自己的字典分三层。第一层是通用层,从GitHub上扒下来的各种泄露库,定期更新。第二层是行业层,做金融项目就加bank、pay、loan,做医疗就加patient、doctor、his。第三层是项目层,每次开工前,我会把目标公司的域名、产品名、甚至CEO名字的拼音变体全加进去。第三层往往命中率最高,因为人总是忍不住用自己的东西当密码。
字典的维护比收集更累。你得定期删掉那些触发WAF的条目,不然跑起来全是403。你还得给字典排序,把高概率的放前面,不然跑一晚上还在试“123456”。我见过有人把字典按字母顺序排,结果跑到“a”开头的条目时天都亮了。
有个甲方问我,你们渗透测试是不是就是拿字典撞库。我说是,但不全是。字典是地图,但地图不会告诉你哪里有地雷。你得自己走。有些路字典上标着畅通,实际上一脚踩进去就是IDS告警。有些路字典上没写,但你从报错信息里能闻出味道。
最后说个真事。某次内部演练,我拿到的目标是一个刚上线的OA系统。字典跑了两小时,什么都没跑出来。我停下来,把登录页面的HTML源码看了一遍。表单里有个隐藏字段叫“debug_mode”,值设为“false”。我改成“true”,页面刷新,直接进了后台。字典里没有这一条。字典是死的,代码是活的。你得学会看代码,而不是只信字典。
所以别把字典当圣经。它只是一堆别人踩过的坑。真正的渗透测试,是你自己再去踩一遍,然后往字典里加一行新的。
友情链接