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请求。也就是说