Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sudo_inject — [Linux] sudo 토큰을 악용하는 두 가지 권한 상승 기법 | Kitploit
도구/GitHubGitHub/nongiach/sudo_inject
Privilege EscalationExploitationPost-ExploitationDigital ForensicsCTFLearning & EducationRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] sudo 토큰을 악용하는 두 가지 권한 상승 기법

저장소 보기
7301137년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

[Linux] sudo 토큰을 보유한 프로세스 주입을 통한 권한 상승

유효한 sudo 토큰을 가진 프로세스를 주입하여 우리 자신의 sudo 토큰 활성화

소개

우리는 때때로 sudo가 우리를 기억하기 때문에 비밀번호를 묻지 않는다는 것을 알아차렸습니다. sudo는 어떻게 우리를 기억하고 어떻게 식별할까요? 우리의 신원을 위조하고 root가 될 수 있을까요? 제가 아는 한 이 연구는 아직 문서화되지 않았지만, 만약 있다면 알려주세요. 실제로 sudo는 /var/run/sudo/ts/[username]에 각 리눅스 사용자에 대한 파일을 생성합니다. 이 파일들에는 성공 및 실패한 인증이 모두 포함되어 있으며, sudo는 이 파일들을 사용하여 인증된 모든 프로세스를 기억합니다. -- @chaignc

이 저장소는 다음을 제공합니다:

  • sudo 토큰을 남용하여 root 권한을 얻는 방법 (요구 사항이 있으니 너무 기뻐하지 마세요).
  • 주어진 프로세스에 대한 sudo 토큰을 위조하는 도구 (./extra_tools/의 write_sudo_token).
  • 포렌식을 위해 sudo 토큰을 파싱하는 도구 (./extra_tools의 read_sudo_token_forensic 및 read_sudo_token).
  • 임의의 root 파일 쓰기를 안정적인 root 코드 실행으로 변환하는 기술.
  • ptrace를 요구하지 않거나 대상 프로세스가 살아있지 않아도 되는 익스플로잇을 만드는 단서.

취약한 시스템을 익스플로잇하는 방법

참고: 요구 사항을 읽으세요!!

root@kitploit:~
$ sudo whatever
[sudo] password for user:    # Press <ctrl>+c since you don't have the password. # This creates an invalid sudo tokens.
$ sh exploit.sh
.... wait 1 seconds
$ sudo -i # no password required :)
# id
uid=0(root) gid=0(root) groups=0(root)

요구 사항

  • Ptrace가 완전히 활성화됨 (/proc/sys/kernel/yama/ptrace_scope == 0).
  • 현재 사용자는 동일한 uid를 가진 유효한 sudo 토큰이 있는 살아있는 프로세스를 보유해야 합니다.

기본 비밀번호 타임아웃은 15분입니다. 따라서 15분(900초) 안에 sudo를 두 번 사용하면 사용자 비밀번호를 다시 입력하라는 요청을 받지 않습니다.

경고

  • 교육 목적으로만 사용하세요. 소유하지 않은 시스템에는 사용하지 마세요.
  • 충분히 테스트되지 않았으므로 안정적이라고 간주하지 마세요.

내부적으로 무슨 일이 일어날까?

exploit.sh는 현재 사용자가 소유한 모든 셸 프로세스를 주입하고 해당 프로세스의 sudo 토큰을 사용하여 우리 자신의 sudo 토큰을 검증합니다. 겨우 3줄의 셸 코드이니 살펴보세요.

사용 사례

이것은 요구 사항이 없는 일반적인 권한 상승과는 거리가 멀지만 동작합니다. 예를 들어 RCE가 있고 사용자 비밀번호는 없지만 피해자가 sudo를 사용한다면, 토큰을 훔쳐서 쉽게 root를 얻을 수 있습니다.

랩에서 어떻게 시뮬레이션하나요?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # Don't worry this is not persistent accross reboot

두 개의 터미널을 시작하세요:

  • 하나는 sudo를 입력하고 올바른 비밀번호를 입력하는 용도 (예: sudo ls).
  • 다른 하나는 위에서 설명한 대로 익스플로잇을 시작하는 용도.

더 나아가기

exploit v2는 /tmp/sh에 suid sh를 생성합니다

exploit v1으로 운이 없었던 분들은 v2를 시도해보세요

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

포렌식, DFIR?

출력 형식은 개선이 필요하지만, 각 프로세스의 sudo 시도는 /var/run/sudo/ts/[username]에 하나의 항목으로 기록됩니다. 또한 이 파일들은 tmpfs(ram)에 저장되므로, 이 정보를 파싱하여 sudo 시도를 수집하는 volatility 플러그인을 작성할 수도 있습니다.

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

임의 쓰기로 root 권한 획득

임의 쓰기(arbitrary write)가 가능하다면 현재 프로세스에 대한 sudo 토큰을 생성하여 root 코드 실행 권한을 얻을 수 있습니다. extra_tools에서 './write_sudo_token $$ > /var/run/sudo/ts/[username]'를 확인하세요.

Silver sudo 티켓

거의 재부팅되지 않는 서버에 비밀 root 백도어를 만드는 아주 좋은 방법입니다. 아직 완성되지는 않았지만 ./extra_tools에서 './write_sudo_token $$'를 확인하세요.

왜?

죽은 프로세스의 sudo 토큰을 훔칠 방법을 찾고 있었지만, 그것들은 ((프로세스 시작 시간 및 프로세스 세션 ID) 또는 (tty 시작 시간 및 tty 세션 ID))로 연결되어 있어 불가능해 보입니다. 세션 ID(프로세스 PID)는 위조할 수 있지만 프로세스 시작 시간은 위조할 수 없습니다.

어떻게 조치하나요?

  • sudo 버전을 업데이트하세요.
  • ptrace 권한을 줄이세요. 예를 들어 /etc/sysctl.conf에 다음을 편집하세요.
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

링크

/proc/[pid]/stat 파싱

Sudo 토큰 구조체

ptrace 없는 Linux 기반 프로세스 간 코드 주입

프로세스를 다른 터미널로 이동

https://www.linusakesson.net/programming/tty/


@chaignc #HexpressoTeam 제작.

도구 다운로드