본문 바로가기

cert

Nagios 대상 SQL Injection - (2)

취약한 대상 서버를 구할수 있어 다운 후 실행해봤습니다.

 

.ova 파일 확장자로 vmware에 임포트만 하면 바로 실행 가능했습니다.

 

아래는 명령어를 입력해서 위에 부분이 조금 잘리기는 했지만 초기 실행 화면입니다.

 

보시다시피 default 계정정보가 포함되어있습니다. root / nagiosxi로 확인되네요. 우선 취약한 버젼을 구함으로 테스트가 가능할 것 같네요. 일단 exploit 코드를 확인해보겠습니다.

 

exploit 을 실행하면 check 함수부터 실행하네요

/nagiosxi/ 경로를 요청하여 대상 서버인지 확인한뒤 버젼 체크를 하는 것 같네요.

위의 대상이 취약한 버젼이라고 합니다. 그 뒤 dbuser 를 root , nagiosxi 으로 설정하네요. 

root 권한으로 부족했던 권한으로 실행하지 못했던 sqlInjection을 수행하는 것으로 확인됩니다.

요청경로 /nagiosql/admin/helpedit.php 경로로의 selInfoKey1 패러미터 값에서 sqlInjection을 하여 API key 값을 받아오는 구문이 다음으로 실행되네요.

 

 

이후 반환된 APIkey값과 난수로 생성된 userid,passwd 값으로 admin 계정을 생성합니다.

생성된 admin 계정을 이용해 명령어를 실행하는 함수를 실행합니다.

실행되는 명령어는 reset_config_perms.sh 파일을 백업한뒤, echo 명령어를 이용해 해당 원본 파일을 실행시킬 명령어로 저장합니다.

 

이후 공격에 사용한 계정을 삭제하여 공격을 종료하는 것으로 확인됩니다.

 

취약한 대상서버를 깔았으니 테스트를 해보겠습니다.

 

RHOSTS 를 설정해줘야 하여 깔아놓은 nagiosxi의 IP를 입력해줬습니다.

 

exploit 후 실행되는 내용을 확인하겠습니다. 

 

우선 대상서버가 nagiosxi인지 확인하네요 아까 check 함수가 동작하는 것 같습니다.

 

이후 /nagiosql/admin/settings.php로의 지정된 id 및 passw로 로그인을 시도합니다.

 

이후 api키를 반환하기 위한 sqlinjection을 시행 합니다.

반환된 apikey값을 이용하여 관리자 계정을 생성합니다.

user가 성공적으로 생성되었다는 응답값이 확인되네요.

 

만들어진 계정으로 로그인을 시도합니다.

 

로그인 성공 후 command injection을 시도하는게 확인되네요. 보기 편하게 디코딩을 해보겠습니다.

 

command_data 패러미터값에 명령어 주입하는게 확인되네요. printf이후 나오는 문자열은 8진수가 입력되는 것으로 확인되는데요 해당 문자열을 /tmp/mPIRk 파일로 저장후 권한변경, 해당 바이너리 파일을 실행한뒤 삭제하는 내용의 명령어를 /usr/local/nagiosxi/scripts/reset_config_perms.sh 파일로 저장 후 해당 파일을 실행하는 것으로 확인됩니다. 공격 코드를 명확히 알기위해 8진수 변환을 해봐야하나... 인터넷에 있는 8진수변환기로는 저숫자들을 하나씩 다 입력해서 변환해야하네요 ... 한번에 입력해서 변환하는 좋은 8진수 변환기를 찾으면 변환해보는 것으로 하겠습니다.

아무튼 이후 작업은 실행했던 명령어 파일을 저장했던 백업파일로 원복하고 관리자 계정까지 삭제한뒤 끝마치는 모습이네요.

 

해당 취약점은 chaining 취약점으로 각각이 연관돼서 상호작용이 일어난다고 하네요. 확인해보니 각각의 취약점이 곳곳에 사용되어 실제 관리자 권한으로 다양한 액션을 취하는 것이 확인되었습니다.

 

공격이 실행되는 단계는 다음과 같았습니다.

 

1단계 : nagios 버전 확인

2단계 : DBUSER를 루트로 변경

3단계 : SQLi를 활용하여 API 반환

4단계 : 반환된 API 키를 사용하여 관리자 추가

5단계 : 로그인

6단계 : 명령 주입

 

이같은 취약점을 방어하기 위해선 어떻게 해야할까요... 일단 대상 버젼을 사용하지 않는것이 좋겠는데요. 허나 API키를 반환하는 과정에서 사용되는 SQL 구문으로 인해 대부분의 장비에선 SQL Injection에 의해 탐지될 것으로 판단됩니다. 또한 관리자 로그인 이후 실행되는 Command Injection에서도 추가 탐지가 될 수 있겠네요.

 

대상 Nagiosxi의 버젼은 5.2.6 ~ 5.4.12 라고 하니 해당 버젼을 운용하신다면 업데이트가 필요할 것으로 판단됩니다.

 

우선 이번꺼는 여기까지...

 

참조

www.exploit-db.com/exploits/44560

blog.easyshell.io/exploits/2018/04/26/nagios.html