[CVE-2010-0738] JexBoss Webshell Command Execution
1. 개념
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