加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

UNIX套接字:是否可以欺骗getsockopt()SO_PEERCRED?

发布时间:2020-12-15 22:37:52 所属栏目:安全 来源:网络整理
导读:是否有(兼容的)欺骗(作为root)unix套接字(文件系统套接字)对等凭证的方式,可以通过 getsockopt() 获得,选项SO_PEERCRED? 背景: 我需要连接到一个服务器应用程序(我无法修改),它检查通过SO_PEERCRED连接到它的进程的UID.我想欺骗信息,以便能够以root身份连
是否有(兼容的)欺骗(作为root)unix套接字(文件系统套接字)对等凭证的方式,可以通过 getsockopt()获得,选项SO_PEERCRED?

背景:
我需要连接到一个服务器应用程序(我无法修改),它检查通过SO_PEERCRED连接到它的进程的UID.我想欺骗信息,以便能够以root身份连接到应用程序.

UPDATE

澄清问题:
我正在寻找服务器看到特定对等UID / GID的非侵入性方式.
不鼓励需要改变内核(或使用内核模块)或以任何方式更改服务器进程或其加载/链接过程(LD_PRELOAD,系统调用拦截等)的解决方案.

基本上,该解决方案应该在任何Linux(或一般的unix)服务器上运行时没有任何特殊要求.服务器进程可能已在运行.

解决方法

你说的是正确的.根进程具有欺骗这样的特权的权限,问题只是SO_PEERCRED没有为进程提供任何机制或API来指定应该向对等方呈现什么标识.

你可以做两件事:

>进行连接呼叫时,暂时删除root(setreuid(期望,-1)). unix-domain连接在进程调用connect时标记了对等体的凭证(并以另一种方式监听). SO_PEERCRED在当前时刻不会告诉您对等方的凭据.然后你可以恢复root.>更好,使用另一个API.消息传递API允许进程选择要向对等方呈现的标识.使用包含要发送的凭据的struct cmsg调用sendmsg.内核将忽略非特权用户指定的凭据,并始终确保对方看到实际身份,但特权进程可以伪装成其他任何人.这可以更好地满足您的需求,因为丢弃和重新获得root是一项危险的活动,在这种情况下是不必要的.谷歌为“SCM_CREDENTIALS”(或系统上的“man -K”)获取代码示例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读