网络攻防-XSS攻击实验

发布时间:2024年01月07日

一、题目内容

????????跨站点脚本(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使用的是类似报名单的机制,向客户端指明那些外部资源是可以进行加载的。

文章来源:https://blog.csdn.net/qq_64389397/article/details/135434141
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。