渗透测试过程
凌晨两点,渗透我盯着屏幕上的测试扫描结果,心跳漏了半拍。过程目标服务器的渗透8080端口开着个老旧的Tomcat管理界面,默认口令admin/admin居然直接登进去了。测试这不是过程演习,是渗透真实客户的生产环境。渗透测试从来不是测试电影里那种黑客炫技,它更像一场有预谋的过程入室盗窃——只不过你提前拿到了房主的许可,还得在事后写一份详细的渗透"偷窃报告"。
信息收集阶段最枯燥,测试也最致命。过程我习惯先翻DNS记录,渗透再查子域名,测试用fierce和amass跑上几个小时。过程有个客户的内网拓扑图就藏在他们公开的GitHub仓库里,一个离职员工把运维文档当开源项目传了上去。这种"人为漏洞"比技术漏洞更难防。你会惊讶于多少公司把敏感信息散落在互联网的角落——云存储桶权限配置错误,代码注释里的数据库密码,甚至招聘广告里泄露的VPN型号。
漏洞扫描像在超市里用金属探测器扫货。Nessus和OpenVAS会给你一堆可能的问题,但真正有价值的是手动验证。记得有次扫描报告显示某个CMS有SQL注入风险,我手工构造了几个payload,结果发现参数被WAF过滤了。可当我尝试用分号截断语句,绕过了过滤规则,直接拿到了管理员账号的哈希值。自动化工具是地图,手工测试才是真正的越野。
拿到初始立足点后,真正的游戏才开始。横向移动就像在别人的房子里找钥匙——你撬开一扇窗进了客厅,但保险柜在卧室。内网里往往有域控服务器,那是最终目标。我习惯先抓取本机密码哈希,用mimikatz导出明文,再通过PsExec或WMI在网段里批量尝试。有次渗透测试卡了三天,最后发现突破口是财务部那台没打补丁的Windows 7机器,共享文件夹里躺着个名为"密码本.xlsx"的文件。
提权是门手艺活。Linux下我常看内核版本,搜exploit-db找对应的利用代码。Windows则盯着服务权限和注册表键值。去年遇到个奇葩案例——目标服务器装了打印监控软件,服务以SYSTEM权限运行,但安装目录对普通用户可写。我直接替换了DLL文件,重启服务,瞬间拿到系统权限。这种漏洞不在任何CVE列表里,纯粹是厂商偷懒留下的后门。
报告阶段最考验沟通能力。你得把技术细节翻译成管理层听得懂的风险语言。别罗列二十个漏洞然后说"建议修复",要按业务影响排序。最危险的不一定是CVSS评分最高的,而是能被攻击链串联起来的那几个。上个月给一家银行做测试,发现OA系统的文件上传漏洞看似低危,但结合VPN的弱口令认证,攻击者能直接进入核心业务网段。这种组合拳才是真实威胁。
每次渗透结束,我都会在报告末尾加一段"主观建议"。比如提醒客户关注离职员工的账号清理,或者建议禁用某些不必要的管理端口。工具会更新,漏洞会修补,但人的习惯和流程的疏漏才是永恒的攻击面。测试的终极目标不是证明系统有多脆弱,而是让防守方知道——黑客可能从哪扇门进来,以及为什么那扇门不该开着。
