网络攻防-XSS攻击实验
一、题目内容
????????跨站点脚本(XSS)是一种常见于web应用程序中的计算机安全漏洞。此漏洞使攻击者有可能将恶意代码(如JavaScripts)注入受害者的web浏览器。
????????为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些保护方法,故意使其容易受到XSS攻击。学生们需要利用这些漏洞发动攻击,就像Samy Kamkar在2005年通过臭名昭著的Samy蠕虫对MySpace所做的那样。此攻击的最终目标是在用户之间传播XSS蠕虫,这样无论谁查看受感染的用户配置文件都会受到感染,无论谁受感染都会将您(即攻击者)添加到他/她的好友列表中。
二、实验步骤及结果
Task1:Posting a Malicious Message to Display an Alert Window
1.在个人资料中添加一个JavaScript程序,当查看个人资料时,回显示一个警报窗口。在Alice的简要概括中插入以下JavaScript程序。
2.保存之后,可以看到个人简介页面出现了一个警示窗口,显示了我们想要展示的内容。
Task2:Posting a Malicious Message to Display Cookies
1.回到编辑界面,使用document.cookie方法获取用户的cookie,并将其使用任务一中的方法在警示窗口中展示出来。
2.回到个人信息界面,可以看到警示窗口已经显示出了个人的cookie信息。
Task3:Stealing Cookies from the Victim’s Machine
1.在攻击者的电脑上使用nc -lknv 指令对对应的端口进行监听。
2.使用插入图片的方式使得服务器可以对链接发起访问,将连接修改为攻击者的主机IP地址和对应的端口。并且向该主机发送cookie信息。
3.保存修改的信息后,可以看到监听的端口返回了连接信息,并且展示了获取的cookie信息。
Task4:Becoming the Victim’s Friend
1.首先需要获取添加好友的HTTP请求格式,所以我们使用Alice的用户对samy发起添加好友操作,使用HTTP Header Live插件获取HTTP请求信息。然后删除好友samy。
2.查看对应的url。
3.将获取到的信息补充到JavaScript代码框架中的sendurl中。然后登录samy的账户,将这段代码复制到about me中,注意要在html编辑模式。
4.登录alice的账户,此时Alice没有好友。
5.点击进入samy的个人简介页面。
6.此时刷新后可以看到samy已经编程alice的好友了。
说明ts和token两行的目的,为什么需要它们?
站点存在了CSRF防御机制,用户访问页面有个服务器下发的token值,直接构造添加朋友的url是不够的,因为不知道对方的token是多少。
如果Elgg应用程序仅为“关于我”字段提供编辑模式,不能切换到文本模式,你还能发动成功的攻击吗?
攻击点有很多,Brief description,Location等字段,都可以注入Script代码。
Task5:Modifying the Victim’s Profile
1.与上一个任务相同,首先我们需要获取编辑个人信息的HTTP请求的详细信息。对samy的个人信息进行修改,然后使用HTTP Header Live插件获取HTTP请求信息。
2.在请求信息中可以看到post的格式如下:
3.由获取的信息可知,接口的url地址,post提交数据的方式,使用这些信息填入JavaScript框架的对应信息中。然后添加到samy的个人简介中,注意要使用HTML编辑模式。
4.登录Alice的账号,此时Alice还没有简要概括。
5.点击进入samy的个人信息界面。退出后可以看到Alice的简要概括已经发生改变。
为什么要使用if判断语句?
如果不添加If判断,如果时samy自己进入个人简介,也会触发JavaScript代码,但是因为post的about me字段为空,那么这段JavaScript代码将会被清空,所以需要加上这段if判断,这样当当前用户是samy时,不会触发。
Task6:Writing a Self-Propagating XSS Worm
1.在传播病毒的同时,将病毒也复制在about me中,这样这段代码就会一直存在,所有访问都在自己的about字段添加这段代码,这样就能一直传第下去。在task5中,我们看到about me的字段名为description。DOM型蠕虫,就是自己创建一段js,然后复制自己,传递给description字段。需要给自己命名一个节点。将这段JavaScript代码复制到samy的about me 字段中。
2.保存,登录Alice账户,并且访问samy的个人信息界面。
3.刷新界面。
4.返回,可以看到Alice的就简要概括已经发生了变化。
5.查看Alice的个人信息,发现about me字段也已经发生变化,添加了我们编写的JavaScript代码。
6.登录Charlie的账户,并且查看Alice的个人信息界面。
7.返回可以看到Charlie的简要概括也已经发生变化。
8.查看Charlie的好友,发现Charlie已经添加了samy为好友。
9.进入Charlie的个人信息界面,可以看到Charlie的about me字段也发生了改变。?
Task7:Defeating XSS Attacks Using CSP
1.查看www.example32a.com
2.查看www.example32b.com
3.查看www.example32c.com
4.修改apache_csp.conf,在可以接受访问的名单中添加我们的节点example60.com。
5.重新建立和打开容器,再次访问网站,可以看到5,6都显示OK。
6.修改phpindex.php文件,在可接受的访问节点中添加我们的节点example60.com。
7.再次访问网站可以看到1,2,4,5,6都显示OK。
解释为什么CSP可以防御XSS攻击?
CSP使用的是类似报名单的机制,向客户端指明那些外部资源是可以进行加载的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!