CSRF-pikachu靶场CSRF通关
csrf在CSRF的攻击场景中攻击者会伪造一个请求这个请求一般是一个链接然后欺骗目标用户进行点击用户一旦点击了这个请求整个攻击就完成了。所以CSRF攻击也成为one click攻击利用受害者的身份执行恶意请求。 CSRF攻击利用了Web应用程序对用户的信任。攻击者通过诱使用户访问恶意网站或点击恶意链接使受害者在已登录的状态下访问目标网站。然后攻击者利用受害者的身份在目标网站上执行恶意请求例如转账、更改密码或删除数据。 以下是CSRF攻击的一般工作流程 1. 受害者登录受害者在目标网站上进行登录并获得有效的会话凭证。 2. 攻击者构造恶意请求攻击者在恶意网站上构造一个包含目标网站请求的恶意请求例如转账请求。 3. 诱使受害者访问恶意请求攻击者通过各种手段诱使受害者访问恶意网站例如通过发送钓鱼邮件、社交媒体诱导等。 4. 自动执行恶意请求由于受害者在目标网站上已经登录浏览器 会自动发送恶意请求并在受害者不知情的情况下执行。csrf-get型右侧有提示用户名和密码当我们修改数据并抓包时能明显的看到是通过get方式传递请求 ?sexboyphonenum121addusemail1123134%40qq.comsubmitsubmit 服务器收到get请求后修改数据接下来照着上面仿照构造一个恶意链接http://node.hackhub.get-shell.com:60900/vul/csrf/csrfget/csrf_get_edit.php?sexboyphonenum110addhackedemailkobepikachu.comsubmitsubmit 那我们可以看到这个链接是否有点太自然了点呢 可以把这个长链接改成短链接 这需要用到https://www.c1n.cn/ 需要注册 缩短后的链接看起哎更具诱惑力一点https://s.c1ns.cn/7nDLz访问该恶意链接后kobe的信息被成功修改身份验证是自动的浏览器在请求那个“恶意 URL”时会自动带上你当前登录 kobe 账号的 Cookie。 缺乏交互校验服务器收到请求后只看 Cookie 发现你是 kobe就直接执行了修改它并没有确认“这个 修改动作是否真的是你在原始页面上点击提交的”。csrf-post型试试修改并抓包很明显可以看到是通过post提交请求的这种方式比get安全一点但也安全不到哪去 漏洞的核心原理与 GET 型是一样的即服务器只验证了 Cookie你是谁但没有验证请求的来源你是否自愿发送 需要写一个看似正常的网页攻击页面在其中隐藏一个表单表单的 action 指向修改资料的地址表单项填你想篡改的值html head script window.onload function() { document.getElementById(postsubmit).click(); } /script /head body form methodpost actionhttp://node.hackhub.get-shell.com:64146/vul/csrf/csrfpost/csrf_post_edit.php input idsex typetext namesex valuegirl / input idphonenum typetext namephonenum value12345678922 / input idadd typetext nameadd valuehacker / input idemail typetext nameemail valuekobepikachu.com / input idpostsubmit typesubmit namesubmit valuesubmit / /form /body /html通过上述html代码成功让kobe无痛变成小女孩了 自动触发装置script 部分 window.onload function() { document.getElementById(postsubmit).click(); } window.onload这是一个事件监听器。它的意思是等这个网页所有的文字、图片都加载完了立刻执行下面的动作 .click()这行代码模拟了人的手指点击那么就有人要问了不会html怎么办呀?抓包时候直接右键这里有一个engagement tools他这里有一个Generate CSRF PoC直接一键生成剩下的复制粘贴就可以了这个页面可能会出现404这种情况多试几次就好csrf-token型服务器不仅看你的 Cookie身份证还要看你有没有带上一串由服务器随机生成的token现在我们试一下把token去掉几个字再发包看能不能修改成功应该还是没有修改成功而且经过测试每次的token值都不同对于这种情况我们需要借助burpsuite里面的一个插件CSRF Token Tracker 下载教程extensions-BApp Store抓个包先发到重放器里面1.设置小图标-follow redirections(跟随重定向)-always第二步修改csrf token tracker中的内容host参考数据包的内容token和值也是第三个模拟发包对应浏览器中的资料也会修改原理 在 Repeater重放模块中如果你手动修改参数点击发送服务器会因为 Token 过期而拒绝你。 而CSRF Token Tracker可以 1.同步获取当你点击“发送” POST 请求时插件会在后台先悄悄发一个 GET 请求给那个修改信息的页面。 2.提取 Token插件从返回的 HTML 源码中利用正则表达式或你指定的参数名精准地找到当前最新的 token 值。 3.自动替换插件把这个最新的 Token 自动填入你准备发送的 POST 请求包里。 3.跟随重定向确保整个修改和跳转过程能像真实用户操作一样连贯。为了防止CSRF攻击可以采取以下一些防御措施 1. 随机令牌在每个表单提交或敏感操作中为用户生成一个随机的、单次使用的令牌CSRF Token。在提交请求时验证令牌的有效性确保请求来源于合法的用户会话。 2. SameSite Cookie属性使用SameSite Cookie属性来限制Cookie在跨站请求中的发送可以阻止许多CSRF攻击。 3. 验证来源Referer头通过验证请求的Referer头确保请求来自合法的来源网站。但需要注意Referer头并不是100%可靠因为某些浏览器或代理可能会修改或删除该头。 4. 双重身份验证2FA为用户提供双重身份验证机制例如短信验证码、身份验证应用程序等以增加账户安全性。 5. 安全编程实践开发人员应该遵循安全编程实践包括对用户输入进行验证和过滤、使用适当的授权和身份验证机制等。