IT/ISSUE

Linux su(switchuser)do 취약점 고찰

종금 2019. 10. 29. 15:41
반응형

세상에 완벽한 보안이 없고 이는 리눅스도 마찬가지다.

(물론 오픈 소스라 대비책은 좀더 빠를 수 있지만)

그리고 2019년 10월에도 리눅스에 대한 보안 이슈는 당연히 존재한다.

 

일단 4년된 와이파이 모듈에서도 취약점이 존재하지만 그중 이번 취약점중 가장 심각해 보이는건

sudo 취약점(CVE-2019-14287)이다.

일단 CVE 사이트에서 해당 CVE번호를 검색하면 아래와 같이 설명이 나온다.

sudo 버전중 1.8.28이전 버전은 모두 포함되며 공격자는 PAM 모듈에 blacklist가 포함되어 있어있더라도 sudo를 통한 id 변경이 가능하다고 나오며 마지막에 sudo -u \#$(0xfffffff)명령어로 가능하다고 적혀있다.

 

현재 로그인 된 계정은 park이고 os는 element이다.

(element os는 root 계정을 막아놔서 쓰지를 못한다 그러니 이번에 root를 사용할 수 있도록 바꾸어보자)

 

먼저 버전이 맞는지 확인해 보아야 하니 sudo -V를 검색해보자

대충 21로 시작하는거보니 21에 마이너 업데이트된 28 이하버전인거 같다.

 

그럼 실행되는 것은 확인했고 위에 적인 sudo로 시작하는 뭐시기 명령어를 입력해야 하는데

명령어가 어려우니 아래와 같이 고쳐서 입력해보자 해보자.

sudo -park#-1 /bin/bash (*os 따라서 su로 쳐야할 수도 있음)를 입력 후 park의 패스워드를 입력하면

root의 /bin/bash에 접속되는 것을 확인할 수 있다.

(*다시시도해주세요는 패스워드가 틀려서 나온것이다. 무시하도록하자)

 

아래보면 root로 로그인된것이 있다. (whoami치면 root 로그인상태이다.)

이것을 어떻게 증명할 수 있는가? shadow 파일을 읽으면 된다.

park 계정은 당연히 허가 거부가 뜬다 하지만 루트로 한다면?

이제 passwd를 통해 패스워드를 변경하면 된다.

 

 

 

 

물론 무조건 다되는 것은 아니다. 위에 보면 pam.d에 sudo를 블랙리스트 해도 걸린다지만 이 취약점이 실행되는데는 두가지 조건이 필요하다.

첫째는 루트계정과 실험용 계정에는 패스워드가 적용되어 있어야 한다.

 

#1 실험을 위해 santoku default 상태로 접속해보자(santoku user로 로그인되어 있고 santoku는 root에 비밀번호가 설정되어 있지 않다.)

이제 sudo -santoku#-1 /bin/bash를 입력시 아래와 같이 나온다.

passwd(패스워드)가 없다고 나온다.

root에 패스워드 설정 후 다시 시도해보자

#2 계정에 패스워드 설정안되있을시

 

둘째는 계정에 그룹 권한에 su 권한이 부여되어 있어야한다.

먼저 그룹에서 sudo 그룹의 gid를 찾아보면 27번에 park계정만 존재한다.

먼저 테스트 계정을 생성 후 속한 그룹을 확인하면 새로 만들어진 1001그룹에 속한것을 확인할 수 있다.

테스트 계정에 패스워드 설정하고(위 부분의 조건 만족) 이후 sudo 취약점을 실행하면 아래와 같이나온다.

sudoers에 테스트 계정이 설정되어 있지 않다고 한다. 그럼 이번엔 sudo 그룹에 test 계정 입력 후 다시 취약점 실행 하여 결과를 확인해보자

정말 쉽게 로그인 되는 것을 확인할 수 있다.

그렇다 두가지 조건만 맞는다면 이렇게 쉬운 취약점이다.

 

 

담당자분들은 얼른 28버전 이하로 업데이트 하도록 하자.

#여담

CentOS, Ubuntu, Devian 등 sudo 사용할 수 있으면 다된다.

반응형