前言:上次docker部署环境还是在一年前自己搭建vulhub,忘得其实也差不多了,正好趁这次机会复习一下。个人感觉这种形式下的环境搭建+对抗很不错,比较推荐那个攻击队选手账号上的金融环境下的内网渗透,很符合实战环境。而且平时自己搭建那么大内网自己电脑性能有点吃不消。
言归正传首先先使用平台提供的Atrust连接到vpn。
攻防平台是自带VNC桌面连接的,但是我感觉不太方便,因为不能拖拽文件和复制粘贴命令,所以可以使用ssh连接工具进行远程连接部署。管理地址呢是使用路由器所在网段加上主机IP地址的最后一位,比如我上面所在网段是10.23.73.1/24,加上我靶机A最后一位地址101。即地址为10.23.73.101
环境部署是要使用docker部署,两台靶机均无法ping通外网,比赛是选手通过自己电脑拨VPN访问靶机A,来模拟外网环境,靶机B呢只与A互通。于是可以在自己带有docker环境的虚拟机里拉去镜像,在本地调试好之后进行导出,然后导入到靶机环境启动。
这里给大家提下我靶机A的大概设计思路:因为本人实在比较懒,不想去手搓装PHP+数据库+中间件服务。于是想到可以使用宝塔面板等进行部署。省时省力。但是面临了一个问题:使用过宝塔面板的朋友都知道,新版宝塔进入后需要登录宝塔账号密码才能继续使用,但是靶机又是不通网的。最后是通过安装一个老版本宝塔即可。关闭自动更新。然后有了宝塔面板,其他的可以说就是傻瓜式部署了。
开搞,我是docker pull 拉去了一个centos镜像然后自己手工安装宝塔面板,干了一半突然想到,我为啥不直接拉个别人在docker里搭建好的嘞?
大家找一个适合自己的镜像即可,我这里随便找了一个,在算是复盘吧,当时我没截图。docker images 可以看到在本地拉好了。
1docker run -itd -p 80:80 -p 888:888 -p 8888:8888 --restart=always --name bt_panel_nginx writeup/bt_panel_nginx /bin/bash
启动镜像,并将80、888、8888端口映射出来(80为网站端口,8888为宝塔面板的管理端口)--restart=always 重启后进行自启动
搞定,下面我们登进这个环境查看账号密码管理地址就OK了。
1docker exec -it 71d /bin/bash
OK,登进来之后进行傻瓜式部署就OK了
部署完毕后,本地测试无误后,进行导出。docker export 镜像id -o 文件名
导出后通过ssh管理工具上传到靶机中即可。使用 docker import A.tar导入即可,导入完毕后,本地镜像就多出来了。然后在进行启动即可。
网站正常启动,部署完毕。设计的靶机A的大概攻击流程为通过网站WEB漏洞拿到机器的www权限,在通过某漏洞拿到docker主机的root权限即可。(如果到时候攻克的师傅少可以考虑分享下wp)其实还可以在docker启动时加一个特权模式启动,让选手再来次docker逃逸。hahaha 当时没想起来,就算了。其实拿到www权限后就不影响搭隧道打B了,只是能力强的师傅可以继续搞搞
最后其实还有两个小坑,第一个是靶机B只与A互通,而且B只映射出了8000-8004,也就是说你要启动web服务,端口必须在这个范围内。还一个是如果涉及到反弹shell操作可能比较复杂,首先直接反弹shell,只能反弹A的到本机,本机要装个NC。反弹B的话不出网B的是不是可以通过把端口映射到A上搞???如果两个都是windows就好搞了,CS上线A,然后来个转发上线。。。