博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
雪城大学信息安全讲义 3.1 Set-UID 机制如何工作
阅读量:6469 次
发布时间:2019-06-23

本文共 1591 字,大约阅读时间需要 5 分钟。

三、Set-UID 特权程序

原文:

译者:

这个讲义的主要目标就是来讨论特权程序,为什么需要他们,他们如何工作,以及它们有什么安全问题。特权程序是可以给予用户额外权限的程序,这些权限超出了用户已有的权限。例如,Web 服务器是特权程序,因为他允许远程用户访问服务端的资源;Set-UID 程序也是个特权程序,因为他允许用户在程序执行期间获得 ROOT 权限。

这篇讲义中,我们会专注于 Set-UID 的机制,并且在我们的案例学习中使用它。但是,我们在这里讨论的许多安全原则也可以用在其他特权程序上。

1 Set-UID 机制如何工作

  • 动机
    • 你想让其他人能够搜索文件中的一些单词,但是不想让他们能够读取文件。如何实现它呢?
    • 用户的密码储存在/etc/shadow中,普通用户不可读写。但是,passwd程序允许用户修改它们自己的密码。也就是,当用户执行passwd,它们可以突然修改/etc/shadow,并且用户只能修改/etc/shadow中的一项,但不是其他人的条目。如何实现?
  • Set-UID 程序
    • 有效 UID 和真实 UID 的概念
    • 对于非 Set-UID 程序,二者相同
    • 对于 Set-UID 程序,前者是程序所有者的 UID,后者是程序用户的 UID。
  • 有效 UID 和真实 UID
    • 登录时期,真实 UID 和有效 UID,以及登录过程保存的 UID 都设为负责进程创建的用户的登录 UID。对于真实、有效和保存的组 ID 也一样。它们设为负责进程创建的用户的组 ID。
    • 当进程调用exec系列函数之一,来执行文件(程序)时,进程相关的用户和组标识符会发生改变。如果执行的文件是个 Set-UID 文件,进程的有效和保存的 UID 会设为所执行文件的所有者。如果所执行文件是个 Set-GID 文件,有效 UID、保存的 UID 以及有效 GID、保存的 GID 不会改变。
    • 访问控制基于有效 UID 和 GID。
  • 为什么passwdchshsu程序需要为 Set-UID 程序?
  • Windows NT/2000 中有没有 Set-UID 程序?如果没有,相同问题在 Windows 中如何解决?
    • Windows 没有 Set-UID 这个概念。不同的机制用于实现权限功能。开发者会将特权程序编写为服务,用户使用本地过程调用将命令行参数发给服务。
    • 服务可以自动或手动启动。
    • 每个服务都有安全描述符,制定了哪个用户允许启动、停止和配置该服务。
    • 服务通常在本地系统账户下运行。
  • 如何打开 Set-UID 位:

    % chmod 4755 file ---> -rwsr-xr-x
  • Set-UID 在 Minix 中如何实现?

    /* This is the per-process information */ EXTERN struct fproc {    uid_t fp_realuid; /* real user id */     uid_t fp_effuid; /* effective user id */     gid_t fp_realgid; /* real group id */     gid_t fp_effgid; /* effective group id */     ...}
  • Set-UID 机制的恶意使用:

    • 攻击者可以使用你的账户十秒。它能够植入后门,以便之后再回到你的账户吗?
    % cp /bin/sh /tmp % chmod 4777 /tmp/sh

    由此,攻击者创建了 Set-UID SHell 程序,你是这个程序的所有者。因此,当攻击者之后再运行 Shell 时,它使用你的权限运行。

  • 问题:
    • 普通用户是否可以调试 Set-Root-UID 程序?
    • 普通用户是否可以使用chown来将文件所有者修改为任何用户?

转载地址:http://gdjko.baihongyu.com/

你可能感兴趣的文章
Linux平台下使用rman进行oracle数据库迁移
查看>>
全栈工程师学习Linux技术的忠告
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>
C# Dictionary用法总结
查看>>
SVN服务器使用(二)
查看>>
反射获取内部类以及调用内部类方法
查看>>
C语言 - pthread
查看>>
App里面如何正确显示用户头像
查看>>
DATAGUARD维护:从库宕机后如何恢复到管理恢复模式
查看>>
U-BOOT之一:BootLoader 的概念与功能
查看>>
我的路上
查看>>
Velocity处理多余空白和多余空白行问题
查看>>
java值传递
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
js获取当前时间的前一天/后一天
查看>>
Python字符串的格式化
查看>>
C#反射---属性
查看>>
服务器常用的状态码及其对应的含义如下
查看>>