CVE-2021-3156 (Sudo Baron Samedit)
이 저장소는 Linux x64를 대상으로 하는 CVE-2021-3156 익스플로잇입니다. 분석 문서는 https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31 에서 확인하세요.
Qualys의 Braon Samedit 원본 권고에 대한 크레딧.
파일
tcache가 있는 glibc용 익스플로잇
- exploit_nss.py 모든 요구 사항과 /etc/nsswitch.conf의 항목 수를 자동 감지
- exploit_nss_manual.py 익스플로잇 이해를 돕기 위한 exploit_nss.py의 단순화 버전
- exploit_timestamp_race.c def_timestamp를 덮어쓰고 경쟁 조건을 이용해 /etc/passwd 수정
tcache가 없는 glibc용 익스플로잇
- exploit_defaults_mailer.py struct defaults를 덮어써 mailer 바이너리 경로를 수정하는 익스플로잇. CentOS 6 및 7과 같이 disable-root-mailer 없이 컴파일된 sudo가 필요합니다.
- exploit_userspec.py struct userspec을 덮어써 인증을 우회하고 /etc/passwd에 새 사용자를 추가하는 익스플로잇. sudo 버전 1.8.9-1.8.23만 지원합니다.
- exploit_cent7_userspec.py 이해를 돕기 위한 exploit_userspec.py의 단순화 버전이지만 기본 구성의 CentOS 7만 대상으로 합니다.
- exploit_nss_d9.py Debian 9에서 struct service_user를 덮어쓰지만 기본 /etc/nsswith.conf만 지원합니다.
- exploit_nss_u16.py Ubuntu 16.04에서 struct service_user를 덮어쓰지만 기본 /etc/nsswith.conf만 지원합니다.
- exploit_nss_u14.py Ubuntu 14.04에서 struct service_user를 덮어쓰지만 기본 /etc/nsswith.conf만 지원합니다.
기타
- asm/ 파이썬 익스플로잇에 포함하기 위한 tinyelf 라이브러리 및 실행 파일
- gdb/ sudo 힙 디버깅에 사용되는 스크립트
익스플로잇 선택
glibc에 tcache 지원이 활성화된 Linux 배포판(CentOS 8, Ubuntu >= 17.10, Debian 10)의 경우:
- 먼저 exploit_nss.py를 시도하세요.
- 오류가 glibc tcache와 관련이 없다면 다음으로 exploit_timestamp_race.c를 시도할 수 있습니다.
glibc에 tcache 지원이 없는 Linux 배포판의 경우:
- 대상이 Debian 9, Ubuntu 16.04 또는 Ubuntu 14.04라면 먼저 해당 버전에 맞는 exploit_nss_xxx.py를 시도하세요.
- 다음으로 exploit_defaults_mailer.py를 시도하세요. 대상 sudo가 --disable-root-mailer로 컴파일된 것을 알고 있다면 이 익스플로잇은 건너뛸 수 있습니다. 이 익스플로잇은 sudo 바이너리에서 root mailer 플래그를 확인하려고 시도합니다. 그러나 일부 Linux 배포판의 sudo 권한은 4711(-rws--x--x)이라 대상 시스템에서 확인이 불가능합니다. (확인된 작동 OS는 CentOS 6 및 7입니다.)
- 마지막으로 exploit_userspec.py를 시도하세요.