Кто-либо может сказать мне, где найти список действительных suid/guid программ на Ubuntu (14.04)?
Обратите внимание, что я могу использовать, находят для получения списка suid/sgid программ на моей машине, но я хочу знать, являются ли они реальными действительными программами; существует ли список, который я могу сравнить их с или некоторые другие средства определить, допустимы ли они?
Для одной идеи - но будет нужно немного работы в сценариях---быть моим гостем ;-)
Найдите suid/sgid файл; давайте назовем его scommand
Проверьте, от которого был установлен пакет:
dpkg -S /full/path/to/scommand
Сравните его разрешение с исходным deb пакетом путем первой загрузки пакета:
apt-get download package
Проверьте, должна ли команда иметь набор suid в пакете с
dpkg -c package*deb | grep /full/path/to/scommand
очистка, промывка, повторяется.
Пример:
[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
протест: это может произойти, что файл не является suid/sgid в .deb пакете и что это изменяется так сценариями установки / сценариями после установки. В этом случае необходимо найти другие способы проверить, возможно, соответствуя новой установке.
Это, кажется, работает: Это сначала делает способный кэш, ищут каждый пакет, система может загрузить, затем загружает их всех (сжатый в их .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
Примечание: это берет партия из дискового пространства для выполнения и не очень оптимизировано для скорости или чего-либо.