Linux 权限提升基础:SUID、sudo、计划任务与敏感文件
一、前言
在渗透测试中,拿到 WebShell 或普通用户 SSH 权限并不代表结束。很多真实场景中,初始权限往往只是低权限用户,后续还需要通过本机信息收集、错误配置、敏感文件、计划任务或 SUID 程序完成权限提升。
本文总结 Linux 提权的基础排查流程,适用于本地靶场、VulnHub、HTB、CTF 和授权测试环境。
二、提权前的基本信息收集
拿到 shell 后,先确认当前权限和系统环境。
1 | whoami |
查看当前用户能访问哪些目录:
1 | ls -la |
查看网络连接和进程:
1 | ss -antp |
这些信息能帮助判断当前用户、系统版本、服务进程和可能的横向移动入口。
三、sudo 权限检查
首先检查当前用户是否拥有 sudo 权限:
1 | sudo -l |
如果出现类似:
1 | (root) NOPASSWD: /bin/bash |
说明当前用户可以免密以 root 权限执行 /bin/bash:
1 | sudo /bin/bash |
如果是其他程序,也要判断是否能逃逸到 shell。例如:
1 | vim |
可以结合 GTFOBins 查询对应提权方式。
风险原因:
- sudo 配置过宽。
- 普通用户可执行高危命令。
- 配置了
NOPASSWD。
修复建议:
- 使用
visudo收敛权限。 - 只允许执行业务必须命令。
- 避免允许普通用户执行 shell、编辑器、解释器。
- 对 sudo 操作做日志审计。
四、SUID 程序排查
SUID 程序会以文件所有者权限运行。如果某个可利用程序拥有 SUID root 权限,就可能被用来提权。
查找 SUID 文件:
1 | find / -perm -u=s -type f 2>/dev/null |
常见需要重点关注的程序:
1 | /usr/bin/find |
如果发现异常 SUID 程序,可以先查看权限:
1 | ls -l /path/to/file |
示例:
1 | -rwsr-xr-x 1 root root 123456 /usr/bin/find |
其中 s 表示设置了 SUID。
风险原因:
- 管理员误给普通程序加 SUID。
- 第三方软件安装后权限配置不当。
- 攻击者留下 SUID 后门。
修复建议:
1 | chmod u-s /path/to/suspicious_file |
同时定期基线检查 SUID 文件变化。
五、计划任务提权
计划任务是 Linux 提权中常见入口。如果 root 定时执行某个脚本,而普通用户可写这个脚本,就可以修改脚本内容,等待 root 触发。
查看系统计划任务:
1 | cat /etc/crontab |
查看当前用户计划任务:
1 | crontab -l |
重点关注:
- root 定时执行的脚本。
- 脚本路径位于
/tmp、/var/www、用户目录。 - 脚本或目录当前用户可写。
检查权限:
1 | ls -l /path/to/script.sh |
风险原因:
- root 计划任务执行了低权限用户可写文件。
- 计划任务脚本所在目录权限过宽。
- 使用相对路径导致 PATH 劫持。
修复建议:
- root 计划任务脚本归属 root。
- 文件权限设置为
700或755。 - 避免执行
/tmp等不可信目录下的脚本。 - 计划任务中使用绝对路径。
六、敏感文件排查
1. 配置文件中的账号密码
Web 项目和数据库配置文件经常保存明文凭据。
1 | grep -RniE "password|passwd|pwd|user|username|db_|secret|key" /var/www 2>/dev/null |
常见文件:
1 | .env |
如果拿到数据库密码,可以尝试:
- 登录数据库读取敏感信息。
- 查看是否复用为系统用户密码。
- 找到后台账号密码。
2. SSH 私钥
1 | find / -name "id_rsa" -o -name "id_dsa" 2>/dev/null |
如果发现私钥,需要检查权限和可登录用户:
1 | ls -l id_rsa |
使用私钥登录:
1 | chmod 600 id_rsa |
3. history 文件
1 | cat ~/.bash_history |
history 中可能出现:
- 数据库连接命令。
- 明文密码。
- 上传脚本。
- 管理员操作记录。
七、可写目录和可写文件
查找全局可写目录:
1 | find / -writable -type d 2>/dev/null |
查找 777 权限文件:
1 | find / -perm 0777 -type f 2>/dev/null |
重点关注:
- root 定时任务会执行的文件是否可写。
- 服务启动脚本是否可写。
- Web 目录中是否可以写入脚本。
- PATH 中是否存在可写目录。
八、内核漏洞提权
查看系统版本:
1 | uname -a |
如果系统版本较老,可以搜索是否存在公开本地提权漏洞。
注意事项:
- 内核提权风险较高,可能导致系统崩溃。
- 授权测试中应先确认是否允许使用 Exploit。
- 优先尝试配置错误类提权。
九、自动化辅助工具
常见 Linux 提权辅助脚本:
1 | linpeas.sh |
使用方式:
1 | chmod +x linpeas.sh |
自动化工具适合快速发现线索,但不要完全依赖工具。面试或报告中要能解释每个发现为什么有风险。
十、提权思路总结
Linux 提权可以按这个顺序排查:
1 | 当前用户信息 |
红队面试时,如果能把这套流程说清楚,再结合一两个靶场案例,面试官会更容易判断你不是只会跑工具,而是真的理解提权思路。
十一、防护建议
- 最小权限原则配置用户权限。
- 定期检查 sudo 配置。
- 定期基线扫描 SUID 文件。
- root 计划任务脚本不可被普通用户写入。
- 配置文件中避免明文密码。
- SSH 私钥设置严格权限。
- 删除无用账号和历史敏感命令。
- 及时更新系统补丁。
十二、总结
Linux 提权的本质是从低权限用户出发,寻找系统中的权限边界错误。常见入口包括 sudo 配置、SUID 文件、计划任务、敏感凭据和可写路径。
对红队方向来说,提权能力非常重要。因为真实渗透中,初始入口往往只是一个普通 shell,能否继续扩大战果,很大程度取决于本机枚举和提权思路是否扎实。