漏洞报告模版 - 点击劫持(X-Frame-Options头丢失)漏洞

admin 2022年4月19日11:38:10评论340 views字数 3165阅读10分33秒阅读模式

2.点击劫持(X-Frame-Options头丢失)漏洞

漏洞名称

点击劫持(X-Frame-Options头丢失)漏洞

漏洞地址

https://mirrors.tuna.tsinghua.edu.cn/

漏洞等级

低危

漏洞描述

点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将不知情的情况下点击透明的iframe页面,通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

漏洞成因

攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将不知情的情况下点击透明的iframe页面,通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

当X-Frame-Options HTTP 响应头丢失的时候,攻击者可以伪造一个页面,该页面使用前端技术精心构造一些诱惑用户点击的按钮、图片,该元素下方就是一个iframe标签,当用户点击后上层的元素后,就相当于点击了iframe标签引入的网页页面。

漏洞危害

盗取用户资金、获得用户的敏感信息或者与XSS或CSRF等其他攻击手段配合。

修复方案

通用方案

配置WebServer,更改配置文件,添加自定义响应头。

X-Frame-Options HTTP 响应头, 可以指示浏览器是否应该加载一个 iframe 中的页面。 网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。

使用一个HTTP头——X-Frame-Options。X-Frame-Options可以说是为了解决ClickJacking而生的,它有三个可选的值:

DENY:浏览器会拒绝当前页面加载任何frame页面

SAMEORIGIN:frame页面的地址只能为同源域名下的页面

若网站内有使用iframe标签链接同源资源的,需要设置为SAMEORIGIN。

Apache

配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 site 的配置中:

Header always append X-Frame-Options SAMEORIGIN

Nginx

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 http, server 或者 location 的配置中:

add_header X-Frame-Options SAMEORIGIN;

IIS

配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:

<system.webServer>
  ...
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>
  ...
</system.webServer>

Tomcat

在conf/web.xml中添加如下配置:

C:Program FilesApache Software FoundationTomcat 7.0confweb.xml

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>SAMEORIGIN</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

测试过程

点击劫持

使用CURL请求网站,查看响应头是否包含X-Frame-Options

curl -I -X GET http://www.xss.tv/

未修复

漏洞报告模版 - 点击劫持(X-Frame-Options头丢失)漏洞
image-20211223172333242

不存在X-Frame-Options响应头。

修复后

curl -I -X GET -k https://122.115.55.17:8543/share/login
curl -I -X GET --insecure https://122.115.55.17:8543/share/login
漏洞报告模版 - 点击劫持(X-Frame-Options头丢失)漏洞
image-20211223181000436

点击劫持漏洞利用代码

<style>
/* 此段copy自 【作者:米斯特安全攻防实验室-Vulkey_Chen 博客:gh0st.cn】*/
    iframe {
        border0px/*边框属性为0*/
        height100%/*框架高度100%*/
        width100%/*框架宽度100%*/
        /*控制不透明度的属性,兼容各大浏览器*/
        filteralpha(Opacity=0); /*提供给IE浏览器8之前的*/
        -moz-opacity0/*提供给火狐浏览器的*/
        -webkit-opacity0/*提供给webkit内核的*/
        -khtml-opacity0/*提供给KHTML内核的*/
        -ms-filter"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"/*提供给IE8之后的*/
        opacity0;
        /*控制不透明度的属性,兼容各大浏览器*/
    }
</style>
<style>
iframe {
        position: fixed; /* 绝对定位 */
        topcalc(-13px * 100);
        leftcalc(-20px * 100); /* 按钮左上各有20px、13px空隙,此举使按钮出现在左上角 */
        transform-origin0 0 0/* 放大中心设为左上角 */
        transformscale(20); /* 放大20倍 */
    }
</style>
<iframe src="http://www.xss.tv/" name="(alert)(document.cookie)" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no">
</iframe>

复测情况

已修复

测试人员

南风向晚

粉丝主动打赏看这里


漏洞报告模版 - 点击劫持(X-Frame-Options头丢失)漏洞


全系列共105篇,持续更新中


原文始发于微信公众号(利刃藏锋):点击劫持(X-Frame-Options头丢失)漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日11:38:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞报告模版 - 点击劫持(X-Frame-Options头丢失)漏洞http://cn-sec.com/archives/926206.html

发表评论

匿名网友 填写信息