据我所知,您只能通过扰乱内核的地址空间来更改父进程 uid,有更好的方法吗?如果我只能更改内核的内存,我该怎么办?
注意:子进程有root,父进程没有。
答案1
您无法更改其他进程的 UID。
实际上,您可以使用调试器使其放弃权限,但无法以这种方式提升权限(调试器可以使程序执行通常不会执行的操作,但不能执行无权执行的操作)。
是的,您可以通过将一些代码加载到内核中,或者直接通过/dev/mem
或访问内核数据结构来执行任何您想要的操作/dev/kmem
。但找到正确的地址很困难,而正确的修改更是如此。除了安全漏洞之外,这不是做任何事情的合理方法。
如果您绝对必须拥有一个非特权进程和一个特权子进程,请让子进程侦听来自非特权进程的请求并代表其执行这些请求。对于子进程愿意执行的操作要非常小心:请记住,您无法真正辨别请求是来自您期望的进程还是来自虚假进程。任何安全检查都必须在特权进程内部执行,而不信任来自非特权进程的数据。