seedlabCSRF跨站请求伪造
一、实验目的
本实验的目的是帮助学生理解跨站请求伪造(CSRF或XSRF)攻击。CSRF攻击涉及受害者用户,受信任的站点和恶意站点。受害用户在访问恶意站点时会与受信任的站点进行活动会话。恶意站点将对受信任站点的HTTP请求注入受害者用户会话,从而造成损害。
二、实验步骤与结果
Task1:发布恶意消息以显示警报窗口
1、在samy个人的资料的Brief description区域放入如下代码:
之后,如果有人访问了Samy的主页,这段代码会执行,并且显示XSS消息.
下图是登录Alice之后访问samy的主页后的结果:
实验能够成功的原因就是关闭了Elgg的防护策略。
此外,如果网站的某个漏洞窗口被限制了输入长度导致大文本的代码无法输入,可以使用如下代码:
将某个路径下的js文件作为输入。
Task2:发布恶意消息以显示Cookie
显示cookie跟上一个任务一样,只需把输入代码改为:
即可。
此时通过Alice的账户来访问Samy的主页即可得到如下内容:
Task3:从受害者的机器里窃取cookie
此实验需要在受害者访问页面的时候,向攻击者的主机发送cookie的信息。所以可以在
samy的网站输入如下语句:
此代码就是向IP地址为10.1.2.5的主机5555发送包含了cookie的值的HTTP报文。
之后,攻击者可以在自身主机开启5555端口的监听,一旦其他人访问该主页,其cookie
就可以回显给攻击者。
1 | nc -l 5555 -v |
如果该实验是在一个主机中做的,那么可以把上述代码的IP地址换为本地地址127.0.0.1.
之后开启对本地的监听。
输入为:
Alice访问它时,攻击者回显cookie:
成功。
Task4:成为受害者的好友
首先使用HTTP Header Live查看添加samy好友的url.
发现url为:http://www.xsslabelgg.com/action/friends/add?friend=47&ts...&token…
要想访问页面的时候添加好友,那么需要在访问页面的时候发送好友请求。大体的代码指导书已经给出来了,只是缺少必要的url,可以根据上方分析得到的url来进行填写。填之前需要点击“Edit HTML”来进行输入。否则网页会把输入的内容自动完善成HTML的语言,也就无法被识别为js代码。
可以在给出的代码中填入url:
var sendurl=”http://www.xsslabelgg.com/action/friends/add" + “?friend=47” + token +ts ;
保存后,使用Alice访问该主页
此外,保存网页之后,samy也加了自己为好友:
说明实验成功。
问题1:因为ts,token这两个值是为了防范CSRF攻击而嵌在页面中的,没有这两个变量请求便不会通过,
问题2:不会,因为输入的文本会被添加一些html的符号转化为html格式的语言,不会被执行。
Task7:对策
1、只打开HTMLawed对策,观察现象。
此时在samy的个人主页上显示了我们部分输入的消息,并没有转化为js代码执行,而把过滤掉了,只显示中间的部分。
2、同时打开两种保护机制:
Text.php:
url.php:
Dropdown.php
Email.php
同时开两种保护机制其实也是和第一问显示一样的,不过处理的过程不一样,因为如果返回samy的输入窗口的话,会发现很多符号都被替换掉了。
- 本文作者: 李小混
- 本文链接: https://lixiaohun.github.io/post/11.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!