参考:http://blog.sina.com.cn/s/blog_e75622150102xh8p.html
1.解释”passwd”、”sudo”、”ping”等命令为什么需要setuid位,去掉s位试运行,添加权能试运行。 (1)通过which命令查看passwd、sudo、ping命令的位置,然后查看这三个命令的权限,发现这三个命令的属主和数组都是root,即需要root权限来运行此命令,普通用户没有权限运行此命令。所以对这些命令setuid位,允许用户以文件所有者的权限执行一个程序的权限位,使用户在运行这些命令时临时获得这些命令属主的权限,就可以临时提权,普通用户也可以使用这些命令完成相应的功能。
(2)以ping命令为例: 设置了s位,可以正常ping百度 去掉s位,看到ping命令显示Operation not permitted 将s位添加回来,又可以正常进行ping
(3)以ping命令为例: 去掉s位之后,为ping命令添加权能cap_net_raw,发现ping操作可以正常运行
2.指出每个权能对于的系统调用,简要解释功能 参考:https://www.cnblogs.com/zhiliao112/p/4051376.html 每个进程有三个和能力有关的位图:inheritable(I)、permitted(P)和effective(E),对应进程描述符 task_struct(include/linux/sched.h)里面的cap_effective, cap_inheritable, cap_permitted。每种能力由一位表示,1表示具有某种能力,0表示没有。 例如,如果一个进程要设置系统的时钟,Linux的内核就会检查 cap_effective的CAP_SYS_TIME位(第25位)是否有效, 例如,ping只需要CAP_NET_RAW,如果它放弃除这个能力之外的其它能力,即使存在安全缺陷,也不会对系统造成太大的损害。
3.查找你linux发行版系统中所有设置了setuid位的程序,指出其应该有的权能。 本实验所用的linux环境为如下:
find命令根据权限查找 -perm -perm [/|-]mode mode 可以是代表权限的八进制数字(777、666 …)也可以是权限符号(u=x,a=r+x)。 1)mode:精确权限匹配;寻找具体权限的文件 2)-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足。9位权限之间存在“与”关系; 寻找到的文件至少拥有 mode 所述的权限,而不是具体的权限(大于或等于此权限的文件都会被查找出来) 3)/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系; 只要有一组用户匹配到一个权限即可
处理动作: -print:输出至标准输出;默认的动作; -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息; -delete:删除查找到的文件; -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中; -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认; -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;
例子: #find /tmp -perm 755 //查找在/tmp目录下权限是755的文件 (要用sudo执行) find -perm 777 查找到当前目录权限为确切为 777 权限的文件 find -perm -766 这条命令将在所有文件中查找文件所有者的“读/写/执行”权限,文件用户组的“读/写”权限和其他用户的“读/写”权限。文件并不要求是确切的 766 权限。它将会显示任何属于(高于)此权限的文件 。 find -perm -220 查找所有者和用户组都拥有写权限的文件 find -perm /220 查找所有者或用户组中拥有写权限的文件。这意味着匹配所有者和用户组任一可写的文件,而其他人的权限随意 find -perm /222 查找某些人(要么是所有者、用户组,要么是其他人)拥有写权限的文件。
可以等效使用 = 或 + 两种符号标识 find -perm -g=w 寻找用户组中拥有 写 权限的文件 find -perm -g+w find -perm -u=w 查找文件所有者中拥有写权限的文件 find -perm -a=w 查找所有用户中拥有写权限的文件 find -perm -g+w,u+w 查找所有者和用户组中同时拥有写权限的文件 上述命令等效与 find -perm -220。 find -perm /u+w,g+w 查找所有者或用户组中拥有写权限的文件 find -perm /u=w,g=w 上述命令等效于 find -perm /220。
421 421 421 777 rwx rwx rwx 766 rwx rw- rw- 655 rw- r-x r-x
https://www.cnblogs.com/scrit/p/5854197.html https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79179965
综上,本题需要找出所有设置了setuid的程序,可以用下面的任意一个命令完成此功能。 sudo find / -perm /4000 -print 或 sudo find / -perm /4000 -ls sudo find / -perm -4000 -print sudo find / -perm /u=s -print sudo find / -perm -u=s -print sudo find / -perm /u+s -print sudo find / -perm -u+s -print
列举部分命令程序的权能如下:
mount命令:可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了 fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息
4.实现一个程序使其满足以下功能: (1)能够永久删除其子进程的某个权能 (2)能暂时性的删除其子进程的某个权能 (3)能让上面被暂时性删除的权能重新获得
(1)进行完一些基础的设置(安装libcap-dev 设置ping权能)之后,编译运行
(2)查看当前权能,进行ping,可以ping通
(3)暂时删除权能后,发现不能ping了
(4)恢复权能后,发现又能ping通了
(5)永久删除某权能后,又能ping通了
|