AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 42173
Accepted
Swoogan
Swoogan
Asked: 2009-07-18 07:14:14 +0800 CST2009-07-18 07:14:14 +0800 CST 2009-07-18 07:14:14 +0800 CST

下次入侵帐户时,攻击者如何获得 root 权限?

  • 772

当我遇到以下内容时,我正在阅读有关 root/sudo 的 Ubuntu 文档:

  • sudo 不比 su 安全吗?

    基本的安全模型是相同的,因此这两个系统有共同的主要弱点。任何使用 su 或 sudo 的用户都必须被视为特权用户。如果该用户的帐户被攻击者入侵,攻击者还可以在用户下次这样做时获得 root 权限。

攻击者如何在用户下一次获得 root 权限?假设 sudo 被禁用。

linux security root sudo
  • 6 6 个回答
  • 2326 Views

6 个回答

  • Voted
  1. Kamil Kisiel
    2009-07-18T08:38:01+08:002009-07-18T08:38:01+08:00

    其实很简单。sudo通常设置为缓存其身份验证,因此您不必在每次使用sudo命令时都输入密码。我相信默认的缓存时间大约是 5 分钟。

    因此,如果攻击者有权访问具有访问权限的用户帐户sudo,即使不知道他们的密码,他们也可以等待用户下次执行sudo. 然后攻击者可以立即运行sudo并获得一个 root shell。

    我认为这是他们提到“用户下次这样做”时所指的场景。

    • 3
  2. Chad Huneycutt
    2009-07-18T07:37:07+08:002009-07-18T07:37:07+08:00

    我认为您所询问的情况与通过 su 提升权限有关。由于可能只有用户的密码被泄露,因此攻击者在拥有 root 密码之前无法升级。如果攻击者安装了键盘记录程序或替换了 su 或类似的东西,他/她将能够在特权用户下次键入时获得 root 密码。

    • 1
  3. theotherreceive
    2009-07-18T08:27:14+08:002009-07-18T08:27:14+08:00

    sudo -s执行用户 .bashrc。如果您有权访问该用户帐户,则可以在此 bashrc 中添加以 root 身份运行的行。

    # ~/.bashrc
    cp /bin/bash /bin/something_else
    chmod 4755 /bin/bash
    

    我会添加类似的东西,创建一个 bash 的 setuid 副本,以便我以后可以运行它。


    编辑:现在的问题似乎是询问不使用 sudo 的情况。

    如果我想从使用 su 的用户那里获得 root 权限,我想到的第一个技巧就是修改他们的路径。

    # echo $PATH 
    /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    $ export PATH=/tmp:$PATH
    su
    # echo $PATH 
    /tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    

    那是使用 bash 4 运行 fedora 11。su 的配置,shell 环境的东西几乎是默认的。

    如您所见,我能够以普通用户的身份更改路径,并且此路径没有被 su 重置(注意su -会重置它)。在他们的 shell rc 中更改他们的路径,然后将我自己的脚本放入路径顶部的新目录中。使用 ls、cp、mv 之类的名称复制它(或符号链接),这些名称经常运行。

    #!/bin/bash
    # make a shell for later
    cp /bin/bash /bin/something_else
    chmod 4755 /bin/bash
    # cause more trouble
    ...
    # now run the real command so the user doesn't notice
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    exec $0 $*
    

    不管怎样,这些只是例子,毫无疑问还有其他类似的场景。我认为关键是可以 su 或 sudo 的帐户需要小心。

    • 1
  4. Best Answer
    asdmin
    2009-07-18T09:54:10+08:002009-07-18T09:54:10+08:00

    虽然 sudo 通常与 su 命令一起使用,但认为 sudo su 是唯一的做法是错误的。

    sudo 有许多选项可以设置由谁(用户组的以太用户)在哪个主机上执行什么。细粒度的 sudoers 文件(或 LDAP 条目,如果涉及 sudo-ldap)与系统管理员的聪明头脑一起最终可能会形成即使用户帐户已被破坏也不会危及系统安全的规则。

    让我们看一个真实的例子:

    $须藤-l
    用户 exampleuser 可以在此主机上运行以下命令:
        (根) /opt/xmldns/gen.sh
        (根) /usr/bin/make -C /root/admin
        (根) /usr/sbin/xm 列表,/usr/sbin/xm dmesg
        (root) /usr/sbin/zorpctl 停止,/usr/sbin/zorpctl 启动,/usr/sbin/zorpctl 状态
        (root) /etc/init.d/apache 状态、/etc/init.d/apache 停止、/etc/init.d/apache 启动
        (根) /usr/local/bin/protodump.sh httpreq
        (根) /usr/sbin/xm 控制台
    $
    

    如果不让用户 sudo-exec su/bash 或其他 shell 既不直接 (sudo su) 也不间接(让编辑器以 root 生成,这可用于生成 shell - 在本例中为 root),sudo 是一个朋友系统管理员和用户。

    回到主题中的问题,如果 sudo 被禁用并且 su 是在系统上成为 root 的唯一方法,人们会植入一个假的 su 命令(例如在 ~/.../fakesu 中)和一个别名,如 alias su=' ~/.../fakesu' 在用户登录 shell 的 rc 文件中。

    在这种情况下,一个简单的 su 命令(举手,使用 /bin/su 进行调用)最终会调用 fakesu 命令,这可能会捕获密码。

    • 1
  5. thepocketwade
    2009-07-18T08:32:10+08:002009-07-18T08:32:10+08:00

    如果用户的密码被泄露并且该用户具有 sudo 权限,则攻击者可以运行 sudo su 并成为 root。

    • 0
  6. sucuri
    2009-07-19T05:21:11+08:002009-07-19T05:21:11+08:00

    原理很简单。Sudo 仅需要用户密码才能以 root 身份执行活动。如果有人能够闯入该用户的帐户,他可能知道密码(或者可以很容易地找出密码)。

    使用 su,情况有点不同,因为它需要 root 密码。但是,攻击者可以更改用户的 PATH 以指向其自己的 su 版本(在 tmp 或 ./bin 中),从而将 root 密码保存在某处。

    现在您添加了 sudo 已禁用。您提供的链接没有谈到这一点。他们提到了为该用户配置了 sudo 或 su 并且攻击者使用它作为获取 root 的杠杆的情况。

    • 0

相关问题

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve