【发布时间】:2013-04-05 03:47:03
【问题描述】:
是否有一种(兼容的)方法可以欺骗(以 root 身份)unix 套接字(文件系统套接字)对等凭据通过getsockopt()获得,选项SO_PEERCRED?
背景:
我需要连接到一个服务器应用程序(我无法修改),它检查通过SO_PEERCRED 连接到它的进程的UID。我想伪造这些信息,以便能够连接到应用程序也以 root 身份。
更新
澄清问题:
我正在寻找一种非侵入性的方式让服务器看到特定的对等方UID/GID。
不鼓励需要更改内核(或使用内核模块)或更改服务器进程或其加载/链接进程的解决方案> 以任何方式(LD_PRELOAD、系统调用拦截等)。
基本上,该解决方案可以在没有任何特殊要求的任何 linux(或一般的 unix)服务器上运行时工作。服务器进程可能已经在运行。
【问题讨论】:
-
如果你是
root,为什么不只是setuid?你可以从一个完全受控的子进程中做到这一点,这样你就可以避免实际上失去特权。 -
我不确定,但在 Linux 下,
/proc/<pid>/fdinfo/<sd>中有一个八进制值前缀标志。 -
你能控制服务器进程的启动,即你能用一个LD_PRELOAD来修改库函数/syscall thunk来改变报告的凭据吗?
-
@MRalwasser:你所说的“恶搞”是什么意思?将服务器应用程序运行在具有修改内核或被黑客入侵的 Glibc 的不同服务器上会被视为“欺骗”。使用
setuid怎么样?那是“欺骗”吗?通常这些方法都不会被视为“恶搞”。
标签: c security sockets unix unix-socket