资源网站如何做活动 网站 源码
资源网站如何做,活动 网站 源码,wordpress 上传主题,wordpress 4.9 php7目录 介绍
构建基础攻击
预填表单输入的攻击
Frame Busting 脚本与绕过
点击劫持与DOM XSS攻击结合
多步点击劫持
防御 介绍
点击劫持是一种基于界面的攻击手段。攻击者通过诱导用户点击虚假网站上的内容#xff0c;从而欺骗用户触发另一个隐藏网站上的功能。
例…目录介绍构建基础攻击预填表单输入的攻击Frame Busting 脚本与绕过点击劫持与DOM XSS攻击结合多步点击劫持防御介绍点击劫持是一种基于界面的攻击手段。攻击者通过诱导用户点击虚假网站上的内容从而欺骗用户触发另一个隐藏网站上的功能。例用户访问了一个虚假网站可能来自邮件链接并点击了一个“领取奖品”的按钮。然而用户在不知情的情况下实际上被诱导点击了一个隐藏的替代按钮导致在另一个网站上完成了账户付款。这种技术依赖于在页面中嵌入一个不可见但可操作的网页通常使用iframe标签。这个 iframe 被叠加在用户能看到的虚假网页内容之上。其不同于CSRF点击劫持需要用户执行某个具体操作如点击按钮而 CSRF 则是在用户完全不知情或没有交互的情况下伪造并发送整个请求。维度说明攻击本质视觉欺骗。用户看到的Decoy UI和实际点击的Target UI不是同一个东西。核心手段利用iframe将透明的恶意页面覆盖在正常页面之上。用户行为必须由用户主动点击才能触发。防御思路防止网页被非法嵌套如使用X-Frame-Options响应头或 CSP 指令。构建基础攻击点击劫持攻击使用 CSS 来创建和作图层。head style /* 隐藏的目标网站层 */ #target_website { position: relative; width: 128px; height: 128px; opacity: 0.00001; /* 隐形但可点击 */ z-index: 2; /* 置于可见层的上面一层 */ } /* 可见的诱饵内容层 */ #decoy_website { position: absolute; width: 300px; height: 400px; z-index: 1; /* 位于底层 */ } /style /head body div iddecoy_website ...这里放置诱饵内容比如“点击领取 iPhone”... /div iframe idtarget_website srchttps://vulnerable-website.com /iframe /body精确对齐。攻击者不仅要让两个页面重叠还要确保目标网站的关键按钮如“确认支付”与诱饵页面的虚假按钮如“领取奖品”在坐标上完美契合。响应式布局对齐通过使用 CSS 的absolute绝对定位和relative相对定位属性攻击者可以确保无论用户使用什么屏幕尺寸、浏览器类型或操作系统目标 iframe 都能精准地覆盖在诱饵内容之上。坐标计算攻击者会精确计算width宽度、height高度以及top/left偏移量。视觉伪装。将透明度设为 0 或接近 0如0.00001使目标 iframe 对用户完全不可见。堆叠顺序。目标 iframe 的z-index会被设得比诱饵页面高确保用户的点击动作首先被顶层的隐藏 iframe 捕获。现代浏览器都有针对的防御例如阈值检测某些浏览器如Chrome 76具有“透明 iframe 检测”机制。如果一个 iframe 的透明度低于某个特定阈值且用户尝试点击浏览器可能会拦截该操作或发出警告。手动编写 CSS 和 HTML 来对齐iframe太过繁琐可以利用 bp 提供的 Clickbandit 工具。对应实验通过手动创建诱导界面和隐藏界面诱导用户点击“删除账户”从而实现攻击。预填表单输入的攻击某些网站在要求用户完成并提交表单时允许在提交前通过GET 参数预先填充表单输入项。在基础点击劫持中攻击者只能诱导用户点击一个现有的按钮。但在“预填表单”攻击中攻击者实现了对数据流的控制。1.寻找切入点。寻找那些通过 URL 接收数据的表单。普通 URLhttps://vulnerable-website.com/transfer-money含预填参数的 URLhttps://vulnerable-website.com/transfer-money?toattacker_accountamount10002.构造恶意iframe。攻击者将上述包含恶意参数的 URL 嵌入到透明的iframe中。此时受害者访问诱饵页面时后台加载的目标网页表单已经自动填好了收款人黑客金额1000元3.诱导提交攻击者在诱饵页面上设置一个诱人的按钮如“领取您的免费咖啡”其位置精准覆盖在隐藏表单的“确认提交”按钮之上。用户点击后浏览器实际执行在vulnerable-website.com上提交了一份已经填好恶意数据的表单。Frame Busting 脚本与绕过网站开发者意识到页面可能被劫持于是写了一段 JavaScript 放在网页里。其通常会执行以下部分或全部行为检查并强制当前应用窗口为“主窗口”或“顶层窗口”Top Window。强制使所有框架可见消除透明度伪装。防止点击不可见的框架。拦截潜在的点击劫持攻击并向用户发出警报。攻击者绕过HTML5 的sandbox属性是浏览器原生支持的优先级高于页面内的脚本。攻击者在诱饵页面的iframe标签里加上sandboxallow-forms但不给allow-top-navigation权限。由于没有allow-top-navigation权限网站自带的 Frame Busting 脚本想执行“强制跳转自救”时会被浏览器拦截并报错。由于设置了allow-forms用户在透明层点击“提交”的操作依然能成功发给服务器。点击劫持与DOM XSS攻击结合通常情况下DOM XSS 需要诱导用户点击一个长得很可疑的链接。而点击劫持完美解决了伪装问题传统 XSS用户可能会对https://victim.com/#alert(1)产生警觉。组合攻击用户看到的只是一个干净的诱饵网页如“点击观看最新电影”但他们点击的瞬间隐藏在透明 iframe 里的 XSS 载荷Payload就被激活了。style iframe { position:relative; width:500px; height:700px; opacity: 0.001; z-index: 2; } div { position:absolute; top:610; left:80; z-index: 1; } /style divclick me/div iframe srchttps://0aac009c03d9d2ea8605bc65008f0090.web-security-academy.net/feedback?nameimg src1 οnerrοrprint()emailhackerattacker-website.comsubjecttestmessagetest#feedbackResult/iframe #其中的print()就是实现的攻击在实际应用中可以改成别的操作多步点击劫持Multistep Clickjacking在基础攻击中攻击者只需要对齐一个按钮。但在多步攻击中攻击者需要引导用户完成一个“流程”。分层引导诱饵页面可能会设计成一个小游戏或多步问卷。动态位置调整攻击者可能会使用 JavaScript 动态改变iframe的位置或者在用户完成第一次点击后自动切换显示的div层确保每一步的诱饵按钮都精准覆盖在目标站点的下一个操作点上。style iframe { position:relative; width:500px; height: 700px; opacity: 0.001; z-index: 2; } .firstClick, .secondClick { position:absolute; top:500px; left:50px; z-index: 1; } .secondClick { top:295px; left:225px; } /style #底层诱饵层 两个 divfirstClick 和 secondClick分别被赋予了不同的位置参数 div classfirstClickclick me first/div div classsecondClickclick me next/div iframe srchttps://0a8c00f804e35e7f80b8d56700af00c6.web-security-academy.net/my-account/iframe #位于顶层的真实页面透明防御客户端的脚本防御Frame Busting非常脆弱因此真正的防御必须由服务器驱动通过向浏览器发出明确的指令限制网页被嵌套的方式。X-Frame-Options (XFO)这是最早出现的、专门针对点击劫持的 HTTP 响应头。虽然它比较老但在现代浏览器中依然得到广泛支持。它有三个可选值DENY最严厉的指令。完全禁止任何网页包括同源的页面将此页面嵌套在iframe中。SAMEORIGIN允许同源同一个域名、协议和端口的页面嵌套此页面。这在需要实现站内功能嵌套时非常有用。ALLOW-FROM uri只允许特定的来源嵌套。注现代浏览器对其支持有限不建议在新项目中使用应优先考虑 CSP。Content Security Policy (CSP) —— 现代防御首选CSP 是一种功能极其强大的安全框架其中的frame-ancestors指令是目前防御点击劫持的行业标准。相比 XFOCSP 更加灵活且难以绕过frame-ancestors none等同于X-Frame-Options: DENY。frame-ancestors self等同于X-Frame-Options: SAMEORIGIN。frame-ancestors https://trusted-site.com允许指定的受信任域名嵌套此页面。辅助防御手段SameSite Cookie 策略虽然它不直接阻止iframe嵌套但SameSite属性可以防止浏览器在跨站嵌套时发送 Cookie。如果设置Set-Cookie: sessionxyz; SameSiteLax或Strict当你的网站被嵌套在攻击者的诱饵网站中时浏览器不会发送登录凭证。结果即使攻击者成功劫持了点击由于没有 Cookie用户在隐藏页面里处于“未登录”状态敏感操作如转账也就无法执行。