菜鸟科技网

Linux提权命令有哪些常用技巧?

在Linux系统中,提权是指从普通用户权限提升至更高权限(如root权限)的过程,通常用于系统管理或安全测试,合法的提权操作需要明确授权,以下将介绍常见的Linux提权命令及相关方法,涵盖基础命令、sudo配置、内核漏洞利用等场景,并总结安全注意事项。

Linux提权命令有哪些常用技巧?-图1
(图片来源网络,侵删)

基础提权命令

  1. sudo命令
    sudo是Linux中最常用的提权工具,允许普通用户以超级用户或其他用户身份执行命令,使用时需在sudoers文件中配置用户权限,格式为用户名 主机名=(目标用户) 命令

    • sudo -i:切换至root用户环境,加载root的配置文件(如.bashrc)。
    • sudo su -:同样切换至root用户,但需输入root密码(若用户有sudo权限)。
    • sudo ls /root:仅以root权限执行ls命令,查看root目录内容。

    sudoers配置示例(通过visudo编辑):

    user1 ALL=(ALL:ALL) ALL  # 允许user1在任何主机上以任何身份执行任何命令
    user2 ALL=/bin/ls,/bin/cat  # 限制user2仅能执行ls和cat命令
  2. su命令
    su(switch user)用于切换用户,默认切换至root,需输入root密码,若当前用户已在wheel组(或sudo组),可通过su -直接切换,但部分系统需配置/etc/pam.d/su中的wheel组权限。

环境变量与路径提权

若环境变量(如$PATH)或命令路径配置不当,可能导致提权风险。

Linux提权命令有哪些常用技巧?-图2
(图片来源网络,侵删)
  • PATH劫持:若$PATH中包含当前用户可写的目录,且该目录存在同名命令(如ls),执行sudo ls时可能优先调用恶意脚本。
  • Cron提权:若root通过cron执行包含用户可写目录的命令(如* * * * * /usr/bin/find /home/user -name "*.txt" -exec grep "password" {} \;),用户可在/home/user下创建恶意find脚本,实现提权。

内核漏洞与SUID提权

  1. SUID提权
    SUID(Set User ID)权限允许用户以文件所有者的身份执行程序,若可执行文件设置了SUID位且属于root(如/usr/bin/passwd),普通用户执行时将获得root权限,可通过以下命令查找具有SUID权限的文件:

    find / -perm -4000 -type f -exec ls -la {} \;

    若发现/usr/bin/vim具有SUID权限,可通过vim /etc/shadow读取root敏感文件。

  2. 内核漏洞利用
    若内核存在未修复的漏洞(如Dirty COW、CVE-2021-4034等),可通过漏洞利用脚本获取root权限,利用Dirty COW漏洞(CVE-2016-5195)的命令示例(需在受影响系统上执行):

    gcc -pthread dirty.c -o dirty && ./dirty

    注意:内核漏洞利用可能破坏系统稳定性,仅建议在授权测试中使用。

    Linux提权命令有哪些常用技巧?-图3
    (图片来源网络,侵删)

配置错误与自动化工具提权

  1. 配置错误

    • SSH密钥提权:若root用户的SSH公钥被写入/root/.ssh/authorized_keys,且普通用户可修改该文件,可通过SSH直接登录root账户。
    • 服务配置不当:若某些服务(如Docker、MySQL)以root权限运行,且普通用户可控制服务进程,可通过服务漏洞提权(如docker run -v /:/host -it ubuntu chroot /host)。
  2. 自动化提权工具
    工具如LinPEAS(Linux Privilege Escalation Awesome Script)、Linux Exploit Suggester可自动扫描系统中的提权路径,包括SUID文件、内核漏洞、配置错误等,使用示例:

    wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
    chmod +x linpeas.sh && ./linpeas.sh

安全注意事项

  1. 最小权限原则:避免为普通用户配置过于宽松的sudoers权限,仅授予必要的命令执行权。
  2. 定期更新系统:及时修复内核漏洞和服务配置问题,降低利用风险。
  3. 审计日志:启用sudo日志记录(通过/etc/sudoers中的Defaults logfile=/var/log/sudo.log),监控异常提权操作。

相关问答FAQs

Q1: 如何判断当前用户是否具有sudo权限?
A1: 可通过以下方式判断:

  • 执行sudo -l查看当前用户的sudo权限列表,若提示user1 is not allowed to run sudo on localhost,则无权限。
  • 检查用户是否在sudo组(grep sudo /etc/group)或wheel组(grep wheel /etc/group)。

Q2: 忘记root密码时,如何通过普通用户重置?
A2: 若普通用户具有sudo权限,可通过以下步骤重置:

  1. 使用sudo passwd root命令直接修改root密码,按提示输入新密码两次。
  2. 若无sudo权限,可通过重启进入单用户模式(GRUB菜单编辑启动参数,添加singleinit=/bin/bash),挂载根文件系统为读写模式(mount -o remount,rw /),然后修改/etc/shadow中root密码字段为空(root::...),重启后无需密码登录root。
分享:
扫描分享到社交APP
上一篇
下一篇