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

见缝插针入风华

一、前言

本人在与朋友讨论一些具体安全案例时,经常会听到“无从下手”的抱怨。当我们渗透过程中没有发现明显的注入点或上传点,而且也没能找到网站系统已被公布的漏洞时,很多朋友只好选择了放弃。其实很多系统,并非没有漏洞,只是还没人挖掘或公布罢了。攻陷它们,或许仅仅是需要我们耐心坐下来,仔细地去挖掘一下。

二、动机

危险漫步最近一次在为某学校网站做安全检测时,遇到了一些困难。网站的安全部分做的确实不错。在黑箱摸索了很长时间后,还是没能发现明显的疏忽或是漏洞。好吧,只能从细节下手,一个一个地方查找,自己去发掘些漏洞出来。大概出于某种需求,网站装有一个同学录系统。因为版权信息已经被站长修改了,所以没办法知道这套系统到底是什么系统。不过在认真观察了系统的特征文件后,我还是确定了该系统的出处,有请我们今天的主角——风华同学录V2.0。让我们来看看这套同学录系统的安全性究竟如何。

赶紧从网上下载了一套该系统源代码开始分析。根据系统的说明文件,我们知道风华同学录是Kissi_nger编写的一套Asp+Access的同学录网站系统,因为今天要检测的目标网站所安装版本是Ver2.0 Build 03082811,所以我下载来研究的也是这个版本,是个早期的版本了。整个系统的功能还是比较丰富的,可以发帖回帖,创建班级,设置权限,上传照片,发起投票……但正如老前辈们的那句话——功能服务越多,安全隐患越多。

现在就让我们来检测检测它会存在哪些隐患。

三、默认漏洞

何谓默认漏洞?就是默认管理员口令、数据库地址等等信息的公开。称其为漏洞其实是不恰当的,因为它是每个开放式网站系统都必然会有的隐患。一旦使用此系统的站长偷懒,没有修改这些默认的东西,那大大方便了我们的入侵。

风华同学录系统的默认信息如下:

前台验证默认为

用户名:fenghua密码:txlbbs.126

后台验证默认为

用户名:kissinger密码:61650018

默认数据库地址为:\Database\ffis200m,asp

数据库密码为:f2y0t0x31

所以我们就可以通过这些默认的口令自由登陆网站后台,或是直接通过默认地址将网站数据库下载下来。说到这里,需要说的是,如果对Access数据库不做防下载处理(加防下载字段或防下载表),而只是将文件扩展名改为“.asp”,这样是无法真正做到防止下载得,只是防止了手动在浏览器地址栏输入地址直接下载这一种下载方式而已。

四、暴摩漏洞

说起这个漏洞,是让人比较无奈的,我们现在动不动就可以在网上看到一些人说某个某个系统有暴库漏洞,为什么呢,因为在数据库连接文件conn.asp(大都以此命名)中,缺少了容错语句“on errorresume next”。这种说法其实是很不严谨的,我猜这些人中有很多并没有搞清楚暴库漏洞的根本原理。其实暴库漏洞归根结底是路径错误导致解析错误,然后在错误报告中将数据库地址暴露了出来。使得攻击者可以得知网站数据库地址。对一个网站来说后果是非常致命的。拿风华同学录来说,这套系统的数据库连接文件是Setup.asp,在该文件的22行,有这么一句"on error resume next'”,这是句容错语句役错,可惜多了一个注释符…”,所以这句容错语句在解析的时候其实是等于没写的。按道理来说,暴库漏洞已经出现了。但遗憾的是,并非如此。因为Setup.asp文件是在网站裉目录下,而其默认数据库又在该目录的子目录中。所以正常情况下,我们根本没有办法构造让其路径错误。也就更别提暴库了。

五、注入漏洞

注入,自打某位大牛首次将此类漏洞原理曝光以来,在网络上可谓是引起了惊涛骇浪,国内更是被其搅得惨不忍睹。直到今天我们任然会看见有不少大网站因此落马。其危害之大可见一斑。

之所以该类漏洞能造成如此大的破坏,是因为攻击者可以利用该漏洞直接对数据库进行操作。非但可以任意读取数据库中的敏感信息,更是可以写入危险信息。在MSSQL、MYSQL等数据库中,注入更是可以利用数据库本身的强大功能为所欲为,甚至直接威胁到了服务器的安全。

在检测风华同学录注入漏洞的时候,是比较辛苦的,检查了几乎所有的前台文件,却依然无所收获。程序作者对于这类漏洞的防范是比较到位的,以Get和Cookie方式提交的数据全都进行了强转或过滤,没有给我们任何机会。但当我仔细观察页面代码后,有了发现,作者居然疏忽了多处Post提交。我们这里拿我认为最好利用的Friendlist.asp文件为例说明。

在Friendlist.asp文件中我们发现就会发现需要的代码。

 这是添加好友操作中的一段代码,很明显,代码中只是判断了touser变量是否为空便带入了数据库查询。让我们再来看看touser变量是哪来的,在文件的159行有:

 原来是直接外部提交而来,位于添加好友功能页面。OK,注入漏洞就此诞生!

六、其他漏洞

常见的Web漏洞还有很多,上传、跨站、越权、远程执行、包含等等等等,其中越权、远程执行、包含漏洞因为风华同学录没有提供相关功能服务,所以也就没有检测的必要了。至于上传和跨站,鄙人实在不才,检查了所有文件却终究没能发现漏洞,有兴趣的朋友可以与我一同探讨。

七、实战

现在我们来拿个使用此系统的网站试验我们前面所发觉的漏洞。我们在这里用GoogleHack技术来寻找目标:在谷歌或百度中输入“同学录inurl:ViewThread.asp?TopicID”即可搜到很多采用了风华同学录系统的网站。

默认漏洞就不在这里演示了,我们这里主要演示注入漏洞。因为Friendlist.asp文件是有Cookie验证的,所以我们必须要先注册一个用户才能利用。

注册步骤很简单,随便填些信息,即可注册成功。在这里用户名我注册为“wxmb”。登陆进去后,直接在地址栏中输入地址进入添加好友页面。

在好友栏中我们输入“wxmb”(添加自己)点保存,嗯,提示添加好友成功。好,退回上页,我们这次在好友栏输入“wxmb”’(名字后面加一个单引号),返回报错。典型的注入漏洞已经摆在我们面前了。退回上页,这回我们分别输入“wxmb' and 'ab'a”“wxmb and'al_fb”,一次成功,一次报错,OK,我们的构造地注入语句被运行了,注入成功。

'a'='a'时返回。

'b'='b'时接下来的步骤当然是利用SQL语句猜管理员用户名密码登陆后台了,因为是Access数据库,也没有别的好办法。具体步骤的在这里就不再多说了。

关于WebShell:在这里不得不惭愧地说,危险漫步在提权取Webshell的时候不幸失败了……因为这套系统后台的功能实在太有限了,我终究没能找到可以获取Webshell的功能。

其实起初我也是想过一个很可行很酷的办法,因为数据库文件的扩展名默认是asp的,所以只要站长不修改(一般情况下不可能有人还会把asp修改回mdb),我们就可以通过将一句话木马写入数据库,然后用客户端连接数据库文件获取WebsheU。这个方法的好处在于我们都不用注入猜解管理员口令,甚至都不用注册用户即可得到Webshell。遗憾的是,我测试的时候没能成功。我猜可能是这套系统给数据库加了密码的关系。

八、总结

总的来说风华的系统在安全方面写得其实是不错的,作者有较高安全意识,很多低级失误导致的漏洞都被注意到并避免了,对几乎所有外部提交的参数都进行了过滤,这其中还注意到了很程序员都容易疏忽得Cookie过滤,但遗憾的是紧紧落了两处的Post,一切便功亏一篑了。另外,在跨站方面写的也是严谨的,该过滤的关键字符都做了过滤,没有给入侵者机会,至于上传,作者是直接引用了网络上普及开来了的经典上传代码,没有出现漏洞。