0%

红队笔记之Linux提权

shadow和passwd文件利用

第一招:可读shadow文件利用

进行枚举

1
2
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首行

1
root:x:0:0:root:/root:/usr/bin/zsh

/etc/passwd文件的密码hash存储样式

1
root:$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz/0:20440:0:99999:7:::

可以直接把我们想看的用户的用户名密码什么的直接过滤出来,然后进行爆破

1
2
root@hkYlKHuBStjmCx:~# cat /etc/shadow | grep ':\$'
root:$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz/0:20440:0:99999:7:::

使用john自动识别加密类型进行爆破即可

第二招:可写shadow文件利用

枚举发现可写,由于我们要对shadow文件进行操作,此处需要进行一个备份

1
cp /etc/shadow /tmp/shadow.bak

读取密码hash值,使用hash-identifier识别hash加密的类型

1
hash-identifier "$5$FajNLQa0$Z/ZMlCLIPg7C2.c74JIx11vR2JjqREGfBH0TtFqcz."

然后使用mkpasswd来生成对应加密类型的hash值

1
mkpasswd -m sha-512 KwanshAndTwansh

然后替换到shadow文件中,即可登录root

第三招:可写passwd文件利用提权

枚举发现passwd可写

备份passwd文件

1
cp /etc/passwd /tmp/passwd.bak

openssl生成新的密码hash

1
openssl passwd KwansgAndTwansh

然后编辑,用生成的hash换掉passwd中的占位符x,即可登录root

sudo环境变量提权

这个很经典了

1
sudo -l

有的命令有读取任意文件或者提权的洞,可以通过提权全书查看
提权全书

或者说利用预加载LD_PRELOAD(这个我还没学明白)

自动任务文件权限提权

检查自动任务

1
2
3
crontab -l

cat /etc/crontab
  1. 检查确定定时执行的文件的权限,若是可写,那就很nice了,可以直接写入一些指令弹shell
    若定时任务为root权限执行的,弹回来的shell就是root的权限

  2. 检查crontab中的PATH路径,若不是绝对路径,那么可以试试直接路径劫持

1
PATH=/home/user:/usr/local/sbin

然后本来可以写入的定时文件shell.sh是在/usr/local/sbin目录下,但是呢,定时任务执行的是没有绝对路径的shell.sh
根据定时任务中,会优先找PATH路径中靠前的路径的文件来执行,所以是自动将path中的路径都查找一下,找到了shell.sh就立刻执行,那么我们可以在家目录下写入shell.sh,那么就可以劫持路径