web基础漏洞-界面操作劫持

1、介绍

界面操作劫持攻击是一种基于视觉欺骗的web会话劫持攻击,它通过在网页的可见输入控件上覆盖一个不可见的框iframe,使得用户误以为在操作可见控件,而实际上用户的操作行为被不可见的框所劫持,执行不可见框中的恶意劫持代码,从而完成在用户不知情的情况下窃取敏感信息、篡改数据等攻击。

  • 关于界面操作劫持,网络上资料相对较少,建议参考《web前端黑客技术揭秘》(钟晨鸣 徐少培)
  • 界面操作劫持实际上突破了csrf的防御策略,这是一种社工色彩很强的跨域操作,而这种跨域正好是浏览器自身的特性。
  • 可以分为点击劫持clickjacking、拖放劫持drag&drop jacking、触屏劫持tapjacking
    • 拖放劫持不受同源策略限制,cookiejacking攻击是拖放劫持的代表

2、实现

(1)攻击者在控制域的页面中,创建iframe元素,其src指向目标域的某页面。

(2)目标域接收到请求后,未检查referer进行第三方跨域阻断。也未在响应中设置X-Frame-Options字段,使得目标域页面在iframe中成功加载

(3)设置iframe为透明层,同时创建可见层,透明层覆盖可见层。一般,两者存在映射关系,比如可见层的某按钮对应透明层的某按钮

(4)用户操作可见层,但实际操作的是透明层。达到劫持效果

3、防护

(1)X-Frame-Options头部字段

X-Frame-Options是微软提出的一个http响应头部字段,专门用来防御利用iframe嵌套的点击劫持攻击。

并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。

这个头有三个值:(只要设置任意一种即可有效防止操作劫持漏洞)

DENY               // 拒绝任何域加载  
SAMEORIGIN         // 允许同源域下加载  
ALLOW-FROM         // 可以定义允许frame加载的页面地址

php中设置示例:
header ( "X-FRAME-OPTIONS:DENY"); 

(2)检查referer

当iframe元素发出请求时,referer字段携带当前页面的地址,服务端接收后代码进行检查,禁止跨域请求目标url

posted @ 2023-10-21 20:03  挖洞404  阅读(30)  评论(0编辑  收藏  举报