SeedLabs-Web安全-CSRF实验

本文详细介绍了CSRF攻击的原理和实践,通过SeedLabs的Web安全实验,阐述了如何利用GET和POST请求进行CSRF攻击。实验中,攻击者萨米试图使爱丽丝在Elgg社交网络中添加他为好友,通过获取用户的ID并构造恶意链接实现。此外,文章还讨论了Elgg的防护机制,包括Elgg的countermeasure和SameSite Cookie的使用,以防止CSRF攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SeedLabs-Web安全-CSRF实验



前言

CSRF注入的实验记录


提示:以下是本篇文章正文内容,下面案例可供参考

一、Task1 攻击

1.1 观察HTTP请求

在这里插入图片描述
使用HTTP Header Live查看数据包,了解get post请求

1.2 使用GET请求攻击CSRF

在这个任务中,我们需要Elgg社交网络中的两个人:Alice和Samy。萨米想成为一个爱丽丝的朋友,但爱丽丝拒绝把他添加到她的埃尔格朋友名单。萨米决定利用CSRF攻击实现他的目标。他给爱丽丝发送了一个URL(通过电子邮件或在Elgg发布的帖子);爱丽丝很好奇,咔哒一声在网址上找到了萨米的网站:www.attacker32.com假装你是萨米描述你如何构建网页的内容,所以一旦Alice访问网页,Samy被添加到Alice的好友列表中(假设Alice与Elgg有一个活跃的会话)。要向受害者添加朋友,我们需要确定合法的add - friend HTTP请求(一个GET请求)的样子。我们可以使用“HTTP Header Live”工具来进行调查。在这个任务中,你不允许编写JavaScript代码来启动CSRF攻击。你的工作是让攻击成功当Alice访问网页时,甚至不需要在页面上做任何点击(提示:你可以使用img标记,它会自动触发一个HTTP GET请求)。埃尔格已经实施了一个对抗CSRF攻击的对策。在添加好友的HTTP请求中,您可能会注意到,每个请求都包含两个奇怪的参数,即elgg ts和elgg令牌。这些参数由反对策使用,因此如果它们不包含正确的值,请求将包含正确的值不能被埃尔格接受。我们已经禁用了这个实验室的对策,所以没必要包括这两个参数在伪造的请求中。

用samy的账号登录,然后member下,alice,有个Add friend按钮,很明显就是添加为朋友的
在这里插入图片描述
但这仅仅是自己添加Alice,现在需要让Alice点击它,网站功能大家都一样,那么自然就是获取这个按钮对应的接口功能:Add friend,利用前面的HTTP Header Live查看请求接口时数据包
在这里插入图片描述
可以看到,addfriend=56就是
后面的字段是随机值,不管它,值得注意的是请求头里的Cookie,这个就是当前samy的身份令牌,现在构造一个url,然Alice去调用这个接口。
不过,这里的id是Alice,需求是让Alice添加samy为好友,那么自然要知道samy的ID是多少,F12查看页面源码
在这里插入图片描述
根据56搜索到这个字段,证明id存在于页面中,那么自然也有samy的id,接着搜索
在这里插入图片描述
页面是线性的,所以第一个自然就是samy的,熟悉html的也可根据属性来判断,方法很多,这里不列举了。
得到id=59,接着构造API以及CSRF
最简单的,就是在自己的站点放个img标签,吸引Alice点她,比如这妹子喜欢的男明星八卦链接

<img src="http://www.seed-server.com/action/friends/add?friend=56">

放到自己的站点上
然后Alice点开站点浏览八卦时,就会加载上面的接口了,当前,前提时Alice正在使用这个网站,否则没有Cookie的
在这里插入图片描述

在这里插入图片描述
成为好友了

1.3 使用POST请求攻击CSRF

在加入爱丽丝的好友名单后,萨米想做更多的事情。他想让爱丽丝说“萨米”是我的英雄,所以所有人都知道这一点。爱丽丝不喜欢萨米,更别说这个了在她的资料里。萨米计划使用CSRF攻击来实现这个目标。这就是我们的目的的任务。攻击的一种方法是在爱丽丝的Elgg账户上发布一条信息,希望爱丽丝会点击消息中的URL。这个URL将引导爱丽丝到你的(即,萨米的)恶意网站www。攻击者32.com,在那里你可以发起CSRF攻击。你攻击的目的是修改受害者的资料。特别是,攻击者需要伪造一个请求修改受害用户Elgg的个人资料。允许用户修改他们的配置文件种子实验室- CSRF实验室5是埃尔格的一个特点。如果用户想修改个人资料,他们可以到Elgg的个人资料页面,填写表格,然后将表单——发送一个POST请求——提交到服务器端脚本/profile/edit.php,它处理请求并执行概要文件修改。服务器端脚本edit.php同时接受GET和POST请求,因此可以使用相同的技巧就像Task 1中的攻击一样。但是,在此任务中,您需要使用POST请求。也就是说,攻击者(您)需要从受害者的浏览器伪造一个HTTP POST请求,当受害者正在访问他们的恶意网站。攻击者需要知道这样一个请求的结构。你可以观察请求的结构,即请求的参数,通过对概要文件进行一些修改并使用“HTTP Header Live”工具监视请求。你可能会看到类似的东西以下。不同于HTTP GET请求,它将参数附加到URL字符串,参数HTTP POST请求的所有内容都包含在HTTP消息体中(见两次✰内容)符号):
在这里插入图片描述
在理解了请求的结构之后,您需要能够从使用JavaScript代码攻击网页。为了帮助您编写这样的JavaScript程序,我们提供了一个以下代码栏中的示例代码。您可以使用此示例代码来构建您的恶意网站用于CSRF攻击。这只是一个示例代码,您需要修改它以使其能够为您的攻击工作。

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值