2020春节即将来临,收到新第三方支付平台网站客户的安全漏洞问题的求助电话给我们Sinesafe的BOSS,反映支付订单状态被修改由原先未支付修改为已支付,导致商户那边直接发货给此订单会员了,商户和平台的利益收到很大的影响,很多码商都不敢用此支付平台合作了,大体情况了解后我们立即安排成立支付平台安全应急小组。
分析并了解支付过程
我们Sinesafe对整个第三方支付平台网站的流程进行了分析如下,平台首先要对接到上游支付通道,然后由上游支付通道返回支付状态回调到平台,然后由平台的状态返回给商户(也就是码商),首先码商注册好平台的商家用户,然后从商家用户后台获取接口对接程序与码商自己的网站进行对接调试,如果商家会员对订单进行了支付,如果支付成功会回从平台获取支付状态,而平台去从上游通道获取状态来回调到自身平台,目前大部分的接口都是一些PDD通道以及个人二维码对接的企业通道,俗称为聚合支付。
支付漏洞安全原因症状
1.发现在码商下的会员订单并未成功支付导致在平台这里的支付状态被黑客修改为已支付,从而回调数据给商户说明已经支付了,导致订单是成功的状态,商家不得不发货给会员(也就是上分给会员)从而恶意提现导致商家损失严重。
2.发现商户申请提现这里的收款人信息被篡改,导致商户的资金被冒领。很多码商对这一点是非常重视的,几乎都是日结算。而且平台每天放量都是有数量的,几乎都是集团下的在收量,对于资金这一块非常敏感而重视。
3.发现有些订单被删除,导致对账对不起来总是商户结算和上游通道结算的金额不对应,导致盈利少,其实这是因为黑客把订单删除了而商户的成功金额是增加的,但上游通道里的金额是不增加的。
网站漏洞安全日志检查分析
了解上述的问题后,知道了具体的问题发生症状以及支付的整个流程,安排Sine安全工程师团队小组快速响应处理找出漏洞问题关键,把客户的损失降到最低,随即登录了支付平台网站服务器对程序代码做了审计和分析,发现程序用的是TP架构(thinkphp)管理后台和前端都是在一起的,对程序代码功能函数做了对比看支付过程中的函数有无被夸权限调用,发现后台登录这里被做了手脚可以通过内置的函数去任意登录不需要任何密码,如图:
通过get此函数admin_login_test123可以直接任意登录后台。
发现这只是其中一点,后台登录后可以设置订单的状态,但黑客的手法不是这样操作的,因为从后台手动改状态的话那么在支付成功的状态这里的数据库表会增加一个data时间戳,而黑客篡改支付的状态是没有这个时间戳的,说明不是通过后台去修改的,是通过直接执行sql语句或直接修改数据库才达到的,知道问题原因后分析了下程序其他文件看是否有脚本后门,果真发现了phpwebshell后门,其中有好几个后门都是可以直接操作mysql数据库如下:
发现程序里有不少的后门文件以及隐蔽一句话后门木马,通过我们SINESAFE工程师的安全渗透测试发现商户功能图片上传存在漏洞可以任意上传php格式的后门文件,导致被入侵,发现在订单查询功能中存在SQL注入漏洞可以进行updata更新语句去执行数据库修改。随后我们立即对这3个漏洞进行了修复,清理了木马后门和隐蔽后门。让平台开始运营2天观察看看还有无被篡改,至此没再发生过订单状态被篡改的安全问题。
第三方支付平台网站安全防护建议
对新平台的上线前必须要渗透测试漏洞,对sql注入进行语句严格定义和转换,对上传这里的格式进行白名单控制,对网站支付回调和通过获取状态严格做对比,如对sgin做来回匹配比对,签名效验看是否存在被篡改值如果被篡改直接返回数据报错,如果对程序代码安全问题不熟悉不专业的话建议找专业的网站安全公司来处理解决,国内做的比较不错的如Sinesafe,鹰盾安全,绿盟,启明星辰等等都是比较大的网站安全服务商。
m.safe.b2b168.com