关于VAmPI
VAmPI是一个包含了OWASP Top10漏洞的REST API安全学习平台,该平台基于Flask开发,该工具的主要目的是通过一个易受攻击的API来评估针对API安全检测工具的有效性,并帮助广大研究人员学习和了解API安全。
功能介绍
1、基于OWASP Top10漏洞专门设计的REST API;
2、包含了OpenAPI3规范和Postman Collection;
3、提供了全局开关,可以控制环境漏洞是否启用;
4、基于令牌的身份验证(就可以在app.py中进行调整);
工作机制
在VAmPI中,未注册的用户可以看到API中包含的虚拟用户的最少信息。 用户可以注册,然后使用登录期间收到的令牌登录以发布一本书。对于一本发布的书,接受的数据是书名和该书的机密信息。每本书对每个用户都是唯一的,只有书的所有者才可以查看该机密信息。
下面给出的是该工具所包含的全部操作及说明:
操作 | 路径 | 描述 |
GET | /createdb | 使用虚拟数据创建并填充数据库 |
GET | / | VAmPI首页 |
GET | /users/v1 | 显示所有用户的基本信息 |
GET | /users/v1/_debug | 显示所有用户的所有详细信息 |
POST | /users/v1/register | 注册新用户 |
POST | /users/v1/login | 登录VAmPI |
GET | /users/v1/{username} | 按用户名显示用户 |
DELETE | /users/v1/{username} | 按用户名删除用户(仅限管理员) |
PUT | /users/v1/{username}/email | 更新单个用户电子邮件 |
PUT | /users/v1/{username}/password | 更新用户密码 |
GET | /books/v1 | 检索所有书籍 |
POST | /books/v1 | 添加新的书籍 |
GET | /books/v1/{book} | 通过标题和机密信息检索书籍 |
关于OpenAPI规范的相关内容,可以查看项目中的openapi_specs目录。
VAmPI包含的漏洞
SQL注入
未经授权的密码更改
不安全的直接对象引用(IDOR)
大量赋值
通过调试终端暴露过多数据
用户名和密码枚举
RegexDoS(拒绝服务)
缺乏资源和速率限制
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/erev0s/VAmPI.git
接下来,使用pip3命令并通过requirements.txt文件来安装该工具所需的依赖组件:
pip3 install -r requirements.txt
接下来,直接运行app.py命令即可开启VAmPI:
python3 app.py
除此之外,我们也可以通过Docker或Docker-Compose来使用VAmPI。
使用Docker运行
构建镜像:
docker build -t vampi_docker:latest .
镜像运行:
docker run -d -p 5000:5000 vampi_docker:latest
使用Docker-Compose运行
假设你已经完成了镜像构建,现在我们就可以使用下列命令运行一个单独的安全实例(端口5001)和一个不安全的实例(端口5002):
docker compose up -d
开启或关闭漏洞环境
Docker运行命令样例如下:
docker run -d -e vulnerable=0 -e tokentimetolive=300 -p 5000:5000 vampire_docker:latest
此时,我们会运行两个实例,我们可以通过“vulnerable=1”来控制哪一个实例包含漏洞。
在Dockerfile中,我们也可以通过设置“ENV vulnerable=1”和“ENV tokentimetolive=60”来管理环境是否包含漏洞以及令牌超时时间。
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
VAmPI:【GitHub传送门】
参考资料
https://erev0s.com/blog/vampi-vulnerable-api-security-testing/