關於繞過域名(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.com\login.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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM