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!
 评论



