焦点

漏洞思路

时间:2010-12-5 17:23:32  作者:百科   来源:探索  查看:  评论:0
内容摘要:某次渗透测试,目标是一家银行的移动端App。翻代码时发现一个不起眼的接口,参数叫`callback`,开发注释写着“预留功能”。我随手填了个`javascript:alert(1)`,服务器居然原样返

某次渗透测试,漏洞思路目标是漏洞思路一家银行的移动端App。翻代码时发现一个不起眼的漏洞思路接口,参数叫`callback`,漏洞思路开发注释写着“预留功能”。漏洞思路我随手填了个`javascript:alert(1)`,漏洞思路服务器居然原样返回了。漏洞思路那一刻我意识到,漏洞思路这不是漏洞思路漏洞,这是漏洞思路开发者在代码里埋的定时炸弹,只是漏洞思路没人告诉过他们引信在哪。

漏洞挖掘这事,漏洞思路说白了就是漏洞思路跟开发者的思维惯性对着干。他们习惯信任输入,漏洞思路我们习惯怀疑一切。漏洞思路但真正的漏洞往往不在技术难点上,而在业务逻辑的缝隙里——比如密码重置流程,验证码校验通过后,服务端居然没校验用户身份是否与手机号匹配。你猜怎么着?改个参数就能重置任意账号。

记得有个经典案例,某电商平台优惠券系统。规则是“新用户首单减50”,但风控只查了注册手机号是否首次下单。有人用同一身份证注册了十几个虚拟号,每单薅50块,薅了整整三个月才被发现。技术层面毫无漏洞,纯粹是业务规则没闭环。这种问题,扫描器永远扫不出来。

我更愿意把漏洞分为两类:一类是代码写错了,一类是需求想错了。前者有规律可循,SQL注入、XSS、文件上传,翻来覆去就那些套路,补丁打得勤快就能防住。后者才是真正的深渊——当产品经理拍脑袋说“这里加个记住密码功能”的时候,可能没人想过token存cookie里不设过期时间意味着什么。

去年挖过个社交App的漏洞,过程极其无聊。注册时抓包,发现`role`字段默认是`user`,我改成`admin`重放请求,服务器直接返回了管理后台的菜单列表。连鉴权都没做。这种漏洞说出来都嫌丢人,但它真实存在,而且存在于大量中小型应用中。开发者的逻辑很简单:“反正用户看不到后端代码,改字段算什么攻击?”

说回那个`callback`参数。我最后没利用它,只在报告里写了三行字:“反射型XSS,建议过滤或白名单。”后来甲方联系我,说修复方案是把参数删了。我问为什么当初要加这个接口,对方沉默几秒,回了句:“实习生练手写的,忘了删。”

漏洞思路说白了就两条:要么顺着代码逻辑找它没考虑到的输入,要么逆着业务规则找它没考虑到的场景。前者靠技术,后者靠常识。但多数人卡在中间——技术不够细,常识不够深。有个前辈跟我说过,他挖洞前先问自己三个问题:这个功能谁会用?怎么用?用完之后数据去哪?想明白这三个问题,漏洞基本就浮出水面了。

当然,也有纯粹靠运气的时刻。某次闲着无聊,把正常请求里的`Content-Type`改成`text/xml`,服务器居然报错泄露了堆栈信息,里面带着内网IP和数据库版本号。这算哪门子思路?纯粹是手贱。但有时候,手贱比思路管用。

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