Skip to content

Commit

Permalink
更新到V2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Hypdncy committed Apr 17, 2021
1 parent 89dbd1e commit 6c1b735
Show file tree
Hide file tree
Showing 56 changed files with 1,699 additions and 1,863 deletions.
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# myself
.idea/
database/
template.company/
/test.py
/内部员工README.md

# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
140 changes: 46 additions & 94 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,131 +1,83 @@
# NessusToReport
这是一个nessus自动报告生成工具,可以用来自动生成nessus扫描器的中文报告--NessusToReport,

GitHub:`https://github.com/Hypdncy/NessusToReport`
> **V2.0** 求个Start!!!

*版权所有,侵权必究*
> **V2.0** 求个Start!!!

*本项目,仅仅代表个人,如有侵权,请联系我删除*
> **V2.0** 求个Start!!!

## 原理说明
这是一个nessus自动报告生成工具,可以用来自动生成nessus扫描器的中文报告--NessusToReport,程序有两种报告方式:

1. 程序将会自动扫描nessus目录下的csv文件,将他们读取
1. 程序将只保留csv中的紧急,高危,中危漏洞,并且与数据库,自定义配置漏洞信息做匹配
1. 匹配成功部分将会读取数据库中的漏洞信息,写入到loops.json中
1. 匹配失败部分将会写入到errors.json中
1. 若开启翻译,程序将会联网翻译该漏洞信息,并且再次写入到loops.json中
1. 未开启翻译,程序将会抛出`漏洞PluginId`异常终止
1. 程序将自动将自动根据模板生成docx文档
- 漏洞排序:以漏洞为单位一一逻辑拥有该漏洞的主机及其信息
- 主机排序:以主机为单位一一罗列主机所拥有的漏洞及其信息

## 安装说明
## 使用说明

#### 安装方法

建议在windows下安装python3版本
建议在windows下安装python3.8+版本

```shell script
root@hypdncy:~# pip install -r requirement.txt
```
#### 使用方法
1. 导出nessus的csv,放置到`./data/nessus`目录下
1. 更新自己的实施范围`./data/systems.csv`
1. 更新自己的配置信息`./config.py`
1. 执行命令`python main.py`

## 配置说明

#### 基本配置

##### 配置时间信息

1. 配置位置:cnf/default.py中`def_default.data`参数
1. 配置默认:默认配置为当天的时间
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会替换文档中的时间相关信息

##### 修改人员信息

1. 配置位置:cnf/default.py中`def_default.monitor`,`def_default.manager`,`def_default.work`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会替换文档中的参与人员信息

##### 配置客户信息

1. 配置位置:config.py中`config.user`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会替换文档中的客户相关信息

##### 配置系统信息

1. 配置位置:config.py中`config.systems`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会替换文档中的`实施范围`表

#### 漏洞配置

##### 配置自定义漏洞信息

1. 配置位置:config.py中`config.nessus_vuln_self`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会覆盖数据库中的漏洞信息,主要用于防止因为`漏洞PluginId`异常发生报错
```shell script
root@hypdncy:~# python main.py -t hosts # 指定主机排序类型扫描报告
root@hypdncy:~# python main.py # 默认漏洞排序类型扫描报告
```

##### 配置自定义漏洞等级
## 配置说明

1. 配置位置:config.py中`config.nessus_risk_self`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会覆盖数据库中的漏洞等级,主要用于解决`JavaScript`,`PHP`等版本漏洞风险等级过高
本工具具有翻译功能,需要自己申请百度、有道翻译API的key,并将其配置到`./config.py`
>其他翻译渠道需要在`./modle/common/translate/`添加翻译API的功能,并在`./modle/handle.py`中调用

##### 配置自定义漏洞忽略
#### 修改基本信息

1. 配置位置:config.py中`config.nessus_ignore_ids`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置将会忽略`nessus_ignore_ids`所对应的漏洞,把他们排除在外
该修改会修改模板中`{xxx-xxx}`标记的部分,程序运行时会将如下两个配置中的信息对其金星覆盖

#### 翻译配置
1. 临时修改:修改`./config.py`中`config_data`
1. 永久修改:修改`./cnf/data.py`中`cnf_data`

##### 配置翻译功能
#### 配置实施范围

1. 配置位置:config.py中`config.translate_status`参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置开启后将会自动翻译数据库中不存在的漏洞信息,并且防止因为`漏洞PluginId`异常发生报错
- 配置说明:该配置将会替换文档中的`实施范围`表
- 直接修改`./data/systems.csv`

##### 配置翻译接口
## 漏洞配置

1. 配置位置:config.py中`config.translate_api`,`config.translate_url`,`config.translate_appid`,`config.translate_secret`,参数
1. 配置方法:按照参数栗子进行配置
1. 配置说明:该配置会决定使用的翻译API
记得使用完`配置自定义漏洞等级`,`配置自定义漏洞忽略`功能后将他们注释,防止下次生成报告时,使用该次的配置

## 使用说明
#### 配置自定义漏洞信息

1. 导入nessus的csv,放置到csv/nessus/目录下
1. 更新属于自己的模板文档并放置在template目录下
1. 配置如上的信息
1. 执行命令
- 配置说明:该配置将会覆盖其他来源的漏洞信息,主要用于没有翻译API时,人工翻译`./logs/loops_error.json`,将其配置复制到该参数下
- 配置位置:config.py中`config.nessus_vuln_self`参数

```shell script
root@hypdncy:~# python main.py -t host # 指定扫描报告类型
root@hypdncy:~# python main.py # 默认主机扫描报告
```
#### 配置自定义漏洞等级

## 技巧说明
- 该配置在生成报告时会修改与配置`plugin_id`的漏洞等级,主要用于调整漏洞等级`(鸡肋)`
- 配置位置:config.py中`config.nessus_risk_self`参数

1. 建议使用windows+python3
1. 遇到数据库中不存在的漏洞信息时:
1. 使用`配置自定义漏洞信息`功能,重新生成报告
1. 读取errors.json中的文件
1. 人工翻译并把它粘贴到`config.nessus_vuln_self`中
1. 开启`配置翻译功能`,重新生成报告
1. 遇到漏洞风险等级定义过高
1. 使用`配置自定义漏洞等级`功能,重新生成报告
1. 在loops.json中寻找该漏洞的名称(从已经生成的word中获取)
1. 获取名称对应的id,把它粘贴到`config.nessus_risk_self`
1. 遇到多余的,不想要漏洞
1. 使用`配置自定义漏洞忽略`功能,重新生成报告
#### 配置自定义漏洞忽略

> 记得使用完`配置自定义漏洞等级`,`配置自定义漏洞忽略`功能后将他们注释,防止下次生成报告时,使用该次的配置
- 配置说明:该配置在生成报告时会忽略与配置相同`plugin_id`的漏洞,主要用于大量扫描时的批量删除
- 配置位置:config.py中`config.nessus_ignore_ids`参数

## 更新说明

1. 项目不定期发布漏洞库vuln.db,在release中可以下载,并替换到./cnf/目录下
2. 各位可以将errors.json中的信息写到到updatedb.txt中,并且push到github,我将会翻译并将其更新其到数据库中
2. 各位可以将`./logs/loops_error.json`中的信息push到我的github,我将会翻译并将其更新其到数据库中

## 演示图

![演示图](演示图.jpg)
>演示图漏洞排序

![演示图](演示图漏洞排序.png)

## 特别谢鸣
>演示图主机排序

Mr,YaDong:感谢YaDong同学的翻译建议与漏洞库更新
![演示图](演示图主机排序.png)
113 changes: 54 additions & 59 deletions cnf/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,97 +28,92 @@
# '.:::::' ':'````..
# ------------------------------------------------------------

loops_error_file = './error.json'
loops_file = './loops.json'
template_hostscan_file = './template/主机扫描_模板_1.1.docx'
template_webscan_file = './template/金融巡检_模板_1.1.docx'

vuln_db_file = './cnf/vuln.db'
systems_file = "./data/systems.csv"

json_loops_error = "./logs/loops_error.json"
json_loops_global = "./logs/loops_global.json"

template_loops_file = "./template/主机扫描报告模板-202104.docx"

translate_status = True
translate_asyncios = 4
translate_baidu_url = "http://api.fanyi.baidu.com/api/trans/vip/translate"
translate_baidu_appid = "xxxxxxxx"
translate_baidu_secret = "xxxxxxxx"

translate_youdao_url = "https://openapi.youdao.com/api"
translate_youdao_appkey = "xxxxxxxx"
translate_youdao_appsecret = "xxxxxxxx"

translate_order = {
"name_en": "name_cn",
"describe_en": "describe_cn",
"solution_en": "solution_cn",
}
vuln_db_file = "./cnf/vuln.db"
vuln_db_info = {
"sqlite_code": "utf-8",
"vuln_table": "vuln",
"order": {
"plugin_id": 0,
"name_en": 1,
"name_cn": 2,
"risk_lev": 3,
"describe": 4,
"solution": 5,
"risk_cn": 3,
"describe_cn": 4,
"solution_cn": 5,
"cve": 6
}
}
vuln_info = {
"name_en": "",
"name_cn": "",
"risk_lev": "",
"describe": "",
"solution": "",
"risk_en": "",
"risk_cn": "",
"describe_en": "",
"describe_cn": "",
"solution_en": "",
"solution_cn": "",
"cve": ""
}

nessus_csv_dir = "./csv/nessus/"
nessus_csv_dir = "./data/nessus/"
nessus_csv_order = {
"plugin_id": 0,

"name_en": 7,
"risk_lev": 3,
"describe": 9,
"solution": 10,
"risk_en": 3,
"describe_en": 9,
"solution_en": 10,
"cve": 1,

"host": 4,
"protocol": 5,
"port": 6,
}

# risk
risk_count = {
"紧急": 0,
"高危": 0,
"中危": 0,
"低危": 0,
risk_scores = {
"Critical": 4,
"High": 3,
"Medium": 2,
"Low": 1,
}

risk_score = {
"紧急": 4,
"高危": 3,
"中危": 2,
"低危": 1,
risk_en2cn = {
"Critical": "紧急",
"High": "高危",
"Medium": "中危",
"Low": "低危",
}

risk_is_loop_range_cn = ["紧急", "高危", "中危"]
risk_is_loop_range_en = ["Critical", "High", "Medium"]
risk_range_en = ["Critical", "High", "Medium", "Low"]

risk_describe = {
"scanhuman": {
"safe": "暂未发现有效漏洞。",
"unsafe": "发现如下有效漏洞。",
},
"scanweb": {
"safe": "暂未发现有效漏洞。",
"unsafe": "发现如下漏洞,经过筛选误报,有效漏洞已列出。"
},
"scanhost": {
"safe": "暂未发现有效漏洞。",
"unsafe": "发现如下漏洞,经过筛选误报,有效漏洞已列出。"
},
"result": {
"safe":
"暂未发现有效漏洞。",
"unsafe":
"共发现安全漏洞{risk_count}个,其中紧急{risk_urgent}个、高危{risk_high}个、中危{risk_medium}个、低危{risk_low}个。存在的安全隐患主要包括{risk_includes}等安全漏洞,可能将导致{risk_harms}等严重危害"
},
"hostresult": {
"safe":
"暂未发现有效漏洞。",
"unsafe":
"共发现安全漏洞{risk_count}个,存在的安全隐患主要包括{risk_includes}等安全漏洞,详情见如下章节。"
}
risk_loops_conclusion = {
"safe": "暂未发现有效漏洞。",
"unsafe": "共发现安全漏洞种类{risk_count}个,其中紧急漏洞{risk_urgent}个、高危漏洞{risk_high}个、中危漏洞{risk_medium}个、低危漏洞{risk_low}个。存在的安全隐患主要包括{risk_includes}等安全漏洞,可能将导致{risk_harms}等严重危害。"
}
# 翻译风险等级
translate_risk = {
"Critical": "紧急",
"High": "高危",
"Medium": "中危",
"Low": "低危"

risk_hosts_conclusion = {
"safe": "暂未发现有效漏洞。",
"unsafe": "共发现安全漏洞主机{risk_count}个,其中紧急主机{risk_urgent}个、高危主机{risk_high}个、中危主机{risk_medium}个、低危主机{risk_low}个。存在的安全隐患主要包括{risk_includes}等安全漏洞,可能将导致{risk_harms}等严重危害。"
}
Loading

0 comments on commit 6c1b735

Please sign in to comment.