我正在开发一个漏洞利用项目,该项目需要我从内核中调用 root shell。在搜索了各种文档和网站后,我了解到唯一的方法是将当前进程提升到 root 权限,然后执行指令来调用 shell。这是因为我们不能简单地从内核调用系统调用。
同样,我遇到了 call commit_creds (prepare_kernel_cred (0));
,它可用于授予进程 root 权限。但是,我使用的是 Red Hat Enterprise Linux 4.4 Base,它没有上述调用:
[dmazumd@bn19-62 ~]$ grep commit_cred /proc/kallsyms
[dmazumd@bn19-62 ~]$ grep _cred /proc/kallsyms
c0164655 T compute_creds
c01a7cdd t dummy_bprm_apply_creds.....
所以,我的问题是,如何解决这个问题?我知道需要uid
将进程的设置为零,这将为其提供 root 权限。AFAIK,uid
居住在struct_cred
而不是struct_task
现在。而且我不知道是否可以在不使用上述任何 API 的情况下直接访问这些结构。是否有任何其他呼吁来实现同样的目标?或者,还有其他方法吗?
PS:我不是要求我的问题的确切答案,任何方向/帮助将不胜感激。