CTF靶场集合大放送
针对github上面的靶场进行调研
先说一些个人觉得比较好的
CTFd
CTF平台的鼻祖网站
项目地址:https://github.com/CTFd/CTFd
建CTF平台首选,实际上也没有太多别的选择orz
CTFd是一款基于Apache2.0协议的开源CTF平台,最新版本目前为3.5.1。该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的功能。
CTFD docker搭建
docker方式一般都不会遇到啥问题,这里就跳过了
CTFD源码搭建
在本地进行搭建方便调试
我本地的python环境是3.8.10,下载CTFD版本为3.5.1当前最新版
下载项目代码
设置一下虚拟环境防止项目包混乱
terminal打开虚拟环境,安装库文件
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
安装进行中
安装完成后执行 python server.py
突然的一个问题
运行的时候显示
* Importing gevent and monkey patching. Use --disable-gevent to disable.
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running stamp_revision -> 46a278193a94
* Loaded module, <module 'CTFd.plugins.challenges' from 'C:\Users\Cl0udG0d\Desktop\temp\CTFd-3.5.1\CTFd-3.5.1\CTFd\plugins\challenges\init.py'>
* Loaded module, <module 'CTFd.plugins.dynamic_challenges' from 'C:\Users\Cl0udG0d\Desktop\temp\CTFd-3.5.1\CTFd-3.5.1\CTFd\plugins\dynamic_challenges\init.py'>
* Loaded module, <module 'CTFd.plugins.flags' from 'C:\Users\Cl0udG0d\Desktop\temp\CTFd-3.5.1\CTFd-3.5.1\CTFd\plugins\flags\init.py'>
* Serving Flask app "CTFd" (lazy loading)
* Environment: development
* Debug mode: on
INFO [werkzeug] * Restarting with stat
然后服务一直没有起来
试了一下还是不行
python serve.py --disable-gevent
查一下 https://github.com/CTFd/CTFd/issues/1855
采用flask run的方式启动
现在能够正常访问了
目录结构
CTFd
├──conf 配置文件,这里面是nginx的配置
├──CTFd 网站主要源码
├──migrations flask数据库迁移文件
├──scripts docker安装相关的脚本,具体的操作后面进行分析
└──tests 测试代码
这部分见名知意了
├──CTFd 网站主要源码
│ ├── admin 管理后台页面路由
│ ├── api 信息查询api接口/api/v1/???
│ ├── cache 清理缓存相关
│ ├── constants 一些常量
│ ├── events 事件实时通知接口(长链接)
│ ├── exceptions 定义错误类型
│ ├── forms 对表单数据进行获取和过滤
│ ├── logs 分类日志文件
│ ├── models 数据库model
│ ├── plugins 插件目录
│ ├── schemas 模式,对数据库数据传入规范化
│ ├── themes 主题,网页文件
│ ├── uploads 默认文件上传目录
│ ├── utils 工具类
└──
该目录下的其他的文件是路由文件,在__init__.py
里面可以看到注册蓝图
app.register_blueprint(views)
app.register_blueprint(teams)
app.register_blueprint(users)
app.register_blueprint(challenges)
app.register_blueprint(scoreboard)
app.register_blueprint(auth)
app.register_blueprint(api)
app.register_blueprint(events)
app.register_blueprint(admin)
H1ve
https://github.com/D0g3-Lab/H1ve
H1ve是一款自研CTF平台,同时具备解题、攻防对抗模式。其中,解题赛部分对Web和Pwn题型,支持独立题目容器及动态Flag防作弊。攻防对抗赛部分支持AWD一键部署,并配备炫酷地可视化战况界面。
道格战队出品,docker一键安装
vulfocus
https://github.com/fofapro/vulfocus
虽然但是,vulfocus有这样的一行话
漏洞靶场是目前每个安全人员以及想学习信息安全的人必备的东西,但目前商业化产品居多,还有一些类似 dvwa、 sqli-labs 这类的开源项目,但是漏洞环境比较固定,使用完一次后就失去其作用。搭建的成本过高,每次启动的流程会比较繁琐,甚至很多场景是不满足的,之前关于漏洞环境镜像使用多的是 vulhub,但是作为企业、高校等以及相关的培训,单纯的漏洞环境不一定能满足使用的需求,所以我们基于当下的一些靶场项目做出了小小的改进来符合我们的一些需求,比如增加 flag 的形式,来满足一些考核与验证的需求,可以对我们内部人员能力进行考核,于是 Vulfocus 就诞生了。
如上介绍的这些项目,大部分都是跟DVWA类似,可能使用完一次之后就失去了作用,而且启动的流程比较繁琐,虽然有的配套了docker环境,但还是缺乏扩展性
想要靶场保持生命力,除了有高质量的题目外,靶场还需要有良好的扩展性
靶场的框架很容易就能够搭建,但里面的用例和靶场环境需要通过有生命力的社区来定期长时间更新
关于vulfocus的搭建.....(下篇说
vulhub
https://github.com/vulhub/vulhub
vulhub,不多说了
ElectricRat
新出的电气鼠靶场
https://github.com/linjiananallnt/ElectricRat
vulstudy
https://github.com/c0ny1/vulstudy
粘合剂项目
同时运行所有平台
cd vulstudy
docker-compose up -d #启动容器
docker-compose stop #停止容器
单独运行某一平台
cd vulstudy/XSSed
docker-compose up -d #启动容器
docker-compose stop #停止容器
都是通过docker-compose.yml文件来进行控制,把不同靶场的80端口映射出去
DVWA
https://github.com/digininja/DVWA
WEB安全的应该没有不知道这个靶场的吧
可能有先入为主的原因,我个人觉得这种界面还挺好的,但是这个是综合类的靶场
sqli-labs
https://github.com/Audi-1/sqli-labs
SQL注入的王牌靶场
安装步骤是:
- 修改配置文件的数据库账号密码
- 在网页上点击
Setup/reset Database
初始化数据库 - 进行对应关卡的挑战即可
upload-labs
不得不说c0ny1师傅做的靶场很优雅捏
https://github.com/c0ny1/upload-labs
不足的地方在于这种界面和模式对于文件上传比较合适,因为文件上传的每个界面都差不多,只需要有一个文件上传的按钮即可。但是对于安全开发的靶场来说每个题目的环境可能都是不一样的,所以相关的界面定制化比较多
显示源码和查看提示功能可以参考
pikachu
https://github.com/zhuifengshaonianhanlu/pikachu
综合类靶场
PHP训练靶场
https://github.com/admin360bug/PHP
蒽...这界面,直接下一个吧
SecExample
https://github.com/tangxiaofeng7/SecExample
JAVA 漏洞靶场,界面略粗糙
Vub_ENV
https://github.com/yaofeifly/Vub_ENV
跟踪真实漏洞相关靶场环境搭建
看到这个项目就很快会想到vulhub,虽然跟踪真实漏洞环境搭建很有意义,但是在vulhub的漏洞环境数量面前就拼不过了,所以需要做出差异性才可以。
我们的差异性在于每一个漏洞环境都能够锻炼靶场联系者的脚本编写能力,并且靶场要么来自真实漏洞挖掘经历,要么就是平时渗透、安全开发过程中经常遇到的情况
WebBug
https://github.com/mysticbinary/WebBug
综合类靶场,感觉没有什么特色
sstilabs
https://github.com/X3NNY/sstilabs
SSTI专门的靶场
xss-demo
https://github.com/haozi/xss-demo
界面还挺有趣的
xxe-lab
https://github.com/c0ny1/xxe-lab
XXE专用靶场
VulnRange
https://github.com/wgpsec/VulnRange
粗糙版vulfocus
FoxTown
https://github.com/smallfox233/FoxTown
狐狸小镇
RootTheBox
从雪殇的博客看到的 - http://www.snowywar.top/?p=2711
项目链接:https://github.com/moloch--/RootTheBox
界面很炫酷,我直接复制雪殇的结论吧
优点:功能多,平台有趣,自带中文,玩法多,搭建速度块,内置多种玩法,可以二次开发
缺点:功能繁琐,分类不明确,归类困难,不适合搭建训练靶场,不能在题目上直接上传附件(痛点)
评价:那这个靶场用作内部训练过一段时间,除了分类困难,其他都挺好用的,内置翻译准确的中文就可以吊打众多靶场了,用作比赛平台还是非常不错的选择,同时还内置了cyberchif,非常的给力。
Sieberrsec CTF
项目地址 https://github.com/IRS-Cybersec/ctf_platform
使用 ReactJS 和 NodeJS 编写,界面好二次元
不过我没有NodeJS的编写经验,如果要魔改起来比较费劲
参考链接
总结
后续的主要关注点会在 vulfocus 和 RootTheBox 上
END
建了一个微信的安全交流群,欢迎添加我微信备注进群
,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 😃