shadow和passwd文件利用
第一招:可读shadow文件利用
进行枚举
root@hkYlKHuBStjmCx:~# ls -liah /etc/shadow
16522 -rw-r----- 1 root shadow 635 Dec 18 09:45 /etc/shadow
发现可读
在旧版本中,密码均存储在/etc/passwd文件中,在新版Linux的环境下,/etc/passwd中不会存储密码有关数据,只会以一个x来表示:密码以hash值的形式存储在/etc/shadow文件中
/etc/passwd首行
root:x:0:0:root:/root:/usr/bin/zsh
/etc/passwd文件的密码hash存储样式
root:$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz/0:20440:0:99999:7:::
可以直接把我们想看的用户的用户名密码什么的直接过滤出来,然后进行爆破
root@hkYlKHuBStjmCx:~# cat /etc/shadow | grep ':\$'
root:$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz/0:20440:0:99999:7:::
使用john自动识别加密类型进行爆破即可
第二招:可写shadow文件利用
枚举发现可写,由于我们要对shadow文件进行操作,此处需要进行一个备份
cp /etc/shadow /tmp/shadow.bak
读取密码hash值,使用hash-identifier识别hash加密的类型
hash-identifier "$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz."
然后使用mkpasswd来生成对应加密类型的hash值
mkpasswd -m sha-512 KwanshAndTwansh
然后替换到shadow文件中,即可登录root
第三招:可写passwd文件利用提权
枚举发现passwd可写
备份passwd文件
cp /etc/passwd /tmp/passwd.bak
openssl生成新的密码hash
openssl passwd KwansgAndTwansh
然后编辑,用生成的hash换掉passwd中的占位符x,即可登录root
sudo环境变量提权
这个很经典了
sudo -l
有的命令有读取任意文件或者提权的洞,可以通过提权全书查看
提权全书
或者说利用预加载LD_PRELOAD(这个我还没学明白)
自动任务文件权限提权
检查自动任务
crontab -l
cat /etc/crontab
检查确定定时执行的文件的权限,若是可写,那就很nice了,可以直接写入一些指令弹shell
若定时任务为root权限执行的,弹回来的shell就是root的权限检查crontab中的PATH路径,若不是绝对路径,那么可以试试直接路径劫持
PATH=/home/user:/usr/local/sbin
然后本来可以写入的定时文件shell.sh是在/usr/local/sbin目录下,但是呢,定时任务执行的是没有绝对路径的shell.sh
根据定时任务中,会优先找PATH路径中靠前的路径的文件来执行,所以是自动将path中的路径都查找一下,找到了shell.sh就立刻执行,那么我们可以在家目录下写入shell.sh,那么就可以劫持路径