gpt4 book ai didi

c - 在内核中创建一个指向我们自己的函数指针

转载 作者:行者123 更新时间:2023-11-30 17:09:28 24 4
gpt4 key购买 nike

假设我在内核中创建了一个函数指针,指向用户空间代码中我自己的函数。让我们说line 626<mm/filemap.c>在内核 2.4.37 中,自 writepage函数指针指向我自己设计的writepage在用户空间中,我现在可以获取 root shell 或做任何坏事吗?我已经验证了writepage在内核中指向我自己设计的writepage现在,这是我自己的writepage :

int evil_writepage(struct page *page)
{
printf("You've done bad things!!\n");
/* To do, can I get root shell in here? Or anything bad*/
exit(1);
}

最佳答案

在内核利用过程中获取 root 权限的最直接、最经典的方法是调用函数序列

commit_creds(prepare_kernel_cred(0));

在内核模式下获取code-exec后。为此,您需要查找 commit_credsprepare_kernel_cred 的地址。这样做超出了本答案的范围,但通常可以通过解析 /proc/kallsyms (如果在没有 kptr_restrict 的情况下运行)或通过解析内核符号表来完成你被劫持的回调。

运行此代码后,您的进程将拥有 root 权限,但您仍然需要安全地返回用户空间(即返回时不会触发任何崩溃)。从 writepage 中,您只需从被劫持的函数返回即可安全返回,因为您没有破坏任何关键的内核结构。

返回用户模式后,您可以运行例如execve("/bin/sh", ["sh", NULL], [NULL]) 获取 root shell。

关于c - 在内核中创建一个指向我们自己的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com