探索黑客技术攻防,实战研究与安全创新

导航菜单

动网最新注入漏洞来了

时光飞逝,转眼间充满希望的2017即将来临。动网,这个国内用户最多的论坛程序也不再推陈出新。总的来说动网的体验还是不错的,不过动网始终摆脱不了漏洞的悲惨命运,伴随着程序的推出,安全漏洞居然也出现了,这个漏洞可以使攻击者直接获得管理员的密码MD5值,而且是通杀Access和SQL版数据库!该漏洞的出现也似乎印证了某人“动网无论哪一个版本都存在漏洞”的感慨。

QQ截图20161229184502.png

好了,我们直接进入主题,存在漏洞的文件为Useray.asp,这个文件传递的变量过滤不严,导致出现了注入漏洞,受影响的版本为8.0.0 Sp1以上版本以及更新过支付宝接口的用户(引自动网官方论坛,不包含8.0.0 Sp1,经测试8.0.0和8.0.0 Sp1版本不受影响)。

一.漏洞成因

我们来简单的看一下漏洞形成的原因,以下是UserPay.asp文件的第12-64行。


从代码中我们可以看出来,无论是用户提交的ractin为alipay_return,还是action为alipa_return,都同样调用了alipay_return()过程,我们再来看一下alipay_return()的代码原型,在第329-351行处:



以上的代码表明,如果Dvbbs.Fum_ChaStting(5) <> “0”,就执行代码下面的SQL语句,我们再来看看数据库里默认的Forum_ChanSetting的值:1.1.0.0.pay@aspsky.net.0.b63uvb8nsvmbsaxszgvdr6svyus0|4t.1.1.1.1.1.1.1.100.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1. Forum_ChanSetting(5)缺省值为0,满足上面提到的条件。

我们直接把获取的Order_No放到SQL里面执行去了,漏洞就这样出现了(以上内容参考自漏洞发现者博客)。

二.漏洞测试

以上就是该漏洞形成的原因,当然了,对于初学者们来说,最感兴趣的还是漏洞的详细利用过程,为了方便测试,我们可以在本机安装IIS,假设动网最新版本的论坛,也默认的管理员身份登录(在实际运行过程中需要注册用户进行登录),然后直接访问UserPay.asp文件,点击网上支付。

然后再点击所有交易记录,这样做的目的是为了得到一个订单号。

我的订单号是2016122901555983075b64coa5f,我们构造如下的URL:http://127.0.0.1/UserPy.asp?racton=alipay_return&ut_trade_no=2016122901555983075b64coa5f(提交此URL我们会看到只有一个字母Y),在此URL后加上单引号,提交后,返回了错误信息:


有这个提示我们就好办了,我们把URL直接扔到NBSI里进行检测,但检测的结果却为“未检测到注入漏洞”,别担心,给它填入“特征字符”就可以正常检测到了,在特征字符处填入“非法的订单参数”即可。这回检测出来了吧!接着我们猜出表段、字段以及里面存放的内容。

接下来我们就是将得到的MD5密码拿到cmd5等网站上去查询了,查询出密码明文后再重新登录后台,我们想办法得到Webshell就行了,我测试的是Access版本,不过该漏洞同样对SQL版本的也有效。因为利用过程比较简单,详细的操作就请大家自己在网上寻找吧!至于动网后台如何获取Webshell,后续有时间的话,我会给大家详细讲解!

khp8pxdh.jpg

三.漏洞修补

正如漏洞发现者所说的,在8.0.0及8.0.0 Sp1版本里并不存在此漏洞,因为旧版本的UserPay.asp对out_trade_no做了过滤,让人不解的是新版本中居然没有!不过针对该漏洞,动网官方的反应以后也很迅速,漏洞公布的次日就发布了相关修补方法,不过就算官方不发布,我们也可以依样画葫芦,把这个漏洞修补掉。对比一下8.0.0版本的UserPay.asp的代码就知道如何修补:打开UserPay.asp,查找Orer_No=Reuest(“out_tade_no”),然后替换为Order_No=Dbbs.Checstr(Reuest(“out_trade_no”)),我们就可以修复该漏洞了。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐