• 《WEB安全漏洞100讲》(第4讲)CSRF漏洞


    1.CSRF漏洞原理

    CSRF(Cross-site request forgery),跨站请求伪造,简写 CSRF/XSRF。指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

    CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用

    2.CSRF漏洞测试

     上文说过了CSRF漏洞不盗取用户身份信息,而是利用用户身份信息去伪装成受信任的用户来发起请求。一般情况下,我们可以通过抓包软件抓取数据包,然后以GET或POST形式制作成链接或页面,之后诱骗目标用户点击。目标用户点击后,因为浏览器会自动携带cookie向服务器发送请求,这样用户可能在不知情的情况下完成了对自己不利的操作

    比如恶意用户lisi发现某银行个人网银的转账请求如下所示(注意www.testbank.com为本地演示地址):

    1. GET /personTransfer.do?account=612**158&money=1000.0&name=lisi HTTP/1.1
    2. Host: www.testbank.com
    3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
    4. Cookie:
    5. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    6. Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    7. Accept-Encoding: gzip, deflate
    8. Referer: http://www.testbank.com
    9. Upgrade-Insecure-Requests: 1
    10. Sec-Fetch-Dest: document
    11. Sec-Fetch-Mode: navigate
    12. Sec-Fetch-Site: cross-site
    13. Sec-Fetch-User: ?1
    14. Te: trailers
    15. Connection: close

    lisi现在希望大家都给自己转账,他将account改为自己的账号,name改为他的名字,money改为1000.0元。之后使用Burp构造CSRF POC。

     我们可以点击下方Copy Html将它粘贴成一个html文件,置于我们的服务器下,然后将这个链接发给目标用户,想办法让他点击即可。

    这里为了演示,我直接选择Test in browser,之后会出现一个URL,点击Copy,这个链接就是给目标用户点击的。

     当我访问这个链接后http://burpsuite/show/3/qizpy26u7wa3myaejlqbzowa66ktko5n,可以看到浏览器携带着我的Cookie向lisi发起了转账操作,这样在我不知情的情况下,lisi就盗取了我的money。

    你可以清晰的看到,点击不明链接的危害有多大!

    3.CSRF漏洞修复

    (1)使用token

    CSRF攻击想要成功,攻击者必须要准确地预测所有的参数从而伪造出合法的请求。所以我们可以在请求中添加一个随机的参数token,它是随机的,并是一次性的,并在服务器端检验,如果请求中没有token或者token的内容不正确,那么就拒绝该请求。

    (2)检测Referer

    通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,如果Referer是以自己的网站开头的域名,那么就说明该请求是合法的。

    (3)关键操作只接受 POST 请求。

  • 相关阅读:
    java毕业设计宠物销售管理系统Mybatis+系统+数据库+调试部署
    【23种设计模式】组合模式(八)
    form表单内嵌套动态表格添加校验功能
    物联网通信协议-MQTT及使用python实现
    深度剖析Linux信号机制
    【数据库】数据库的慢查询问题
    AWS认证SAA-C03每日一题
    Spring6学习技术|IoC+基于xml管理bean
    MVC分页
    牛客小白月赛79
  • 原文地址:https://blog.csdn.net/SouthWind0/article/details/128194537