보안동향

최신 보안정보를 신속하게 전해드립니다.

[보안동향] CVE-2019-15107 Webmin Command Injection without authority

2019-09-23
  1. 개요

Webmin은 Unix 계열 시스템을 위한 웹 기반 시스템 구성 도구 입니다.

Webmin user의 비밀번호 재설정 페이지에 Command Injection 취약점이 존재하여

인증되지 않은 사용자가 임의의 명령어를 실행할 수 있습니다.

 

  1. 취약한 버전

Webmin <= 1.920

 

  1. 취약점 설명 및 분석

우선 password_change.cgi 코드에 아래와 같이 password_mode의 설정이 2로 설정되어야  

해당 페이지를 사용할 수 있습니다. 해당 설정은 기본적으로 2로 설정되어 있습니다.

 

먼저 password_change.cgi 페이지에 접근하면 아래와 같은 응답을 확인 할 수 있습니다.

 

new1과 new2에 대한 인자 값을 주어야 페이지가 작동하는것을 확인 할 수 있습니다.

 

new1, new2인자 값을 입력하여도 에러메세지를 확인할 수 있으며 현재 패스워드에 대한 검증도 있는 것을 확인 할 수 있습니다.

 

검증 로직을 확인해보면 old 파라미터에 입력한 값과 기존의 password가 같지 않다면 pass_error를 통해 에러

메세지를 띄우게 됩니다. pass_error 뒤에 qx라는 함수는 system 함수와 같은 기능의 함수이기 때문에

old 파라미터의 값을 shell command로 실행시켜주는 것을 알 수 있습니다.

 

pass_error 함수를 보면 인자로 들어온 값을 이어서 출력해주기 때문에 에러가 발생하더라도 명령어에 대한 결과값을 확인할 수 있습니다.

 

old 파라미터에 리버스 쉘 command를 입력하여 요청 시 server의 shell을 획득할 수 있습니다.

 

해당 취약점의 공격 시나리오는 아래와 같습니다.

이 취약점 같은 경우 qx함수의 사용이 문제가 되었기 때문에 패치 노트 또한 qx함수만 삭제하는 간단한 형태로 보안패치가 되었습니다.

 

  1. 위협요소

공격자에 의해 간단하게 Server의 shell을 탈취당할 수 있습니다.

해당 취약점의 경우 인증되지 않은 사용자도 공격이 가능하기 때문에 상당히 취약하므로 빠른 버전 업데이트가 필요합니다.

 

  1. 대응방안

1) Webmin 최신 버전 업데이트

 

 

 

목록