nux 提权可通过漏洞利用、配置错误查找、权限提升漏洞攻击等方式,但非法提
使用sudo
命令
sudo
是Linux中最常用的提权工具,允许普通用户以超级用户权限执行特定命令。
配置sudo
权限
-
编辑
/etc/sudoers
文件:- 使用
visudo
命令编辑该文件,避免直接使用vim
或nano
,因为visudo
会检查语法错误。 - 添加用户权限,
your_username ALL=(ALL) NOPASSWD: ALL
这表示用户
your_username
可以无需密码执行所有命令。
- 使用
-
使用
sudo
提权:- 在命令前加上
sudo
,sudo apt update
- 如果用户没有配置免密权限,系统会提示输入当前用户的密码。
- 在命令前加上
优点:
- 灵活性高,可细粒度控制用户权限。
- 日志记录详细,便于审计。
缺点:
- 需要预先配置
sudoers
文件。 - 依赖
sudo
服务是否启用。
切换到root
用户
如果知道root
用户的密码,可以直接切换到root
用户。
操作步骤:
- 使用
su
命令:su -
- 输入
root
用户的密码,成功登录后,终端提示符会变为,表示当前为root
用户。
优点:
- 简单直接,适合临时需要
root
权限的场景。
缺点:
root
密码泄露风险较高。- 长期以
root
身份操作可能误删重要文件。
修改/etc/passwd
文件
通过修改/etc/passwd
文件,可以将普通用户添加到root
组,从而获得root
权限。
操作步骤:
- 使用
sudo
或root
权限打开/etc/passwd
文件:sudo vi /etc/passwd
- 找到目标用户行,修改
/bin/bash
为/bin/su -
,your_username:x:0:0:Your Name:/home/your_username:/bin/su -
- 保存并退出,重新登录后,用户将自动获得
root
权限。
优点:
- 无需输入密码即可提权。
缺点:
- 安全性极低,容易被滥用。
- 系统日志会记录修改痕迹。
利用SUID
位提权
SUID
(Set User ID)位允许普通用户以文件所有者的权限执行程序。
操作步骤:
- 查找具有
SUID
位的文件:find / -perm /4000 2>/dev/null
/bin/ping
通常具有SUID
位,可以通过以下命令提权:sudo ping -c 1 1.1.1.1
如果配置不当,可能会触发提权漏洞。
优点:
- 某些程序可以利用
SUID
位提权。
缺点:
- 现代系统对
SUID
位文件管理严格,漏洞较少。 - 需要特定条件才能利用。
内核漏洞提权
某些Linux内核版本存在漏洞,可以被攻击者利用来提权。
常见漏洞:
- Dirty COW:通过覆盖内存中的文件指针来提权。
- CVE-2021-4034:内核权限绕过漏洞。
操作步骤:
- 查找系统内核版本:
uname -r
- 搜索对应版本的漏洞利用脚本或工具。
- 执行漏洞利用代码,
sudo ./exploit_script
优点:
- 如果漏洞未修复,可以快速提权。
缺点:
- 依赖特定内核版本和漏洞。
- 系统更新后漏洞可能被修复。
利用定时任务(Cron Job)
通过篡改定时任务,可以执行恶意代码并提权。
操作步骤:
- 编辑
root
用户的定时任务:sudo crontab -e
- 添加恶意任务,
* * * * * /bin/bash -c "sudo -i"
- 等待任务触发,系统会尝试以
root
权限执行命令。
优点:
- 隐蔽性强,难以被发现。
缺点:
- 需要
root
权限编辑定时任务。 - 现代系统可能限制
crontab
的访问。
利用capsh
或setuid
程序
通过capsh
或具有SUID
位的程序,可以临时提升权限。
操作步骤:
- 安装
capsh
:sudo apt install capsh
- 使用
capsh
提升权限:sudo capsh --cap-add=CAP_SYS_MODIFY --c "whoami"
- 输出结果为
root
,表示权限已提升。
优点:
- 无需修改系统文件。
- 临时提升权限,风险较低。
缺点:
- 需要预先安装相关工具。
- 部分系统可能限制
capsh
的使用。
利用docker
或containerd
提权
如果系统运行了Docker或容器服务,可以通过容器提权。
操作步骤:
- 运行一个具有
--privileged
标志的容器:sudo docker run -it --privileged ubuntu /bin/bash
- 在容器内执行提权操作,
curl http://localhost:2375/containers/json | grep your_container_id
- 利用容器内的权限执行命令。
优点:
- 容器环境隔离,风险可控。
- 适合测试或开发场景。
缺点:
- 需要Docker服务启用且未做安全限制。
- 生产环境中通常禁用
--privileged
标志。
利用rkhunter
或chkrootkit
检测漏洞
通过安全工具检测系统漏洞,间接实现提权。
操作步骤:
- 安装
rkhunter
:sudo apt install rkhunter
- 扫描系统:
sudo rkhunter --check
- 根据扫描结果修复漏洞,
sudo apt update && sudo apt upgrade
- 修复后,利用漏洞提权。
优点:
- 合法合规,适合安全审计。
- 提升系统安全性。
缺点:
- 需要管理员权限执行。
- 提权过程依赖于漏洞修复。
利用Polkit
或LD_PRELOAD
提权
通过环境变量或策略工具提权。
操作步骤:
- 使用
LD_PRELOAD
加载恶意库:export LD_PRELOAD=/path/to/malicious_lib.so
- 执行命令,恶意库会劫持系统调用,提升权限。
- 或者使用
Polkit
修改授权策略:sudo polkit-agent --disable-authority --yes --quiet --allow-interaction=none /bin/bash -c "sudo -i"
优点:
- 隐蔽性强,难以被检测。
- 适合高级攻击场景。
缺点:
- 需要深入系统机制知识。
- 现代系统可能限制相关功能。
提权方法小编总结对比表
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
sudo |
灵活、安全、可审计 | 需要预先配置 | 日常运维 |
su 切换root |
简单直接 | 密码泄露风险高 | 临时需要root 权限 |
修改/etc/passwd |
无需密码 | 安全性低、易被审计 | 低安全环境 |
SUID 位 |
特定程序可用 | 漏洞少、依赖条件多 | 老旧系统或特定程序 |
内核漏洞 | 快速提权 | 依赖漏洞、系统更新后失效 | 未修复漏洞的系统 |
定时任务 | 隐蔽性强 | 需要root 权限编辑 |
长期潜伏 |
capsh |
临时提权、风险低 | 需要安装工具 | 测试或开发环境 |
docker |
隔离性好、风险可控 | 依赖Docker服务 | 容器化环境 |
rkhunter |
合法合规、提升安全性 | 需要管理员权限 | 安全审计 |
Polkit /LD_PRELOAD |
隐蔽性强、适合高级攻击 | 需要深入系统知识 | 高级攻击或渗透测试 |
FAQs
问题1:如何安全地使用sudo
提权?
解答:
- 仅授予必要用户的
sudo
权限,避免全局开放。 - 使用
visudo
编辑/etc/sudoers
文件,确保语法正确。 - 配置日志审计,定期检查
/var/log/sudo.log
文件。 - 避免使用免密配置,除非在可信环境中。
问题2:如果系统没有sudo
,如何提权?
解答:
- 尝试切换到
root
用户(如果知道密码)。 - 查找具有
SUID
位的文件,利用其提权。 - 如果存在内核漏洞,可以尝试利用漏洞提权。
- 如果系统运行了Docker,可以尝试通过容器提权。
以上内容就是解答有关linux如何进行提权的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10519.html