day2

📌前言

设计一个好的数据库是至关重要的。PentestWeb 如果想要优秀的拓展性、可用性、健壮性,就要从数据库开始,打好一个良好的基础。

我会用大部分且漫长的时间去完善这个数据库。

💡数据库设计

1.扫描任务表

输入目标,可能是单个目标,也可能是多个目标,如果是多个目标,就要把它的每个url/host根据 /n 分开,使用任务名称 name 作为主键,每次要进行的扫描会生成一个任务。

Task

字段 字段类型 备注
name CharField,50, 主键,任务名称
note CharField,500,blank 任务说明
targets TextField, 输入的目标
ports TextField, 输入的端口
is_icp BooleanField,default=false 是否查询icp备案
is_proxy BooleanField,default=false 是否开启代理进行扫描,
is_vul BooleanField,default=false 是否进行漏洞扫描
is_awvs BooleanField,default=false 是否进行awvs扫描
is_plug BooleanField,default=false 是否启用插件
plug_name CharField,ForeignKey,500,blank 外键,启用的插件,关联插件表
status CharField,choices 扫描任务状态,等待中,进行中,已完成
created_time DateTimeField 创建时间

2.扫描结果表

扫描结果表是扫描任务表的进一步处理化,加入开放的端口,删除未开放的端口,添加有效的url/host、备案信息,后台url,指纹识别结果,target格式为:protocol://hostname[:port]/path,

Result

字段 字段类型 备注
id primary_key,AutoField,int,11 主键,自动生成
name CharField,ForeignKey,50, 外键,扫描任务的名称,关联扫描任务表
target ForeignKey,CharField,500 有效资源
critical_vul_count PositiveIntegerField 严重的漏洞数量
icp TextField, 所有icp备案查询信息

3.target详情表

Target

字段 字段类型 备注
target primary_key,CharField,500 主键
ip CharField,50 ip地址
is_cdn BooleanField,default=false 是否使用cdn
protocol CharField,50 target使用的协议
hostname CharField,50 target的主机名称
port PositiveIntegerField target的端口
status CharField, 状态码,200,404 等等
js_info TextField js文件泄露的信息
back_url CharField,blank=true 目标是否存在后台url
is_webpack BooleanField,default=false 是否为webpack打包,如果是,则可以使用packerfuzz扫描

4.插件表

一个可持续发展的系统,必须要有插件功能,这是该系统十分重要的一部分功能。如果想要增加插件的配置,先到配置表添加,插件中再引用配置表的配置。具体引用方式为

1
from Config import setting.fofa_key

Plug

字段 字段类型 备注
plug_name primary_key,CharField,50 主键
path CharField,100 插件存放的路径,如: ../for.py
config_name CharField,ForeignKey,500, 外键,关联配置表

5.用户表

用户表

还需要设置免登录功能。可以参考那个项目。

管理员可以添加用户,使用全部功能。

用户可以使用全部功能,但不能添加用户。

游客可以使用部分开放功能,服务不全。

User

字段 字段类型 备注
username primary_key,CharField,50 主键,用户名
password CharField,50 密码
email EmailField,blank 邮箱,任务扫描完成后发送邮箱提醒,重置密码链接
role CharField,choices 用户权限等级,管理员,用户,游客,
profile ImageField 用户头像
config_name CharField,ForeignKey,500, 外键,用户配置,关联配置表

6.配置表

配置表,主要作用是存储每个用户配置的信息,后期可自行添加想要配置的字段。

Config

字段 字段类型 备注
config_name primary_key 主键,配置表
username CharField,ForeignKey,50, 配置所属用户,外键,关联用户表
fofa_key CharField,500 fofa密钥
awvs_ip CharField,500 awvs ip
awvs_key CharField,500 awvs key

7.每日一句话表

Everyday

字段 字段类型 备注
content CharField 内容
weight CharField,choices 权重
status CharField,choices 状态,展示和不展示

8.字典

Dict

参考文件上传方案。

字段 字段类型 备注
file FileField, 字典名称
created_time TimeField 创建时间