文章目录
一、实验题目二、实验步骤及结果配置相关环境Task1: Posting a Malicious Message to Display an Alert WindowTask 2: Posting a Malicious Message to Display CookiesTask 3: Stealing Cookies from the Victim’s MachineTask 4: Becoming the Victim’s FriendTask 5: Modifying the Victim’s ProfileTask 6: Writing a Self-Propagating XSS WormTask 7: Defeating XSS Attacks Using CSP一、实验题目
跨站点脚本(XSS)是一种常见于web应用程序中的计算机安全漏洞。此漏洞使攻击者有可能将恶意代码(如JavaScripts)注入受害者的web浏览器。
为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些保护方法,故意使其容易受到XSS攻击。学生们需要利用这些漏洞发动攻击,就像Samy Kamkar在通过臭名昭著的Samy蠕虫对MySpace所做的那样。此攻击的最终目标是在用户之间传播XSS蠕虫,这样无论谁查看受感染的用户配置文件都会受到感染,无论谁受感染都会将您(即攻击者)添加到他/她的好友列表中。
二、实验步骤及结果
配置相关环境
Task1: Posting a Malicious Message to Display an Alert Window
(1)正常登录站点,这里我以samy身份登录;接下来在profile插入XSS并保存
(2)回到个人主页
Task 2: Posting a Malicious Message to Display Cookies
(1)回到编辑页面,把alert中的xss代码替换成document.cookie后保存
(2)得到cookie
Task 3: Stealing Cookies from the Victim’s Machine
(1)nc监听端口5555,xss会把Cookie发送到自己的IP:10.9.0.1
(2)开启监听后发起XSS攻击
(3)得到数据
Task 4: Becoming the Victim’s Friend
(1)在获取到接口后,需要在个人中心的about me里,插入JavaScript代码,所有访问自己的人都会触发代码调用把samy添加为朋友的接口
(2)保存后,所有访问者均会触发这段代码,我们可以用Alice登录
(3)目前没有samy,然后在newest栏目访问samy
(4)Alice不做任何操作,回到好友页
(5)Question1:Explain the purpose of Lines1 and Lines2,why are they are needed?
Answer:站点存在了CSRF防御机制,用户访问页面有个服务器下发的token值,直接构造添加朋友的url是不够的,因为不知道对方的token是多少,只是访问http://www.seed-/action/friends/add?friend=59,是不够的,详见CSRF实验。
(6)Question2:If the Elgg application only provide the Editor mode for the “About Me”field,i.e.,you cannot switch to the Text mode,can you still launch a successful attack?
Answer:攻击点有很多,Brief description,Location,Interests等字段,都可以注入Script代码。
Task 5: Modifying the Victim’s Profile
(1)首先用自己的账户(samy)登录,查看修改数据的请求包
(2)由上可知,接口地址为:http://www.seed-/action/profile/edit;以post方式提交数据构建一个Script
(3)Alice账户登录后访问samy,刷新个人主页,发现profile已被修改:
(4)Question:Why do we need Line1?Remove this line,and repeat your attack.Report and explain your observation
Answer: 在samy的profile about me中,插入了JavaScript代码,在提交成功后,如果samy自己访问了自己的主页,同样会触发这段代码,而这段代码的about字段是空的,只是修改了其他字段内容,所以,只要samy访问了自己的主页,那么注入的script代码会被修改为空,后续其他人访问samy也就不会触发攻击了; if判断,让代码判断当前用户的guid,如果是samy的,则不执行攻击
Task 6: Writing a Self-Propagating XSS Worm
(1) link型蠕虫
只要让代码调用自己网站的 js,再把刚刚的代码放入自己网站的 js 中即可。
(2)DOM型蠕虫
①编辑 Samy 的 profile,使其可以把自己赋值到别人的 profile 中
②登录 Alice 账号,查看 Samy 的 profile,看到自己的 profile 已经被修改了
③登录 Boby 账号,查看 Alice 的 profile,看到自己的 profile 已经被修改了
Task 7: Defeating XSS Attacks Using CSP
(1)原始状态为
(2)修改 apache_csp.conf:
(3)看到 的 4、5、6 变成了 OK
(4)修改 phpindex.php
(5)看到 的 1、2、4、5、6 变成了 OK