凌晨两点,做渗我盯着屏幕上的透测终端输出,心跳加速。做渗目标站点的透测后台登录框刚刚弹出一个奇怪的报错——不是常见的“密码错误”,而是做渗完整的SQL查询语句。那一刻我知道,透测今晚不用睡了。做渗这个报错信息,透测就是做渗渗透测试里最经典的“入口”。
渗透测试说白了,透测就是做渗模拟黑客攻击,提前找出系统的透测漏洞。别把它想得太玄乎,做渗核心就三步:踩点、透测攻击、做渗留后路(当然,最后得清理干净)。但每一步都有讲究,我见过太多新手直接拿扫描器乱扫,结果啥也没发现,还容易被封IP。
第一步,收集信息。别急着动工具,先用浏览器打开目标网站,右键查看源代码,看看有没有注释掉的敏感信息。我曾在某银行的分站源码里看到过数据库密码,就写在HTML注释里——这种低级错误,比你想的常见得多。接着查DNS记录,用nslookup或在线工具,找找有没有子域名泄露内部系统。有个技巧:Google搜索“site:目标域名.com filetype:pdf”,往往能翻出内部培训手册,里面可能写着VPN地址或默认账号。
第二步,漏洞探测。这里要区分“有授权”和“没授权”。有授权的话,可以用Nmap扫端口,看哪些服务开着。比如发现8080端口跑着Tomcat,那就试试默认口令admin/admin——别笑,我曾经用这招拿下一家物流公司的管理系统,他们连密码都没改。没授权的话,别乱来,法律风险你懂的。但公共信息收集和被动探测(比如看HTTP响应头)是合法的,能告诉你服务器版本、中间件类型,这些信息能帮你判断该试哪些已知漏洞。
第三步,利用漏洞。这步最考验经验。SQL注入的话,先试单引号',看页面是否报错。报错就说明参数没过滤,接着用union select猜字段数。XSS更简单,在输入框提交<script>alert(1)</script>,弹窗了就说明存在。但记住,拿到权限后别急着提权——先看看当前用户能访问哪些文件,我遇到过数据库权限低得可怜,但同服务器的另一个Web应用却以root运行,这时候横向移动比提权更划算。
最后,写报告。这一步被很多人忽略,但甲方爸爸最看重。别光列漏洞清单,要写清楚:这个漏洞能被利用到什么程度?比如“登录框存在SQL注入,可绕过认证获取全部用户数据”比“存在SQL注入”有价值得多。还要给出修复建议——不是那种“加强输入过滤”的废话,而是具体到“将参数改为预编译语句,并在数据库层限制该账号只读权限”。
说个真实案例。去年帮一家电商做测试,他们自认为安全做得不错,所有接口都上了WAF。我绕了半天没进展,最后在手机版页面发现一个老接口,没走WAF,而且参数直接拼SQL。用sqlmap跑了一下,几分钟就把用户表拖出来了。后来才知道,这接口是三年前外包团队留下的,一直没人清理。所以渗透测试不只是技术活,还得懂业务逻辑,知道哪些“老东西”可能被遗忘。
做这行久了,你会发现漏洞往往不在技术难度,而在人的疏忽。默认密码、未打补丁的旧组件、开发环境遗留的调试接口——这些才是突破口。工具只是辅助,真正的判断力来自经验积累。多看看漏洞报告,多动手复现,比看十本理论书都强。