|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| 云网在线支付漏洞初探 | |||||
作者:Neeao(Bu… 文章来源:CnXHacker.Net 点击数: 更新时间:2005-12-21 ![]() |
|||||
|
网银的应该和这个一样的,谁有空看看去!我太忙了!不好意思啊! 要理解这个漏洞呢,首先要了解一下在线支付的流程,这里引用一下云网官方的流程图: ![]() 正常的在线支付过程呢,是从第一步到第六步! 而这个漏洞所出现的地方就是在第二步,然后绕过了第三步和第四步、第五步,而直接把返回信息提交给了支付成功返回页面! 我们在动画里也只是看到了!它只有一个提交页面和网站上的一个支付成功页面,根本没有通过网关进行支付操作,所以钱也就没进入到银行里,这里也就不存在什么影响银行安全什么了,纯粹是骗人的了! 为什么会这样呢!问题出在云网提供给商户的支付接口文件上,让我们来看看这两个云网提供给商户的接口文件: <% '******************************************* '文件名:SendOrder.asp '主要功能:该示范程序主要完成将商户订单信息提交至云网支付网关的功能 '版本:v1.6(Build2005-05-24) '描述:假设商户的订单系统都已完成,本页面主要是帮助商户按照云网支付网关要求的格式将订单信息提交至云网支付@网的支付接口,进行支付操作 '版权所有:北京云网无限网络技术有限公司 '******************************************* '---订单信息--- Dim c_mid '商户编号,在申请商户成功后即可获得,可以在申请商户成功的邮件中获取该编号 Dim c_order '商户网站生成的订单号,不能重复 Dim c_name '商户订单中的收货人姓名 Dim c_address '商户订单中的收货人地址 Dim c_tel '商户订单中的收货人电话 Dim c_post '商户订单中的收货人邮编 Dim c_email '商户订单中的收货人Email Dim c_orderamount '商户订单总金额 Dim c_ymd '商户订单的产生日期,格式为"yyyymmdd",如20050102 Dim c_moneytype '支付币种,0为人民币 Dim c_retflag '商户订单支付成功后是否需要返回商户指定的文件,0:不用返回 1:需要返回 Dim c_paygate '如果在商户网站选择银行则设置该值,具体值可参见《云网支付@网技术接口手册》附录一;如果来云网支付@网选择银行此项为空值。 Dim c_returl '如果c_retflag为1时,该值代表支付成功后返回的文件的路径 Dim c_memo1 '商户需要在支付结果通知中转发的商户参数一 Dim c_memo2 '商户需要在支付结果通知中转发的商户参数二 Dim c_signstr '商户对订单信息进行MD5签名后的字符串 Dim c_pass '支付密钥,请登录商户管理后台,在帐户信息->基本信息->安全信息中的支付密钥项 Dim notifytype '0普通通知方式/1服务器通知方式,空值为普通通知方式 Dim c_language '对启用了国际卡支付时,可使用该值定义消费者在银行支付时的页面语种,值为:0银行页面显示为中文/1银行页面显示为英文 c_mid = "000103" c_order = "12345" c_name = "张三" c_address = "北京市朝阳区XX" c_tel = "010-12345678" c_post = "100001" c_email = "zhangsan@test.com" c_orderamount = "0.01" c_ymd = "20050102" c_moneytype = "0" c_retflag = "1" c_paygate = "" c_returl = "http://www.xxx.com/xxx/xxx.asp" '该地址为商户接收云网支付结果通知的页面,请提交完整文件名 c_memo1 = "ABCDE" c_memo2 = "12345" c_pass = "Test" notifytype = "0" c_language = "0" srcStr = c_mid & c_order & c_orderamount & c_ymd & c_moneytype & c_retflag & c_returl & c_paygate & c_memo1 & c_memo2 & notifytype & c_language & c_pass '说明:如果您想指定支付方式(c_paygate)的值时,需要先让用户选择支付方式,然后再根据用户选择的结果在这里进行MD5加密,也就是说,此时,本页面应该拆分为两个页面,分为两个步骤完成。 '---对订单信息进行MD5加密 c_signstr = MD5(srcStr) %> <table width="85%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center"> <form name="payForm1" action="https://www.cncard.net/purchase/getorder.asp" method="POST"> <input type="hidden" name="c_mid" value="<%=c_mid%>"> <input type="hidden" name="c_order" value="<%=c_order%>"> <input type="hidden" name="c_name" value="<%=c_name%>"> <input type="hidden" name="c_address" value="<%=c_address%>"> <input type="hidden" name="c_tel" value="<%=c_tel%>"> <input type="hidden" name="c_post" value="<%=c_post%>"> <input type="hidden" name="c_email" value="<%=c_email%>"> <input type="hidden" name="c_orderamount" value="<%=c_orderamount%>"> <input type="hidden" name="c_ymd" value="<%=c_ymd%>"> <input type="hidden" name="c_moneytype" value="<%=c_moneytype%>"> <input type="hidden" name="c_retflag" value="<%=c_retflag%>"> <input type="hidden" name="c_paygate" value="<%=c_paygate%>"> <input type="hidden" name="c_returl" value="<%=c_returl%>"> <input type="hidden" name="c_memo1" value="<%=c_memo1%>"> <input type="hidden" name="c_memo2" value="<%=c_memo2%>"> <input type="hidden" name="c_language" value="<%=c_language%>"> <input type="hidden" name="notifytype" value="<%=notifytype%>"> <input type="hidden" name="c_signstr" value="<%=c_signstr%>"> <input type="submit" name="submit" value="点击 -> 云网支付@网"> </form> </td> </tr> </table>这个是向云网网关提交订单信息的页面中的一些关键的代码!注意下他这个变量:c_signstr, 以及他的生成方式,是订单的几个信息连接后再md5加密后生成验证签名的!而这个签名是一个关键 但是从下面的提交表单可以看到,他们都是以明文的方式来提交的!当然要用明文了,如果加密的话,在后面就该出问题了! 下面我们来看订单成功后获取银行返回的成功信息的页面代码: <% '******************************************* '文件名:GetPayNotIFy.asp '主要功能:该示范程序主要完成接收云网支付网关支付通知信息,验证信息有效性,判断支付结果功能 '版本:v1.6(Build2005-05-24) '说明: ' 1.本页面请不要使用诸如response.redirect等页面转向的语句 ' 2.请直接将订单处理结果以HTML代码的形式输出在本页,云网支付网关会采用技术手段获取您的输出结果 ' 3.本页面如果含有图片、样式或链接,请将路径或地址包括域名,比如<img src="http://www.xxx.com/imagers/aaa.gif"> '版权所有:北京云网无限网络技术有限公司 '******************************************* '---获取云网支付网关向商户发送的支付通知信息(以下简称为通知信息) c_mid = request("c_mid") '商户编号,在申请商户成功后即可获得,可以在申请商户成功的邮件中获取该编号 c_order = request("c_order") '商户提供的订单号 c_orderamount = request("c_orderamount") '商户提供的订单总金额,以元为单位,小数点后保留两位,如:13.05 c_ymd = request("c_ymd") '商户传输过来的订单产生日期,格式为"yyyymmdd",如20050102 c_transnum = request("c_transnum") '云网支付网关提供的该笔订单的交易流水号,供日后查询、核对使用; c_succmark = request("c_succmark") '交易成功标志,Y-成功 N-失败 c_moneytype = request("c_moneytype") '支付币种,0为人民币 c_cause = request("c_cause") '如果订单支付失败,则该值代表失败原因 c_memo1 = request("c_memo1") '商户提供的需要在支付结果通知中转发的商户参数一 c_memo2 = request("c_memo2") '商户提供的需要在支付结果通知中转发的商户参数二 c_signstr = request("c_signstr") '云网支付网关对已上信息进行MD5加密后的字符串 '---校验信息完整性--- IF c_mid="" or c_order="" or c_orderamount="" or c_ymd="" or c_moneytype="" or c_transnum="" or c_succmark="" or c_signstr="" THEN response.write "支付信息有误" response.end END IF '---将获得的通知信息拼成字符串,作为准备进行MD5加密的源串,需要注意的是,在拼串时,先后顺序不能改变 Dim c_pass '商户的支付密钥,登录商户管理后台(https://www.cncard.net/admin/),在管理首页可找到该值 c_pass = "Test" srcStr = c_mid & c_order & c_orderamount & c_ymd & c_transnum & c_succmark & c_moneytype & c_memo1 & c_memo2 & c_pass '---对支付通知信息进行MD5加密 r_signstr = MD5(srcStr) '---校验商户网站对通知信息的MD5加密的结果和云网支付网关提供的MD5加密结果是否一致 IF r_signstr<>c_signstr THEN response.write "签名验证失败" response.end END IF '---校验商户编号 Dim MerchantID '商户自己的编号 IF MerchantID<>c_mid THEN response.write "提交的商户编号有误" response.end END IF '---校验商户订单系统中是否有通知信息返回的订单信息 Dim conn '商户系统的数据链接 sql="select top 1 数据列 from 商户的订单表 where 商户订单号="& c_order set rs=server.CreateObject("adodb.recordset") rs.open sql,conn IF rs.eof THEN response.write "未找到该订单信息" response.end END |
|||||
| 文章录入:IceRiver 责任编辑:IceRiver | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| Kingston2.7万客户在线资料被 [法治在线]“熊猫烧香” “东方星天地”免费在线杀毒 McAfee发布在线身份盗取报告 牵手赛门铁克 百度将“在线杀 地震重创微软在线业务 腾讯S MSN否认年审遇阻 在线业务中 新云网站管理系统文件注入漏 Google推出在线支付服务称并 微软在线安全策略总监:赢取反 |
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |