当前位置: 首页 > article >正文

PortSwigger靶场练习---跨站点请求伪造:CSRF vulnerability with no defenses没有防御措施的 CSRF 漏洞

跨站点请求伪造:CSRF vulnerability with no defenses

没有防御措施的 CSRF 漏洞

PortSwigger靶场地址: Dashboard | Web Security Academy - PortSwigger

前文提示:如何构建 CSRF 攻击

手动创建用于 CSRF 攻击所需的 HTML 可能很繁琐,尤其是在所需的请求包含大量参数或请求中存在其他怪癖时。构建 CSRF 攻击的最简单方法是使用内置在 Burp Suite Professional 中的 CSRF PoC 生成器:

  • 选择您想在 Burp Suite Professional 中测试或利用的任何请求。
  • 从右键菜单中选择参与工具/生成 CSRF PoC。
  • Burp Suite 将生成一些 HTML,这将触发选定的请求(不包括 cookie,这些将由受害者的浏览器自动添加)。
  • 您可以在 CSRF PoC 生成器中调整各种选项以微调攻击的各个方面。在某些不寻常的情况下,您可能需要这样做来处理请求的奇特功能。
  • 将生成的 HTML 复制到网页中,在登录了易受攻击网站的浏览器中查看,测试是否成功发出预期请求并执行所需操作。

题目:

此实验室的电子邮件更改功能易受 CSRF 攻击。

为了解决这个实验室问题,编写一些使用 CSRF 攻击更改查看者电子邮件地址的 HTML 代码,并将其上传到您的攻击服务器。

您可以使用以下凭证登录您的账户: wiener:peter

官方提示:

  1. 打开 Burp 的浏览器并登录您的帐户。提交 “Update email” 表单,并在您的 Proxy 历史记录中找到生成的请求。
  2. 如果您使用的是 Burp Suite Professional,请右键单击该请求并选择 Engagement tools / Generate CSRF PoC。启用包含自动提交脚本的选项,然后单击“重新生成”。

    或者,如果您使用的是 Burp Suite Community Edition,请使用以下 HTML 模板。您可以通过右键单击并选择“复制 URL”来获取请求 URL。

    <form method="POST" action="https://YOUR-LAB-ID.web-security-academy.net/my-account/change-email"> <input type="hidden" name="email" value="anything%40web-security-academy.net"> </form> <script> document.forms[0].submit(); </script>
  3. 转到漏洞利用服务器,将您的漏洞利用 HTML 粘贴到 “Body” 部分,然后单击 “Store”。
  4. 要验证漏洞利用是否有效,请单击 “View exploit” 自行尝试,然后检查生成的 HTTP 请求和响应。
  5. 更改漏洞利用中的电子邮件地址,使其与您自己的地址不匹配。
  6. 单击 “Deliver to victim”(交付给受害者)以解决实验室问题。

注意:

我们在本关卡中要扮演两个角色,一个是易受攻击者,一个是渗透测试人员。

第一步:

登录用户,提交一次邮箱修改。

第二步:

在HTTP记录中,找到一条更改邮箱的信息,这其中也包括了“ cookie ”,cookie和HTTP请求一起发送到了web应用程序,但是我们不能利用该消息,从渗透人员角度是没有这条会话信息的,现在因为我们扮演着两个角色,用户所有信息都是可见的。

第三步:

我们要尝试欺骗用户的浏览器发送这个HTTP请求,并且使用“我们自己的邮箱”,即“ 劫持账户 ”,这样的请求会被视为合法的,因为用户浏览器会自动附加会话cookie。
接下来我们需要让用户访问一个由我们控制的网站,每当有用户访问网站时,我们可以让浏览器使用HTML表单,“ method ”来规定怎样发送表单数据,POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。在需要一定安全性的时候优先考虑post。
按照做题的角度看,这段代码中的URL是错误的,现实中URL都是固定的,而这个实验室所出的题目每次的URL都是随机的,所以要根据个人的情况来填写。

最重要的一点是在末尾要添加上“ change-email ”修改邮箱的参数,一旦用户访问浏览器,他就会提交邮箱的修改。

表单通常都会有一个提交按钮,登录我们伪造的网站是一点,在另一个网站上验证身份是第二点,最后还要进行提交操作,这三点同时发送的概率太低了,所以我们可以使用JS自动提交HTML,下面代码中我们使用“ document.forms ”我们将所有表单作为文档的一部分进行访问,并且将索引值设为0,这相当于文档中第一个表单。


下方代码可在vs code编辑保存为HTML文件后直接使用浏览器打开。在这里假如我们就是“ 用户 ”访问我们的页面,浏览器会立即提交请求,更改邮箱为我们指定的邮箱地址。

<form method="POST" action="https://0a5100fc0470597580fa219100bb00f5.web-security-academy.net/my-account/change-email">

    <input type="hidden" name="email" value="anything%40web-security-academy.net">

</form>

<script>

        document.forms[0].submit();

</script>

 第四步:

下面我以易受攻击者的身份打开伪造的界面,我可以看到邮箱地址已经被修改,渗透人员已经通过跨站点请求伪造攻击接管了此账户,通过burp可以查找到非法的请求更换邮箱的信息,但是cookie信息是相同的,用户无意中的提交就会将电子邮件修改。

第五步:

但是我们并没有完成关卡,因为这是故意设定地很弱的程序,使用这种方法,应用程序都不知道自己已经成为了跨站点请求伪造攻击的受害者,区分不了合法请求或者非法请求。
要想完成该关卡,需要点击进入漏洞服务器,在里面粘贴我们的HTML代码,它会假装用户访问HTML,这样就算完成了这道关卡。 

(若点击后仍不显示通关,则可以点击“ store ”和“ view exploit ”,来查看邮箱是否被修改或刷新此界面)


http://www.kler.cn/a/518496.html

相关文章:

  • 单片机内存管理剖析
  • 【全栈】SprintBoot+vue3迷你商城(9)
  • 讯飞绘镜(ai生成视频)技术浅析(二):大模型
  • 矩阵的秩在机器学习中具有广泛的应用
  • (5)STM32 USB设备开发-USB键盘
  • Spring Boot应用中实现基于JWT的登录拦截器,以保证未登录用户无法访问指定的页面
  • 导出地图为pdf文件
  • [极客大挑战 2019]Upload1
  • 假期学习【Java程序】的实施方案
  • C#标准Mes接口框架(持续更新)
  • 三分钟简单了解一些HTML的标签和语法_02
  • 技术总结:FPGA基于GTX+RIFFA架构实现多功能SDI视频转PCIE采集卡设计方案
  • Linux 命令行网络连接指南
  • AIGC的企业级解决方案架构及成本效益分析
  • RocketMQ 的 Topic 和消息队列MessageQueue信息,是怎么分布到Broker的?怎么负载均衡到Broker的?
  • 数据结构——二叉树——堆(1)
  • 【后端开发】字节跳动青训营之性能分析工具pprof
  • 正则表达式以及Qt中的使用
  • 为什么UI导入png图会出现白边
  • Zbrush导入笔刷
  • Android中Service在新进程中的启动流程
  • “AI视觉贴装系统:智能贴装,精准无忧
  • 《论文翻译》KIMI K1.5:用大语言模型扩展强化学习
  • 保存复合型数据到h5文件
  • ptp同步时钟、ptp网络时间服务器、ptp主时钟、ptp从时钟、ptp精密同步时钟
  • 15 分布式锁和分布式session