说说 PAM 软连接提权 / 后门原理

一、PAM 软连接提权的核心原理

PAM 软连接提权攻击并非针对 PAM 框架本身的漏洞,而是针对某个依赖 PAM 进行认证或配置的以高权限运行的服务或程序

1. 提权攻击的三个关键要素

要素 描述
高权限写入操作 存在一个以 Root 或其他高权限用户 身份运行的服务或程序,它会在特定时刻对某个文件执行 写入创建修改 操作
可预测或可控制的文件路径 这个高权限程序操作的文件路径是 可预测的,或者攻击者可以 控制 该程序操作的路径(例如,写入一个日志文件或临时文件)
软连接(Symlink) 攻击者在程序操作之前,用一个 软连接 替换掉预期的目标文件。这个软连接指向攻击者希望修改的 敏感系统文件(如 /etc/passwd/etc/shadow 或 PAM 配置文件本身)

2. PAM 相关的攻击流程

PAM 相关的软连接提权通常发生在以下场景:

  1. 低权限用户发现一个高权限程序(例如,一个系统服务、一个设置工具,甚至某些 sudo 配置允许的命令)在运行时,会以 高权限身份在某个可预测的路径下创建一个临时文件日志文件

  2. 攻击者通过以下步骤发起攻击:

    • 步骤 1:删除/准备:确保目标临时文件(例如 /var/tmp/service.log)不存在,或者可以被低权限用户删除

    • 步骤 2:创建软连接:在临时文件的位置,创建一个软连接,将其指向受保护的敏感文件,例如 /etc/passwd/etc/shadow

      # 假设高权限程序会写入 /tmp/privileged_log.txt
      ln -sf /etc/shadow /tmp/privileged_log.txt
      
    • 步骤 3:触发高权限操作:攻击者触发那个高权限程序运行

    • 步骤 4:欺骗成功:高权限程序启动后,尝试以Root 权限写入 /tmp/privileged_log.txt。但由于软连接的存在,程序实际上将数据写入了/etc/shadow(或 /etc/passwd

  3. 最终结果:攻击者成功地以 Root 权限修改了敏感系统文件,例如在 /etc/shadow 中插入了一个新的、拥有 Root 权限的账户或修改了现有账户的密码哈希,从而实现提权

二、PAM 软连接后门原理

PAM 软连接提权是利用文件操作的缺陷;而 PAM 后门则更直接地针对PAM 的配置和模块加载机制

PAM 的灵活性允许系统管理员通过修改/etc/pam.d/目录下的配置文件,来控制每个应用程序(如 sshdloginsudo)如何进行认证、账户管理、会话启动等

PAM 后门的核心原理就是:修改 PAM 配置文件,或将恶意 PAM 模块植入到配置中

1. 恶意 PAM 模块植入

这是最常见的 PAM 后门方式,一旦成功,任何经过被修改的 PAM 服务的认证都将被记录或绕过

  1. 编写恶意模块:攻击者编写一个恶意的 PAM 模块(一个 .so 文件,例如 pam_evil.so

    • 该模块可以实现无密码登录(即始终返回 PAM_SUCCESS
    • 或实现凭证记录(将输入的用户名和密码记录到攻击者可访问的文件中)
  2. 植入配置:如果攻击者已经以某种方式获得了 Root 权限(例如通过前面提到的软连接提权),他们会修改目标服务的 PAM 配置文件(例如 /etc/pam.d/sshd):

    # /etc/pam.d/sshd 示例 (被修改后)
    auth required pam_permit.so
    # 在这里插入恶意模块
    auth sufficient /lib/security/pam_evil.so debug
    # ... 其他行
    
  3. 结果:当用户通过 SSH 登录时,PAM 框架加载 pam_evil.so。如果该模块被配置为 sufficient,它将立即返回成功,允许攻击者或任何指定用户以该模块设定的方式(例如,使用任何密码)登录系统

2. 软连接在后门中的应用

软连接提权可以作为 实现 PAM 后门前置步骤

如果攻击者发现某个高权限程序会写入一个文件,且该文件路径位于 /etc/pam.d/ 目录附近或 /lib/security/ 目录下(PAM 模块的常见存放位置),攻击者就可以利用软连接欺骗该高权限程序,将:

  • 恶意 PAM 模块(.so 文件)写入 /lib/security/ 目录
  • 或者修改 /etc/pam.d/ 下的某个服务配置文件
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-27 22:16:31

results matching ""

    No results matching ""