小编zin*_*dle的帖子

为什么 ping 在没有能力和 setuid 的情况下也能工作

我从这里了解到有两种方法可以控制特权活动:setuidcapability

但是当我在我的机器上玩时ping,它似乎可以绕过这两种机制。

首先,确认我的机器/usr/bin/pingcap_net_raw能力并且它使用SOCK_RAW

$ ll /usr/bin/ping
-rwxr-xr-x 1 root root 72K Jan 31  2020 /usr/bin/ping

$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep

$ strace -e socket ping <some-ip>
socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 5
Run Code Online (Sandbox Code Playgroud)

复制二进制文件会删除该功能,但它仍然有效:

$ cp /usr/bin/ping ~

$ ll ~/ping
-rwxr-xr-x 1 user user 72K Nov  4 16:54 /home/user/ping

$ getcap ~/ping
[empty result]

$ ~/ping <some-ip>
[it works]
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu 20.045.4.0-52-generic

setuid setcap capabilities

5
推荐指数
1
解决办法
7245
查看次数

标签 统计

capabilities ×1

setcap ×1

setuid ×1