二、漏洞测试
架设动网8.1.1 Access最新版本论坛。以默认的管理员身份登录(在实际入侵中需要注册用户登录),然后直接访问UserPay.asp文件,点击“网上支付”,。然后再点击“所有交易记录”,这样做的目的是为了得到一个订单号。

2008010901555983075b64cea5f就是我们需要的订单号了。构造如下URL:http://127.0.0.1/UserPay.asp?rac ... 01555983075b64cea5f(提交此URL会看到只有一个字母Y),在此URL后面加上单撇号,回车提交,返回错误信息:
Microsoft JET Database Engine 错误 '80040e14'
字符串的语法错误 在查询表达式 'O_IsSuc=3 And O_PayCode='2008010901555983075b64cea5f''' 中。
/inc/Dv_ClsMain.asp,行 1525
用NBSI3.0检测该URL,结果为“未检测到注入漏洞”。别担心,给它填入“特征字符”就可以正常检测到了,特征字符处填入“非法的订单参数”即可,接着猜出表段、字段以及里面存放的内容。

然后查询MD5密码明文,再登录后台。我测试的是Access版本的,不过此漏洞同样对SQL版本的有效。
三、漏洞修补
正如漏洞发现者所言,在8.0.0及8.0.0 Sp1版本里并不存在此漏洞。因为旧版本的UserPay.asp对out_trade_no作了过滤,让人不解的是新版本居然没有!不过动网官方的反应也很迅速,漏洞公布次日就发布了相关修补方法。不过就算官方不发,我们也可以依样画葫芦把这个漏洞修补掉。对比一下8.0.0版本 的UserPay.asp的代码就知道如何修补了:打开UserPay.asp,查找Order_No=Request ("out_trade_no"),然后替换为Order_No=Dvbbs.Checkstr(Request("out_trade_no")),即可修复此漏洞。
最新相关文章
发表评论