V2更新了一些小东西
!!!NeedStar!!!Github-CTFd-docker
该版本的CTFd全部运行在docker中,并且通过映射unix在docker里面控制宿主机的docker,以管理docker动态容器。使用该项目可以在5-10min之内构建出支持动态容器的靶场。
旧的文章-【CTFd】靶场安装与配置(Docker一键配置版)
前面一段时间,想基于CTFd进行二开一下。有不少前辈给CTFd写过插件,例如赵总的Whale,H1ve的Owl,和支持AWD的glowworm。
他们写的插件各有好处,Whale支持swarm的部署,Owl支持docker-compose(暂时不支持swarm,后面可以改,不过暂时没空),glowworm是目前唯一一个AWD插件。其中Whale和Owl都以来与Frp进行流量转发,通过不断重载frpc的配置实现,但是他们两个插件并不是增量刷新,而是以直接覆盖的形式进行。于是我整合了两个插件的内容和,让他们共用一个frps模块(现在才想到为什么不能用两个呢,但是这就要两个域名了不是吗)。
然而事情不是一帆风顺的,在修改了插件的目录结构后,整个插件都不能正常初始化了,还得对他们进行依赖的修改。然后对旧版的owl插件进行一定的修改,使用了新版的docker-compose工具以支持swarm的使用。
TODO: owl插件更新swarm支持
另外作为一个安全平台,不更新到最新版本的CTFd内核总是有点不太合适,于是更新到了CTFd 3.5.2版本,也修改了不少安装流程,优化了安装体验,可以在docker-compose里面自定义域名等,也会自动生成密钥不容易被攻击。
同时也测试了很多不同系统,也用该系统在本校新生赛中构建了一个全新的靶场,体验很棒。
小记而已,暂时就这样了。
标签: Docker
【脚本】Push镜像到Dockerhub
首先你要自己制作一个Docker镜像,这个就不再赘述了,相信各位都会了
- COMMIT你的镜像,-p可选,为commit时暂停容器
docker commit <容器ID> <镜像名:版本号>
- 登录你的Dockerhub
按提示输入账号密码docker login
- 修改规范你的镜像名
规范为<注册用户名/镜像名>
可以通过tag指令修改镜像名docker tag <旧镜像名> <新镜像名>
- 推送至仓库,版本号可填latest,意思是最新的容器
docker push <镜像名:版本号>
登录Dockerhub就确认已经推送上了
如果你在windows下,且有Docker on desktop,你可以通过这样操作登录,直接push
梅开二度:记得给Docker换源,不然慢死,参考脚本如下
【脚本】Linux换源汇总
【CTFd】靶场安装与配置(Docker一键配置版)
【CTFd】靶场安装与配置这由于上一次的配置有点小问题,主要是Whale插件不再支持CTFd3.x版本,于是找了个新的插件使用
并且找到了更好的解决方式,不用那么麻烦配环境了
CTFd-Whale最新维护仓库
这次我采用Docker一键部署,并且稍加改动添加了中文包
成果图
继续阅读【CTFd】靶场安装与配置(Docker一键配置版)
【脚本】Linux换源汇总
由于换源需求过多,又不想每一次都上网查,于是有此博客记录不同系统换源过程
PS:为什么不能有一键换源脚本呢
继续阅读【脚本】Linux换源汇总
【CTFd】靶场安装与配置
CTFd是githbu上开源的ctf靶场之一,配合上whale等插件,可以快速搭建一个靶场
CTFd
以下测试环境均为Ubuntu20.04,Python3.8
CTFd官网
CTFd-Github仓库
CTFd中文汉化
由于本人更喜欢汉化风格,所以使用的均为CTFd_chinese_CN下3.4.1版本的CTFd
- 克隆CTFd代码并安装相关依赖
#如果空白环境 sudo ./prepare.sh #如果是在宝塔环境下安装(bt自带的python会产生冲突) sudo apt-get --fix-broken install #如果已经安装好python环境(建议使用3.7) sudo pip install -r requirements.txt
- 下载CTFd_chinese_CN-v3.4.1并将CTFd目录覆盖到你的项目目录
- 运行,默认运行在http://127.0.0.1:4000,你可以通过更改配置文件使其监听0.0.0.0,或者使用nginx反代,此处使用后者
#配置文件CTFd/config.ini python serve.py
【脚本】WSL数据磁盘迁移
Windows中WSL默认磁盘为C盘,这导致在安装了Docker,Kali,Ubuntu等WSL后,C盘空间不足,于是参照相应Issue有如下脚本
#以下脚本均应该在PowerShell管理员模式下运行
wsl --list -v
PS C:\Windows\system32> wsl --list -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2
kali-linux Stopped 2
#查看相应WSL
wsl --shutdown
#停止WSL
wsl --export Ubuntu F:\WSL\Ubuntu.tar
wsl --export docker-desktop F:\WSL\docker-desktop.tar
wsl --export docker-desktop-data F:\WSL\docker-desktop-data.tar
wsl --export kali-linux F:\WSL\kali-linux.tar
#导出WSL
wsl --unregister Ubuntu
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
wsl --unregister kali-linux
#删除对应WSL
wsl --import Ubuntu F:\WSL\Ubuntu F:\WSL\Ubuntu.tar --version 2
wsl --import docker-desktop F:\WSL\docker-desktop F:\WSL\docker-desktop.tar --version 2
wsl --import docker-desktop-data F:\WSL\docker-desktop-data F:\WSL\docker-desktop-data.tar --version 2
wsl --import kali-linux F:\WSL\kali-linux F:\WSL\kali-linux.tar --version 2
#在新位置重新导入
wsl -d Ubuntu exit
wsl -d docker-desktop exit
wsl -d docker-desktop-data exit
wsl -d kali-linux exit
#重新对应WSL
ubuntu config --default-user root
kali config --default-user root
#设置Ubuntu/kali默认用户
【VIPER】部署、监听、代理
前导
Viper中文炫彩蛇,为图形化的渗透平台,用户可以使用浏览器登录完成诸如(覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等大类)操作,并提供内网隧道,文件管理,命令行等常用渗透工具。
在进行内网渗透中,还有内网网络拓扑等可视化工具提高工作效率。
安装
快捷部署有Docker和F8X一键部署两种方式
下方为f8x一件部署,推荐在全新linux环境中使用
curl -o f8x https://f8x.io/ # wget -O f8x https://f8x.io/
bash f8x -viper
我所使用的时Docker安装,并在wsl(Docker on desktop)和linux(CentOS 7)系统下都进行过部署
sudo -s
yum install docker -y
yum install docker-compose -y
systemctl enable docker
service docker restart
#安装Docker并设置自启动
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker
#假如Docker权限组
export VIPER_DIR=/root/VIPER
export VIPER_PASSWORD=YOUR_PWD
#确认自己的安装目录与密码
mkdir -p $VIPER_DIR && cd $VIPER_DIR
tee docker-compose.yml <<-'EOF'
version: "3"
services:
viper:
image: registry.cn-shenzhen.aliyuncs.com/toys/viper:latest
container_name: viper-c
network_mode: "host"
restart: always
volumes:
- ${PWD}/loot:/root/.msf4/loot
- ${PWD}/db:/root/viper/Docker/db
- ${PWD}/module:/root/viper/Docker/module
- ${PWD}/log:/root/viper/Docker/log
- ${PWD}/nginxconfig:/root/viper/Docker/nginxconfig
command: ["VIPER_PASSWORD"]
EOF
sed -i "s/VIPER_PASSWORD/$VIPER_PASSWORD/g" docker-compose.yml
cd $VIPER_DIR
docker-compose config
#确认DockerFile正确
docker-compose up -d
#启动容器
在WSL中,有一点使用docker的host mode
容易端口冲突,所以docker-compose.yml
要修改成如下,并自行确认端口映射(60000一定要开以外,其他多开点)
version: "3"
services:
viper:
image: registry.cn-shenzhen.aliyuncs.com/toys/viper:latest
container_name: viper-c
restart: always
ports:
- "60000-60099:60000-60099"
volumes:
- ${PWD}/loot:/mnt/d/Docker/viper/.msf4/loot
- ${PWD}/db:/mnt/d/Docker/viper/db
- ${PWD}/module:/mnt/d/Docker/viper/module
- ${PWD}/log:/mnt/d/Docker/viper/log
- ${PWD}/nginxconfig:/mnt/d/Docker/viper/nginxconfig
command: ["VIPER_PASSWORD"]
之后访问https://YourDomain:60000
用root
账户和你的密码,登录Viper