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 | 密码 |
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 | 创建时间 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Fstraw Blog!
评论