sudo의 버전을 이용한 버퍼 오버플로우에 의한 권한 상승 취약점.
CVE-2021-3156은 sudo의 버전이 1.9.5p2 보다 낮을 경우 악용할 수 있다.
해당 취약점은 유명해서 또 다른 이름으로 Baron Samedit이라고도 불린다.
sudo의 버전 확인
리눅스 시스템에 초기 진입에 성공했을 때 SUID의 리스트를 확인한다.
보통 sudo가 포함되어 있지만 보안 문제로 사용이 제한되어 있는 경우가 많다.
그렇다고 그냥 지나치지 말고 버전을 확인해본다.
$ sudo --version
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.31
위의 경우 버전이 1.8.31로 CVE-2021-3156에 해당되는 것을 알 수 있다.
Poc를 다운로드, 실행
취약점을 이용하는 방법은 간단한데 poc소스 코드를 다운받아서 실행하면 끝이다.
https://github.com/mohinparamasivam/Sudo-1.8.31-Root-Exploit 여기서 깃을 클론해온다.
위의 리포지토리의 경우 gcc로 컴파일 할 필요가 있기 때문에 시스템에 gcc가 없으면 사용하기 어렵다.
https://github.com/worawit/CVE-2021-3156 여기의 경우 파이썬 파일로도 같은 기능을 하기 때문에 python이 설치되어 있으면 사용할 수 있다.
# 실행전
www-data@ip-172-20-3-199:/tmp/Sudo-1.8.31-Root-Exploit-main$ whoami
www-data
#실행 후
www-data@ip-172-20-3-199:/tmp/Sudo-1.8.31-Root-Exploit-main$ ./exploit
whoami
root
위의 코드를 보면 실행 후 바로 root로 바뀌는 것을 알 수 있다.