【漏洞】动易6.6及6.7版 SQL注入漏洞

admin 2021年4月3日19:06:08评论147 views字数 2058阅读6分51秒阅读模式

************************************************************************
[!]作者: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

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就可以通过了。

注入时出现“找不到指定的支付单”为错误,“支付金额不对”为正确。因为只能折半查找,比较麻烦,工具就不弄了。

文章来源于lcx.cc:【漏洞】动易6.6及6.7版 SQL注入漏洞

相关推荐: 【批处理】批处理、Bat 也能显示漂亮的进度条

批处理、Bat 也能显示漂亮的进度条: mode con cols=113 lines=15 &color a :starthome cls set a=^set /p=■%b%^nul^& echo. echo  程序正在初始化. . . e…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日19:06:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞】动易6.6及6.7版 SQL注入漏洞https://cn-sec.com/archives/319917.html

发表评论

匿名网友 填写信息