Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2021-4034 PoC — polkit 缓冲区错误漏洞

Source
Associated Vulnerability
Title:polkit 缓冲区错误漏洞 (CVE-2021-4034)
Description:A local privilege escalation vulnerability was found on polkit's pkexec utility. The pkexec application is a setuid tool designed to allow unprivileged users to run commands as privileged users according predefined policies. The current version of pkexec doesn't handle the calling parameters count correctly and ends trying to execute environment variables as commands. An attacker can leverage this by crafting environment variables in such a way it'll induce pkexec to execute arbitrary code. When successfully executed the attack can cause a local privilege escalation given unprivileged users administrative rights on the target machine.
Readme
# Pwnkit Exploit Instructions

I did not write this.  This is only to document my exection/instruction of exploit use as there are some very intricate and complicated steps to follow.  

Files come from the following source:
https://packetstormsecurity.com/files/165739/PolicyKit-1-0.105-31-Privilege-Escalation.html

Additional assistance on execution found here:
https://ine.com/blog/exploiting-pwnkit-cve-20214034

This was tested/executed on OSCP's Blackgate Practice VM:
	Ubuntu 20.04
	Kernel 5.8.0-63-generic
	
	
How to know if vulnerable:

Check for available SUID and make sure `/usr/bin/pkexec` is a SUID binary:
 `find / -perm -4000 2>/dev/null`
 
Check permissions of the binary:
`ls -al /usr/bin/pkexec`

Check pkexec version:

`/usr/bin/pkexec --version`

Vulnerable version found on Blackgate: `pkexec version 0.105`

Make sure compiler is available on the victim machine.
`gcc version`
	
# Exploit Execution

Copy the files over to the vicitm machine (Makefile, evil-so.c, exploit.c)
And compile using 'make all' command.
Execute './exploit'

Check shell

# Compilation errors
if you get an error stating that `cc: error trying to exec 'cc1': execvp: No such file or directory`.  
use `locate cc1' command to find the binaries:

```
locate cc1
/lib/modules/4.15.0-20-generic/kernel/drivers/iio/adc/cc10001_adc.ko
/lib/modules/4.15.0-20-generic/vdso/.build-id/a0/297fe29f8038ef50a10a26c9fcf5249ccc1184.debug
/usr/lib/gcc/x86_64-linux-gnu/7/cc1
/usr/lib/gcc/x86_64-linux-gnu/7/libcc1.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0
/usr/lib/gcc/x86_64-linux-gnu/7/plugin/libcc1plugin.so.0.0.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0
/usr/lib/x86_64-linux-gnu/libcc1.so.0.0.0

# Then Export the location to Path for reference, try to build again
Jack@oscp:/home/Jack$ export PATH=$PATH:/usr/lib/gcc/x86_64-linux-gnu/7/cc1
```



File Snapshot

[4.0K] /data/pocs/100a34b65da9d07dd3f23168fec5979dbea03bde ├── [ 186] evil-so.c ├── [ 626] exploit.c ├── [ 147] Makefile └── [1.9K] README.md 0 directories, 4 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →