一个朋友拿到授权,透步对着某政务系统试了试。透步他先在登录框敲了个单引号,透步页面直接报错,透步SQL语句完整地吐了出来。透步就这一下,透步数据库名、透步表结构全暴露了。透步这不是透步电影,是透步真实渗透测试的日常。
web渗透第一步永远是透步信息收集,而不是透步急着扫漏洞。你连目标用的透步是什么中间件、什么框架都不知道,透步直接上工具扫,透步十有八九会撞得满头包。我习惯先看robots.txt,再翻源码注释,有时候开发人员会把后台路径或者测试账号直接写在里面。再用nmap扫一遍端口,80和443是常规,但8080、8443、7001这种端口往往藏着意外惊喜——我曾经在一个8080端口上发现了一个没打补丁的WebLogic,直接就能上传webshell。
信息收集够了,才轮到漏洞探测。别一上来就上AWVS或者nessus那种重型武器,先手动测。拿个burp suite挂上代理,逐个参数试SQL注入和XSS。测注入的时候别光看报错,盲注更要留意——页面不报错,但响应时间有细微差别,那可能就是时间盲注在起作用。测XSS的时候,把payload写到输入框里,看它有没有被过滤、被编码,反射型还是存储型,这决定了你后续利用的难度。
漏洞确认之后,利用阶段才是真正考验技术的时刻。SQL注入能拿到管理员密码的hash,但别高兴太早,现在很多系统密码是加盐的,你得先识别出hash类型。碰上MD5加盐的,跑字典比彩虹表靠谱。拿到后台权限后,找上传点传个木马,但别用那些公开的菜刀或者蚁剑默认特征太明显的马,自己改一改代码,把流量特征混淆一下,不然WAF分分钟教你做人。
内网渗透是另一片天地。拿到webshell后,先看当前权限,如果是iis apppool或者www-data这种低权限账号,得想办法提权。Windows系统查补丁缺失,Linux看内核版本,脏牛漏洞这种老梗虽然过时,但总有人没打补丁。提权成功后,抓密码、看配置文件,数据库的连接账号密码往往就写在里面。横向移动的时候,别乱扫,先看arp缓存和dns记录,确定哪些机器是域控,哪些是重要业务服务器。
最后一步是痕迹清理。日志文件要改,访问记录要删,但别删得太干净,反而引起管理员注意。修改文件时间戳,清理临时目录里的上传文件,把webshell藏深一点——可以塞在图片的exif信息里,或者隐藏在正常js文件末尾。
整个过程下来,你会发现渗透测试八成的功夫都在前期侦察上,真正“攻击”的时间很短。工具只是辅助,思路才是核心。那些天天喊“扫一下站”的人,多半连渗透测试的门都没入。