当前位置:首页 > 知识

检测到目标url存在框架注入漏洞

检测到目标url存在框架注入漏洞。检测架注这不是到目洞什么高深莫测的0day,也不是存框需要NSA级工具才能触发的奇技淫巧——它就是web应用里最常见的“门没锁”问题之一。攻击者往url参数里塞一段iframe代码,入漏页面就乖乖地把别人的检测架注页面嵌了进来。你以为是到目洞自己在浏览网站,其实你已经被带到别人的存框地盘上逛了一圈。

我见过最典型的入漏案例是在某政务网站的信息公开栏。那个页面有个“打印预览”功能,检测架注url里有个print=1的到目洞参数。测试时把print=1改成print=1%22%3E%3Ciframe%20src%3D%22https%3A%2F%2Fevil.com%22%3E%3C%2Fiframe%3E,存框页面底部直接弹出了evil.com的入漏登录框。当时负责维护的检测架注工程师说这功能上线三年了,从没人提过问题。到目洞没人提不代表没问题——只是存框没人往那个方向想。

框架注入的可怕之处在于它不挑场景。新闻站的文章id、电商平台的分类参数、论坛的跳转链接,凡是把用户输入直接拼进html输出的地方,都可能中招。攻击者不需要知道你的数据库结构,不需要猜你的后台密码,只需要一个能让你点开的链接。比如把恶意iframe伪装成正常的新闻链接发到群里,你点进去,页面看起来一切正常——但那个隐藏的透明iframe已经在后台加载了钓鱼网站。你输入的任何账号密码,都直接送进了别人的数据库。

更麻烦的是,这种漏洞经常和点击劫持、CSRF配合使用。iframe可以设置成1x1像素,藏在页面角落,用户根本察觉不到。我做过一次渗透测试,目标是个企业内部系统,登录页有个redirect参数没过滤。构造一个包含盗链iframe的url,发邮件给内部员工,只要有人点击并登录,session就直接被iframe里的脚本窃取。整个过程不需要任何交互,用户只是正常登录了一次系统而已。

修复方案倒是不复杂。对输出到html上下文的参数做编码,或者直接白名单校验——只允许特定字符集。但问题在于很多老旧系统,尤其是那种“能跑就不动”的遗留项目,参数传递链错综复杂,一个参数可能在多个页面复用。你修了前端过滤,后端接口又漏了。修了后端校验,日志系统又原样输出了。这种漏洞就像老房子里的白蚁,表面看着光鲜,撬开地板全是洞。

最讽刺的是,有些开发者觉得“反正我网站是https的,数据加密了怕什么”。框架注入和传输加密完全是两码事。https只保证数据在传输途中不被窃听,但页面本身被注入了恶意框架,等于把客人请进了家,却在客厅里藏了个小偷。加密防的是路上的劫匪,不是屋里的内鬼。

所以别小看这个“简单”的漏洞。每次看到扫描器报出框架注入,我都会提醒自己:这个系统可能还有其他类似的输出点没被发现。修复一个参数容易,难的是把整个项目的输出习惯都改过来。下次写代码时,多想想用户输入会流经哪些地方——你偷的懒,迟早会变成攻击者攻破你的捷径。

分享到: