渗透测试最容易被忽略的渗透环节,不是必经漏洞利用,是渗透信息收集。很多人一上来就掏扫描器,必经对着目标IP一顿猛捶,渗透结果连对方用了什么框架、必经有几个子域名、渗透邮箱格式是必经什么都不知道。这不是渗透渗透,这是必经碰运气。
我见过一个真实案例。渗透某次内部攻防演练,必经红队三个人盯了一个目标两天,渗透端口扫了,必经目录爆了,渗透POC打了,连个低危都没捞着。第四天换了个思路,先去领英上翻员工资料,发现有个运维小哥半年前发过一条动态,配图是工位照片,屏幕上隐约能看到一个内部系统的登录页。顺藤摸瓜找到那个系统,默认口令没改,直接进去了。后面的事情就简单了——内网漫游、抓哈希、横向移动,一气呵成。
你看,突破口不在技术栈上,在人身上。
域名和子域名是第一层。主站往往防守严密,但子域名就不一定了。test.xxx.com、dev.xxx.com、oa.xxx.com,这些名字本身就暴露了用途。很多企业的测试环境跟生产环境用的是同一套数据库,打穿一个等于打穿全部。
然后是邮箱。知道对方的邮箱命名规则之后,你可以做钓鱼,可以做暴力破解,可以拿邮箱去撞库。zhangsan@company.com这种格式一旦确认,配合从社工库捞到的密码,成功率不低。
再往下是技术指纹。用什么中间件、什么CMS、什么版本的框架。这些信息散落在HTTP响应头、favicon哈希、robots.txt、甚至报错页面里。有人觉得这些不重要,但一个Struts2的版本号就能决定你能不能RCE。
GitHub上泄露的代码是金矿。开发人员图省事,把数据库密码写在配置文件里,提交的时候忘了删。你搜company.com password,说不定就能翻出点什么。还有.git目录泄露,直接打包下载源码,审计都不用做了,翻配置文件就行。
微信小程序和APP也是。很多人只盯着Web端,忘了移动端往往调用同一套API。把APP抓包一分析,接口地址、鉴权方式、参数结构全出来了。有些接口在Web端做了权限校验,在APP端反而没有。
还有一类容易被忽略的:离职员工。他们的VPN账号可能没被注销,邮箱可能还能登录,甚至某些内部系统的权限还挂着。这种事说出来不好听,但确实存在。
信息收集做到什么程度算够?我的标准是:你能画出目标的网络拓扑草图,知道它大概有哪些系统、用了什么技术、员工叫什么名字、邮箱什么格式、哪些资产可能疏于管理。到这一步,你手里至少有三到五条可能的攻击路径,而不是对着一个IP发呆。
渗透的本质是信息不对称。你知道的比对方以为你知道的多,你就赢了。技术只是最后那一下,前面的铺垫全靠信息收集。跳过这一步的人,要么在碰运气,要么在浪费时间。
所以下次拿到目标,别急着开扫。先花两个小时,把能搜的都搜一遍。你会发现,很多门根本就没锁。