[CheatSheet] Linux Privilege Escalation Abusing SUDO

※ 이 글은 Touhid M.Shaikh 님의 블로그에 포스팅된 Abusing SUDO (Linux Privilege Escalation) 를 기반으로 작성하였다.

 

(모의)해킹을 진행함에 있어, root 를 획득하는 것은 대단히 큰 의미를 갖는다. 따라서, 제한된 권한의 shell 을 획득한 후 root 로 권한 상승을 시도하는 것은 필수적인 절차이다. 이 글에서는 sudo 를 이용하여, root 를 획득할 수 있는 방법에 대해 설명한다.

sudo 는 Substitude User and Do 의 약자로, 다른 사용자(일반적으로 root)의 권한으로 명령을 실행한다. 기본적인 사용 방법은 아래와 같다.

 

sudo 권한은 /etc/sudoers 에 정의되어 있다.

20번 라인을 기준으로 설정에 대해 설명하면, “① root 계정은 ② 모든 터미널에서 ③ 모든 사용자 및 ④ 모든 그룹으로 ⑤ 모든 명령어를 실행할 수 있다.”가 된다.

23번 라인의 경우, “① admin 그룹은 ② 모든 터미널에서 ③ 모든 사용자로 ④ 모든 명령어를 실행할 수 있다.”가 된다.

28번 라인의 경우, “① hacker 계정은 ② 모든 터미널에서 ③ root 계정으로 ⑤ find 명령어를 ④ 비밀번호 없이 실행할 수 있다.”가 된다.

 

/etc/sudoer 파일은 root 이외에는 접근할 수 없다. 따라서, 현재 로그인한 계정이나 다른 계정에 sudo 가 어떻게 설정되었는지 확인하려면 다음과 같은 명령을 사용한다.

 

이제 아래와 같이 설정된 경우에 sudo 를 이용하여, root 권한을 획득할 수 있는 방법에 대해 설명한다.

 

sudo + find

 

sudo + vi

해커스쿨 FTZ 문제를 풀어봤다면, 이와 유사한 방법을 활용해서 해결해야 했던 문제가 생각날 것이다.

 

sudo + nmap

 

sudo + man

 

sudo + less

 

sudo + more

 

sudo + awk

 

sudo + nano

 

sudo + wget

 

sudo + mount

 

sudo + strace

 

sudo + tcpdump

Ubuntu(18.04)의 경우, apparmor에 의해 root 권한으로 명령을 실행하는 것을 제한하고 있다. 따라서, tcpdump 로 root 를 획득하기 위해서는 apparmor 의 tcpdump 프로필을 complain 모드로 변경해야 한다. 이를 위해서는 별도의 앱을 설치해야 하며, root 만이 수정할 수 있다. 즉, tcpdump 를 이용한 방법은 효용성이 극히 낮다. apparmor 의 프로필은 아래과 같은 방법으로 수정할 수 있다.