Security & Hacking/SQL Injection & Webshell

[CVE-2010-0738] JexBoss Webshell Command Execution

도라 2021. 6. 14. 23:31

1. 개념

출처 : jbossas 이전 홈페이지

 

JBoss 이름은 이제 WildFly 커뮤니티 프로젝트에서 파생된 JBoss EAP라는 상업적으로 지원되는 제품에만 적용되며 이제는 https://developers.redhat.com/products/eap/overview?referrer=jbd 해당 사이트에서 확인 가능하다.

JBoss EAP에는 온 프레미스, 가상 환경 및 프라이빗, 퍼블릭 및 하이브리드 클라우드를 포함한 다양한 환경에서 엔터프라이즈 Java 애플리케이션을 구축, 실행, 배포 및 관리하는 데 필요한 모든 것이 포함되어 있습니다.

 

 

 

 

2. 취약시스템

Red Hat JBoss Enterprise Application Platform 4.2 - 4.3

 

 

 

 

3. 공격 설명

JBossass에 있는 JMX-Console 웹 애플리케이션은 GET 및 POST 메서드에 대해서만 액세스 제어를 수행한다.

원격 공격자는 우선적으로 이 애플리케이션의 GET 핸들러에 다른 방법을 사용하여 요청을 보낸다.

 

액세스가 된 이후 JBoss EAP jmx에 인증 우회 취약점을 이용해 java 코드를 업로드하고 실행할 수 있다.

jmx에 인증 우회가 가능한 이유는 JBoss application 서버에서 GET, POST 메서드에 대해서만 인증을 시행하고 나머지 메서드의 경우는 인증 정책을 적용하지 않기 때문에 공격자는 HEAD, PUT과 같은 메서드를 통해 이 취약점에 대해 공격할 수 있다.

 

Webshell 공격의 경우 오탐인데 탐지될 경우도 많아서 공격의 의도가 있었는지 확인할 필요가 있다.

확인 방법은

1. 인증 우회를 하기 위한 메서드를 사용하여 java파일 (예시: /jbossass/jbossass.jsp) 파일을 업로드하는지

2. 해당 업로드 이후에도 Command 문자열이 존재하는지

공격이 성공하면 업로드한 파일에 접근하여 ppp 매개변수에 명령어를 전달할 수 있고 그럼 공격자가 원하는 명령어로 시스템을 제어하거나 환경변수 파일을 탈취할 수 있다.

 

 

 

 

 4. Raw data

- 접근 요청 로그

GET /jmx-console/ HTTP/1.1

Host: 222.119.195.57:8888

User-Agent: Go-http-client/1.1

Accept-Encoding: gzip

Connection: close

 

- Webshell 업로드 요청 로그

GET //jbossass/jbossass.jsp?ppp=echo%20D3c3mb3r HTTP/1.1
Host : <공격 대상자 IP>
Accept-Encoding : identity
Connection: keep-alive
Accept: text/html, application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: jexboss

 

 

 

 

5. 해결 방법

- 해당 벤더사에서 제공하는 보안 권고를 참고하여 최신의 버전으로 업데이트한다.

- 관제하여 해당 공격 로그가 요청되면 추가적인 공격이 이뤄지기 전 조치를 취한다.

 

 

 

 

6. 참고자료

https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2010-0738

https://us-cert.cisa.gov/ncas/analysis-reports/AR18-312A

https://www.exploit-db.com/exploits/36575

https://securityreason.com/securityalert/8408