漏洞挖掘 | 点击劫持

点击劫持(X-Frame-Options未设置)

漏洞描述

点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户在不知情的情况下点击了透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上,攻击者常常配合社工手段完成攻击。如果Web应用服务器未设置X-Frame-Options,程序页面可能被嵌入到其他网页中,被恶意用户利用可能发起钓鱼攻击或欺骗其他用户。

风险等级

漏洞测试

直接访问Web应用根目录,然后抓包查看HTTP响应头中是否存在X-Frame-Options头信息。

Click-Jacking POC

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Click-Jacking</title>
</head>
<body>
    <iframe src="http://www.xxx.com/" width="1000" height="1000" scrolling="no"></iframe>
</body>
</html>

漏洞危害

攻击者利用Frame框架可使网页嵌入到其他网站中,用于对其他用户进行欺骗或钓鱼攻击。

修复建议

X-Frame-Options需要在HTTP响应头中进行设置, X-Frame-Options 有三个可选的值:

  • DENY:浏览器拒绝当前页面加载任何Frame页面;
  • SAMEORIGIN:Frame页面的地址只能为同源域名下的页面;
  • ALLOW-FROM:允许frame加载的页面地址。

Java代码在Filter拦截器的响应里面增加:

response.addHeader("x-frame-options","SAMEORIGIN");

Nginx添加如下配置到 “http”或“server” 或“location”的配置中:

add_header X-Frame-Options SAMEORIGIN

Apache配置:

Header always append X-Frame-Options SAMEORIGIN

IIS添加如下配置到Web.config中:

<system.webServer>
  ...
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>
  ...
</system.webServer>
每一个不曾起舞的日子 都是对生命的辜负
原文地址:https://www.cnblogs.com/wlfsky/p/10570569.html