接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去。
1. 查看/etc/passwd文件信息
首先,查看 /etc/passwd 的权限,发现任何用户都可以读写。为了实验需要我们这里给其他用户加入一个可写权限
关于linux 下文件权限 ——> https://segmentfault.com/a/1190000039202476
/ect/passwd
/etc/passwd,保存了操作系统中所有用户的信息,具体的字段信息 —> /etc/passwd文件中字段解释
root:x:0:0:root:/root:/bin/bash
2. 生成密码信息
我们现在要做的就是自己构造一个用户,在密码占位符处指定密码,并且UID设置为0,将其添加到 /etc/passwd 文件中。
首先,使用perl语言(Linux自带)生成带有盐值的密码:
perl -le 'print crypt("123456","addedsalt")'
3. 假设获取了一个低权限shell
我们切换到一个普通用户,假装获取了一个低权限用户。然后执行下面这条命令,成功将test用户的信息加入 /etc/passwd 文件
echo "test:adrla7IBSfTZQ:0:0:root:/root:/bin/bash" >>/etc/passwd
查看passwd字段可知,成功加入
4. 登录新用户
以用户名:test 密码: 123456 成功进行切换,直接获取了root权限
总结
这个权限提升的前提是,/etc/passwd字段其他用户有写的权限,但是默认只有root可写,所以也是由于配置错误导致的漏洞发生。