美文网首页
10.WebGoat之请求伪造

10.WebGoat之请求伪造

作者: imsilence | 来源:发表于2019-03-20 21:21 被阅读0次

    CSRF

    CSRF全称跨站请求伪造,是利用用户对浏览器的信任(XSS利用用户对站点的信任),需要用户进行点击或者访问攻击站点,当用户点击攻击连接时自动完成未授权的修改数据请求,或当用户访问攻击站点(被用户信任的站点)时,浏览器自动发起针对用户正在访问(已访问)站点(被攻击站点)的命令/请求

    防御

    1. 根据请求头referer,对请求来源进行检查

    2. 在服务器端生成随机token,浏览器在发起针对数据的修改请求将token提交,由服务器端验证通过够进行操作逻辑,token需要至多一次有效,并具有有限的生命周期

      a. 表单提交修改数据

       可将token生成在表单内使用input:hidden标签进行提交
      

      b. Ajax提交修改数据

       可将token生成在cookie内(cookie不能设置为httponly),ajax请求前通过js读取cookie中的token并添加到request body或者http requestheader中进行提交
      
    3. 针对需要用户授权的请求,提示用户输入身份认证后再继续操作

    4. 针对频繁操作提示输入验证码后再继续进行操作

    解题

    1. Cross-Site Request Forgeries 03

      10.01.png 10.02.png 10.03.png 10.04.png 10.05.png 10.06.png 10.07.png
    2. Cross-Site Request Forgeries 04

      10.08.png 10.09.png 10.10.png 10.11.png 10.12.png
    3. Cross-Site Request Forgeries 07

      10.13.png 10.14.png 10.15.png 10.16.png 10.17.png
    4. Cross-Site Request Forgeries 08

      10.18.png 10.19.png 10.20.png 10.21.png

      这里很奇怪有个很奇怪的问题,调试了下webgoat代码发现在重复进行登陆是SecurityContextHolder.getContext().getAuthentication().getPrincipal()返回的用户信息依然为先前登陆的用户信息,抓包分析登陆前后请求sessionid已经变化,这里需要再对spring security进行研究,才能得到结论。

      解决方法:进行一次退出登录,并使用延迟200毫秒后自动提交表单(延迟时间不宜过长,因为webgoat有自动退出功能,如果退出登录,第一个窗口会自动退出到登陆页面)

      10.22.png 10.23.png 10.24.png 10.25.png 10.26.png

    欢迎添加公众号【扯淡er】学习交流

    扯淡er

    相关文章

      网友评论

          本文标题:10.WebGoat之请求伪造

          本文链接:https://www.haomeiwen.com/subject/xgqopqtx.html