这两天无意间发现一个地址,打开一看是我们学校某个部门的二级网站,还正在建设中,页面上明显的写着后台登录,忍不住就点进去了,一看是art2008 cms文章管理系统,试了个admin密码,进去了,猜想应该是刚建好的网站,还没来得及更改密码,便宜我了。

       进去后我就找上传的地方,找了几个试了试,都不行,后台支持fckeditor编辑器和ewebeditor编辑器两种,fckeditor对上传的文件有严格的判断,不仅是判断后缀名,还判断是不是文本文件。所以,想直接上传就不那么容易了。

       我上网下了份源码看了看,对上传过滤的还不错,毕竟这个程序使用的人挺多的,以前也爆过不少的漏洞,所以安全性还是不错的。后台只能上传指定的文件类型,我试着在上传设置里加了asp后缀的文件名,结果上传的时候提示不行,很搞笑的是错误提示是只能上传“”指定的文件类型,里面竟然还有我添加的类型,就是不让上传,我找到上传的代码,看到在代码里过滤了asp和php类型的文件,所以即使添加上也没用,不让传asp和php那我传aspx可以不,毕竟这样的服务器一般都是支持aspx的,结果还是不让传,一看代码是判断后缀里有没有.asp这几个字母,aspx当然有了,所以不能传,算了,换个思路,我把一句话马改成一个jpg文件,我上传jpg文件总行了吧,结果提示不让传文本类型的jpg文件,忘了fckeditor还判断文件的类型了,我在后台把默认编辑器改成ewebeditor了,它还没那么多限制,顺利的把图片马上传上去了,记下地址。

       下面就该用数据库备份功能把马还原成asp格式了,我看了下数据库备份部分的源代码,看到备份的时候是程序里指定的数据库名,备份的地方也是程序指定,看了下数据库文件,是改成asp格式了,并且文件名还加了#号。看来现在的程序员都小心了,以前数据库备份功能是很常用的拿shell的方法,现在不行了,得动动脑筋了,我又看了看还原数据库部分的代码,看到还是程序里指定数据库的路径,不同的是选择备份的数据库文件这块是直接使用的表单获取的,这样一来思路有了。

       首先先使用数据库备份功能把现在网站的数据库备份一份,方便一会儿我们恢复,然后转到数据库还原,选择备份数据库文件时把我们的小马的路径填上,然后直接恢复,这样我们的小马就恢复到了data目录下的数据库文件里了,由于数据库文件是asp格式的,并且文件名我们也知道,所以我们的小马就得到了,这里说下,因为数据库名包含#号,所以使用url编码器编码一下就可以访问了,用中国菜刀连上就拿到shell了,还应该注意的是,我们把数据库还原以后,默认的数据库就破坏了,网站就无法正常工了,所以在我们拿到shell后要及时把网站数据库的备份还原过来。

         shell拿到了,提权就简单了,在shell里找到了asp.net网站的web.config文件,顺利的找到了sqlserver的用户名密码,还是sa的,提权就不说了。

         总结下,数据库备份还原功能是网站程序里常用的的,也是很容易出问题的地方,毕竟后台是整个网站的最后防线,程序员在写这部分代码的时候一定要注意。