热点

秘密教学渗透测试

时间:2010-12-5 17:23:32  作者:综合   来源:时尚  查看:  评论:0
内容摘要:去年秋天,我帮一家做跨境电商的客户做内部培训,主题是“如何用渗透测试思路保护自己的后台”。结果讲到一半,他们的运维主管突然举手:“你说的这些手法,我们上个月刚被一个离职员工用过。”全场安静。他接着说,

去年秋天,秘密我帮一家做跨境电商的教学客户做内部培训,主题是渗透“如何用渗透测试思路保护自己的后台”。结果讲到一半,测试他们的秘密运维主管突然举手:“你说的这些手法,我们上个月刚被一个离职员工用过。教学”全场安静。渗透他接着说,测试那人用之前留下的秘密测试账号,绕过了双因素认证,教学直接爬走了三万条订单数据。渗透没有漏洞利用工具,测试没有0day,秘密就是教学最基础的“信息收集+弱口令复用”。

这件事让我重新思考渗透测试的渗透本质。很多人把它当成黑客电影里的键盘噼里啪啦敲代码,其实真正的渗透测试,七成时间花在“看”和“猜”上。看什么?看目标暴露在外的资产——子域名、API接口、错误页面里的堆栈信息。猜什么?猜运维人员的命名习惯、密码规律、甚至他们爱用的第三方SDK。

我习惯把渗透测试分成三个层次。最浅的一层是“扫描器能跑出来的”,比如过期的Nginx版本、没关的目录列表、默认的Tomcat管理后台。这类问题用OpenVAS或者Nuclei扫一遍,十分钟能出一堆。但客户往往不重视,觉得“没被黑就行”。

中间那层,是“扫描器跑不出来,但人眼能看出来”的。举个例子,某次我测试一个预约系统,发现它的用户ID是自增的。我注册账号A,ID是1001;再注册账号B,ID是1002。然后我把B的ID改成1001,居然能看到A的完整手机号和地址。这不是漏洞扫描器能发现的,因为参数校验逻辑在业务层,不在HTTP响应里。这种问题靠什么?靠手动点、靠观察URL、靠猜参数含义。

最深的一层,是“逻辑漏洞+社会工程学”的混合体。我见过一个后台,登录需要短信验证码。但验证码的发送接口没有频率限制,而且验证码是4位数字。理论上可以爆破,但每分钟只能试5次。怎么办?我注意到它的验证码在响应包里返回了前两位。比如返回“12**”,那实际只需要猜后两位,100种可能。再配合5次/分钟的限制,20分钟就能撞开。这种思路,任何自动化工具都不会告诉你。

有人问,学渗透测试要不要先学编程?我的答案:要,但不是为了写exploit。是为了看懂代码里的“坏味道”。比如PHP里用$_REQUEST['id']直接拼SQL,比如Java里用Runtime.exec()执行用户输入。你看得懂代码,就知道哪里可能出问题,而不是盲目地扔sqlmap。

再讲个真实案例。某次授权测试,目标是一个内部OA系统。外网只有一个登录页,看起来固若金汤。我试了弱口令,admin/admin不对,admin/123456也不对。然后我注意到登录页的HTML注释里有一行:<!-- 测试环境: oa-test.xxx.com -->。访问那个测试域名,直接进去了,没有密码。里面是完整的数据库备份文件。你看,渗透测试有时候就是“找注释”。

最后说一个我自己的习惯。每次测试前,我会花半小时翻目标的GitHub仓库、招聘JD、甚至员工在脉脉上的吐槽。招聘JD里写“熟悉Struts2框架”,那大概率有老系统没升级。员工吐槽“每天手动导数据”,那可能有未授权的数据库直连。这些信息比任何扫描器都值钱。

渗透测试不是炫技。它是用攻击者的眼睛,帮防守方看见自己看不见的角落。那些角落往往不藏在代码里,藏在人的习惯里。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap