危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2307 浏览21468851

对一房地产网站的安全检测

一兄弟发过来他朋友的一个站点,要我帮着检测检测,大牛吩咐的,不敢马虎,经过两天的痛苦奋斗,终于发现了一些安全漏洞,于是也就有了本文。打开网站,典型的门户站点,下设了N个版块,有的是以二级域名的形式存在的,有的则是以子文件夹、虚拟目录等形式存在。经过了一番的探测,收集到的服务器信息为:Windows的系统,IIS6.0,脚本语言为php与asp,php的gpc为开启状态。

先拿php开刀,在一个名为“问房”的频道下找到了一个存在注入的php页面,在网址后面添加“-1”提交后,返回了前一条新闻。

在使用“and 1=1”或“or 1=1”检测时,都被弹出了警告窗口,看来对提交的数据进行了判断,一旦出现了and、or、*、select等都将弹出警告信息,使用url编码后再次提交还是被拦截了。看到弹出的这个警告窗口,我不禁想到这会不会是只弹出警告窗口而程序代码仍会继续执行呢?立马来到Internet选项里,将安全性设置为最高,禁止的运行,再重新进行测试却发现页面输出为空白状态,查看源文件,还是刚才那个弹出警告窗口的代码。

我不禁又猜想,程序过滤了小写的危险字符,那会不会忽视了大写字母呢?于是马上变换了一下,把and换成了AND,结果证明我的猜想是正确的,防洼入被顺利的绕过了。接着使用“ORDER BY”猜出了查询的列数,有48个字段,还挺多的呢。继续尝试,发现程序竟然将“()”也列为了危险字符,在开始检测前我已经从朋友那儿确认了mysql的连接用户为root,这下想使用load_file()来查看文件的思路也被中断了,还是老老实实的查询管理员的用户和密码再进入后台吧,密码的MD5值被顺利的查了出来,这才发现后台地址竟然不存在,添加admin后自动跳转到了另一个不存在的页面上,可能是管理员故意删掉了吧。综台分析,感觉从php下手的希望不大,反正下面还有很多栏目昵,还是看看别的再说吧。

转了转,来到了shop目录,发现主页出错,暴出了物理地址。物理路径既然出来了,我就打算从主站下面的栏目中来继续查找php注入点,只要不存在与刚才同样的BT过滤的话,使用load_file()可就是异常方便呀。几经周折,终于在资讯搜索处找到了久违的多字节编码漏洞,但却发现无论输入什么进行查询,搜索结果都为空,估计搜索页面出错了。

没办法,从php下手实在是不容易啊,我只好去挑战其它的asp子目录站点。来到了调查问卷系统处,输入“1”查询出错了,从图中可以看到单引号被替换为了双引号,字符型注入只好作罢,来试试数字型的注入吧,查询“1 or 1=1”返回了错误,估计是字符型的注入点,单引号无法闭合。

经过N次的寻找,来到了二手房租售栏目,使用wwwscan扫描了一下目录,后台目录出来了,还发现了asp探针的踪迹。懒的手动检测了,直接将url丢到了Jsky里,在它的一顿狂轰滥炸后,终于出现了注入点。我立马填到了啊D中,提示“恭喜,能够注入”,而且还是个DB的权限,目录很顺利的被列了出来,没有做任何的权限控制,全盘都可以浏览。在web目录里,我看到了N个网站,还有朋友的blog,其数据库名被改的相当BT。到这里,检测就没再继续了,我把所发现的问题记录了一下,发给了朋友。

在这次在检测过程中,我们可以看到并没有使用到什么潮流的技术,依然是风光无限的注入,也由此可以看出,服务器的安全配置是重中之重。在开始的php注入上,mysql的登录用户是root权限,由于过滤脚本和gpc为开启状态的存在,让我们的load_file()和“select into”变得不可能,但我们完全可以通过查询information_schema.schemata表来得到mysql里的各个表名,然后查询information_schema.tables表得到各个表中的所有字段,再依次查询出各个版块的管理员帐号和密码,利用社工等一系列方法登录后台进行webshell的获取。而在asp的这个注入点上,应该降低SQL用户的权限,比如使用public,或者删除SQL的相关扩展,禁止磁盘目录文件被列出,另外文件夹的权限也没有进行相应的设置,能自由的跳转到整个磁盘。

上面这些,都是服务器的配置所能实现的,一个完美的WEB程序如果架设在一个不完美的服务器上,同样是岌岌可危的,而一个完美的服务器对不完美的WEB程序却还是能够起到一点亡羊补牢的作用的,这很值得我们广大的网站管理员朋友深思。