XSS--CSP绕过【firefox和chrome】和data://协议的使用

最近做一道关于XSS的CTF题目,用到了data://协议触发XSS,并且需要绕过带nonce的CSP策略。由于题目环境没有了,这里主要总结一下其中用到的一些技巧。

CSP绕过

在绕过csp策略的时候,找到了以下这篇文章https://www.jianshu.com/p/f1de775bc43e

由于使用了CSP策略,一般想要获取cookie的方法,主要是使用以下几种跳转语句。


XSS--CSP绕过【firefox和chrome】和data://协议的使用_第1张图片
image.png
XSS--CSP绕过【firefox和chrome】和data://协议的使用_第2张图片
image.png

对于带有nonce的CSP策略,要执行跳转语句可以使用这种方式绕过,但是由于Chrome和Firefox对于标签的补齐和解析使用了不一样的方式,因此这个绕过的payload有些不一样。

  • 在firefox上可以直接使用上述的payload,只要把跳转语句写入 src 指向的文件//14.rs就可以了,因为属性 a 后面的 " 会被优先解析,这样就会把里面的

    ,然后提交:

    XSS--CSP绕过【firefox和chrome】和data://协议的使用_第5张图片
    image.png

    XSS--CSP绕过【firefox和chrome】和data://协议的使用_第6张图片
    image.png

    没有发生弹框,检查元素可以发现<,>都被htmlspecialchars()
    转义了,看一下文件内容发现也被转义了,如下图:

    XSS--CSP绕过【firefox和chrome】和data://协议的使用_第7张图片
    image.png

    这个时候,我们发现读取url的函数使用的是file_get_contents($url),因此可以使用data://协议,构造下面的payload:

    getnote.php?url=data://text/plain;base64,JTNDc2NyaXB0JTNFYWxlcnQlMjgxJTI5JTNDL3NjcmlwdCUzRQ==
    

    访问,发现弹框了。


    XSS--CSP绕过【firefox和chrome】和data://协议的使用_第8张图片
    image.png

    XSS--CSP绕过【firefox和chrome】和data://协议的使用_第9张图片
    image.png

你可能感兴趣的:(XSS--CSP绕过【firefox和chrome】和data://协议的使用)