动易6.6 & 6.7 注入漏洞0day

2010, August 14, 4:52 PM. 漏洞分析
Submitted by admin

[!]作者 :seraph
[!]QQ :81413170
[!]程序名称 ;动易
[!]包含版本 :6.6,6.7
[!]漏洞文件 :payonline/autorecive1.asp
[!]漏洞描述 :参数未过滤,可产生注入漏洞
[!]危害程度 :低
[!]首发日期 :2010-8-12
************************************************************************

 

直接查看http://localhost/PayOnline/AutoRecieve1.asp确认版本
查看如果出现 为了您交易的安全,请不要使用系统默认的MD5密钥则为不可注入且版本为6.8

在线支付失败! 为6.7 6.6

核心代码:
AutoRecieve1.asp

v_mid = AccountsID
v_oid = Trim(Request("v_oid"))    '支付定单号
v_md5 = Trim(Request("v_md5str"))    '数字签名
v_amount = Trim(Request("v_amount"))    '支付金额
v_pstatus = Trim(Request("v_pstatus"))    '支付状态
v_moneytype = Trim(Request("v_moneytype")) '支付货币
v_pmode = Trim(Request("v_pmode"))    '支付银行
v_pstring = Trim(Request("v_pstring"))    '支付结果说明

md5string = MD5(v_oid & v_pstatus & v_amount & v_moneytype & PayOnlineKey, 32)
      
If UCase(v_md5) = UCase(md5string) And v_pstatus = "20" Then
Response.Write "ok"
Call UpdateOrder(v_oid, v_amount, v_pstring, v_pmode, 3, True, True)
Else
Response.Write "error"
End If
<!--作者:seraph -->
UpdateOrder.asp

Sub UpdateOrder(ByVal PaymentNum, ByVal amount, ByVal eBankInfo, ByVal Remark, Status, UpdateDeliverStatus, UpdateOrderStatus)
Dim PaymentID, OrderFormID, MoneyReceipt, MoneyPayout, eBankID
Dim sqlPayment, rsPayment
Dim DoUpdate

PaymentNum = ReplaceBadChar(PaymentNum)
sqlPayment = "select * from PE_Payment where PaymentNum='" & PaymentNum & "'"
Set rsPayment = Server.CreateObject("Adodb.RecordSet")
rsPayment.Open sqlPayment, Conn, 1, 3
If rsPayment.BOF And rsPayment.EOF Then
       FoundErr = True
       If IsMessageShow = True Then
      Response.Write "找不到指定的支付单!"
       End If
Else


这里的SQL语句
sqlPayment = "select * from PE_Payment where PaymentNum='" & PaymentNum & "'"
PaymentNum调用的是AutoRecieve1.asp中的v_oid
v_oid = Trim(Request("v_oid"))    '支付定单号
v_oid这个参数没有经过任何过滤进入了SQL语句当中,可以形成注入
在这里注入需要一个条件

md5string = MD5(v_oid & v_pstatus & v_amount & v_moneytype & PayOnlineKey, 32)
      
If UCase(v_md5) = UCase(md5string) And v_pstatus = "20" Then
需要一个MD5值匹配
不过这里的MD5值是由用户自己输入的,只需要根据你自己猜解的语句构造生成一个md5就可以通过了


注入时出现
找不到指定的支付单
为错误
支付金额不对
为正确

因为只能折半查找,比较麻烦,工具就不弄了
Tags: 动易

« 上一篇 | 下一篇 »

Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容 (必填):