Linux Privilege Escalation Abusing SUDO

 

※ 원문 : Abusing SUDO (Linux Privilege Escalation)

 

1. Knowledge

 

sudo 는 Substitude User and Do 의 약자로, 다른 사용자(일반적으로 root)의 권한으로 명령을 실행한다.

기본적인 사용 방법은 아래와 같다.

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

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

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

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

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

 

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

 

2. sudo + find

 

 

3. sudo + vi

 

 

4. sudo + nmap

 

 

5. sudo + man

 

 

6. sudo + less

 

 

7. sudo + more

 

 

8. sudo + awk

 

 

9. sudo + nano

 

 

10. sudo + wget

 

 

11. sudo + mount

 

 

12. sudo + strace

 

 

13. sudo + tcpdump

 

Ubuntu(18.04)의 경우, apparmor에 의해 root 권한으로 명령을 실행하는 것을 제한하고 있다.

따라서, tcpdump 로 root 를 획득하기 위해서는 apparmor 의 tcpdump 프로필을 complain 모드로 변경해야 한다.

이를 위해서는 별도의 앱을 설치해야 하며, root 만이 수정할 수 있다.

즉, tcpdump 를 이용한 방법은 효용성이 극히 낮다.

apparmor 의 프로필은 아래과 같은 방법으로 수정할 수 있다.