渗透测试培训

去年秋天,渗透我帮一家做跨境电商的测试客户排查服务器异常。运维说CPU半夜总飙到90%,培训持续了大概两周。渗透我登上去看了下,测试发现有个定时任务每晚会从某个东欧IP下载一个脚本跑一遍,培训跑完就删。渗透这不是测试挖矿,是培训在偷订单数据库的增量。对方已经潜伏了四个月,渗透把将近七万条用户支付信息分批传了出去。测试客户之前做过两次“安全评估”,培训报告写得漂漂亮亮,渗透全是测试绿勾。那次之后,培训他们老板批了预算,让我给技术团队做一轮渗透测试培训。我答应了,但提了一个条件:别指望三天就能把运维变成黑客,培训的目标是让他们以后看日志能看出不对劲。

渗透测试培训最容易走偏的地方,是把它当成工具操作课。老师在上面演示sqlmap怎么跑、Burp怎么抓包,学员跟着点一遍,好像就会了。真到实战,面对一个没有明显报错、没有已知CVE的登录接口,照样不知道从哪下手。我的做法是先讲“攻击者的时间线”。从信息收集开始,到打点、提权、横向、维持访问,每一步大概花多久,哪些环节最容易暴露。学员得先理解一件事:攻击者不是天才,他只是比你多试了几种可能。比如子域名爆破,很多人只知道用字典跑,但攻击者会去看SSL证书透明度日志、看GitHub上泄露的CI配置文件、看招聘JD里提到的内部系统名字。这些信息拼起来,比任何字典都精准。

培训中间我插了一个小实验。给每人一个模拟的内网环境,里面有台Web服务器、一台数据库、一台域控。要求两小时内拿到域管权限。大部分人卡在第一步,扫端口、看服务、试弱口令,然后就没有然后了。有个学员注意到Web服务器上跑着一个旧版Jenkins,控制台没设密码。他直接进脚本命令行,反弹了一个shell出来。接着翻配置文件,找到数据库的只读账号,再用那个账号去连数据库,发现里面存着域管账号的哈希。整个过程没有用任何0day,全是配置疏忽。我后来问那个学员怎么想到看Jenkins的,他说之前公司出过一模一样的事故。你看,真实经验比任何教程都好使。

写报告这件事,很多培训不讲,但渗透测试的交付物就是报告。我见过太多人把扫描器输出直接贴进Word,改个标题就交差。客户拿到手,满篇“高危”“中危”,问他具体怎么修,说不出来。好的报告要写清楚:漏洞在哪个URL、复现步骤是什么、影响范围有多大、修复建议具体到改哪个配置文件哪一行。最好再给一个临时缓解措施,比如WAF规则或者访问控制策略。我让学员练过一种写法:假设读报告的人是运维,他只有十分钟时间,怎么让他最快理解并动手修。这个视角一换,报告质量立刻不一样。

培训结束那天,有个学员问我,学渗透测试是不是得先精通编程。我说不一定,但你得能看懂代码。PHP、Java、Python至少会读,知道什么是反序列化、什么是模板注入、什么是SSRF。看不懂代码,就只能等扫描器报警,而扫描器永远比人慢一步。另外,保持好奇心比什么都重要。看到登录框就想试试万能密码,看到上传点就想传个图片马,看到API文档就想改一下参数看看返回什么。这种习惯养成了,渗透测试才算入门。

后来那个客户又出过一次小状况。运维在巡检时发现一个异常进程,路径在/tmp下,名字伪装成kworker。他想起培训时我讲过“Linux下正常进程不会从/tmp启动”,直接kill掉并封了源IP。事后查日志,那是一个刚上传的webshell在尝试连接C2。你看,培训有没有用,不看考试分数,看下次出事时第一反应对不对。

休闲
上一篇:js跳转网址
下一篇:网络安全漏洞防范措施