开发者社区> apachecn_飞龙> 正文

雪城大学信息安全讲义 3.1 Set-UID 机制如何工作

简介: 三、Set-UID 特权程序 原文:Set-UID Programs and Vulnerabilities 译者:飞龙 这个讲义的主要目标就是来讨论特权程序,为什么需要他们,他们如何工作,以及它们有什么安全问题。
+关注继续查看

三、Set-UID 特权程序

原文:Set-UID Programs and Vulnerabilities

译者:飞龙

这个讲义的主要目标就是来讨论特权程序,为什么需要他们,他们如何工作,以及它们有什么安全问题。特权程序是可以给予用户额外权限的程序,这些权限超出了用户已有的权限。例如,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来将文件所有者修改为任何用户?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
18057 0
深入研究Servlet线程安全性问题
  摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。
899 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
17566 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23590 0
雪城大学信息安全讲义 3.1 Set-UID 机制如何工作
三、Set-UID 特权程序 原文:Set-UID Programs and Vulnerabilities 译者:飞龙 这个讲义的主要目标就是来讨论特权程序,为什么需要他们,他们如何工作,以及它们有什么安全问题。
923 0
雪城大学信息安全讲义 3.3 提升 Set-UID 程序的安全性
3 提升 Set-UID 程序的安全性 exec函数 exec函数系列通过将当前进程映像包装为新的,来运行紫禁城。有许多exec函数的版本,工作方式不同。
914 0
+关注
apachecn_飞龙
Github:@wizardforcel 简书:@ApacheCN_飞龙 微博:@龙雀 CSDN:@wizardforcel ApacheCN 官网:apachecn.org 机器学习交流群:629470233
719
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载