• 记一次xss漏洞挖掘


      博客园在整改中,无法更新文章,难受啊...

      记录一次react的xss漏洞发现,比较有意思:

       某个站:  

       直接输入<xxx>,直接把我跳转到了404,猜测可能做了一些验证:

       尝试多重编码,发现都被转义.网页上也没地方执行了图片

       后来尝试html实体义:

       

    &lt;img/src=1&gt;-

      直接请求,也被跳转到了404,进行了二次url编码,发现&lt;img/src=1&gt;-掉落在网页源码中可见,并且解析执行了

      

      查看源码很奇怪,奇怪点就是因为14个输出的地方全部对<>这些进行了转义:

      那么为什么会触发xss呢?

        真正的触发点:

            

    <div class="content desc">
          xxxx testtest&lt;img/src=1&gt; yyyyyy
          </div>

      明明转义了为啥还能触发?

      全局搜索了下class名:

          

      发现在js里面调用了

        

    ), r.default.createElement("div", {
                    className: "content desc",
                    dangerouslySetInnerHTML: {
                        __html: b
                    }

      js里面创建了div,设置class name然后设置数据,在body里面这样使用:

    <div dangerouslySetInnerHTML={{ __html: '<div>可控点</div>' }} />

    这样使用dangerouslySetInnerHTML是没有安全风险的,但是在js里面使用dangerouslySetInnerHTML是可能存在安全风险的,它会把实体编码二次转义回<img/src=1>

    最终触发xss攻击. 通过这个xss让我明白,一切输出都是不安全的,都有被攻击的风险,即使是有转义,也可能被攻击。也透露了一个小技巧,输出点有class="xxx",id="xxx"等的时候,可以全局搜索下属性名,看看他是怎么处理属性的。

          

       

  • 相关阅读:
    从MySQL全备文件中恢复单个库或者单个表
    594. Longest Harmonious Subsequence
    205. Isomorphic Strings
    274. H-Index
    219. Contains Duplicate II
    217. Contains Duplicate
    操作系统-多用户如何理解(Linux)
    Java-面向对象
    C++-有感
    C++-Typedef结构体遇上指针
  • 原文地址:https://www.cnblogs.com/piaomiaohongchen/p/14578362.html
Copyright © 2020-2023  润新知