有效 suid/sgid 可执行文件列表?

有效 suid/sgid 可执行文件列表?

有人能告诉我在哪里可以找到 Ubuntu(14.04)上有效的 suid/guid 程序列表吗?

注意我可以使用 find 来获取我的机器上的 suid/sgid 程序列表,但我想知道它们是否是真正的有效程序;是否有一个列表可以与它们进行比较,或者有其他方法来确定它们是否有效?

答案1

有一个想法 - 但需要在脚本方面做一些工作---请随意 ;-)

  1. 找到一个 suid/sgid 文件;我们把它称为scommand

  2. 检查已安装的包:

    dpkg -S /full/path/to/scommand 
    
  3. 将其权限与原始 deb 包进行比较,首先下载该包:

    apt-get download package
    
  4. 检查命令是否应该在包中设置 suid

    dpkg -c package*deb | grep /full/path/to/scommand
    
  5. 清理、冲洗、重复。

例子:

[romano:~/tmp] % ls -l /bin/passwd
ls: cannot access /bin/passwd: No such file or directory
[romano:~/tmp] 2 % ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 Feb 17  2014 /usr/bin/passwd
[romano:~/tmp] % dpkg -S /usr/bin/passwd
passwd: /usr/bin/passwd
[romano:~/tmp] % apt-get download passwd
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main passwd amd64 1:4.1.5.1-1ubuntu9 [755 kB]
Fetched 755 kB in 1s (487 kB/s)
[romano:~/tmp] % dpkg -c passwd*.deb| grep /usr/bin/passwd
-rwsr-xr-x root/root     47032 2014-02-17 03:42 ./usr/bin/passwd

警告:.deb 软件包中的某个文件可能不是 suid/sgid,但安装/安装后脚本会将其更改为 suid/sgid。在这种情况下,您必须找到其他方法来检查,也许可以与全新安装进行比较。

答案2

这似乎有效:它首先对系统可以下载的每个包进行 apt-cache 搜索,然后下载所有包(压缩在它们的 .deb 中),然后循环运行 dpkg -c 来获取 .deb 文件中文件的路径和权限,通过剪切前三个字符并查找在行首设置的 suid 位,然后打印所有具有 suid 属性的路径。

PKG=$(apt-cache search . | cut -f 1 -d ' ');
echo $PKG | xargs apt-get download;
F=(`find *.deb`); for i in ${F[@]};
do dpkg -c $i | cut -c 4- | grep ^s | cut -c 4- | cut -f 2 -d '.'  | tee > suid_root;
done

笔记:这需要很多的磁盘空间来运行,并且速度或其他方面都没有得到很好的优化。

相关内容