wpscan是在WordPress网站上执行安全评估的流行工具。
它生成了它发现的任何漏洞的详细报告,包括有关受影响插件,主题或WordPress版本的信息。
我们可以生成报告(通常以JSON文件输出),这可能很难分析和分析。
在本教程中,我们将介绍如何使用Node.js解析WPSCAN生成的JSON文件并从中提取有意义的信息。
我们还将使用流行的ExcelJS库来创建一个Excel电子表格,并带有WPSCAN发现的所有漏洞的表。
npm init -y
npm i exceljs
首先,我们将导入FS模块,并使用ReadFilesync函数将JSON文件读取为字符串。然后,我们将使用json.parse将字符串转换为JavaScript对象。
import { readFileSync } from "fs";
const file = readFileSync("./wpscan_output.json", "utf8");
const data = JSON.parse(file);
接下来,我们将提取WordPress版本,主要主题和插件的漏洞。
我们将将这些漏洞存储在单独的数组中,然后使用传播操作员(...)组合成单个数组。
const version_vulnerabilities = data.version.vulnerabilities;
const main_theme_vulnerabilities = data.main_theme.vulnerabilities;
const plugins_vulnerabilities = Object.values(data.plugins)
.map((plugin) => plugin.vulnerabilities)
.flat();
const vulnerabilities = [
...version_vulnerabilities,
...main_theme_vulnerabilities,
...plugins_vulnerabilities,
];
现在我们有一个数组中的所有漏洞,
我们可以使用ExcelJs创建具有这些漏洞表的Excel电子表格。
我们首先创建一个新的工作簿和一个新的工作表。然后,我们在数据中定义了表的列及其相应的键。
import exceljs from "exceljs";
const workbook = new exceljs.Workbook();
const worksheet = workbook.addWorksheet("Vulnerabilities");
worksheet.columns = [
{ header: "Title", key: "title", width: 50 },
{ header: "Fixed in", key: "fixed_in", width: 10 },
{ header: "URL", key: "url", width: 50 },
{ header: "WPVulnDB", key: "wpvulndb", width: 50 },
{ header: "CVE", key: "cve", width: 50 },
];
然后,我们可以迭代漏洞数组,并为每个漏洞添加一行。
我们使用适当的键和值为每个漏洞创建一个对象,然后将此对象传递给addrow函数。
vulnerabilities.forEach((vulnerability) => {
let vulObj = {
title: vulnerability.title,
fixed_in: vulnerability.fixed_in,
url: vulnerability.references.url,
wpvulndb: vulnerability.references.wpvulndb?.join("\n") || "-",
cve: vulnerability.references.cve?.join("\n") || "-",
};
worksheet.addRow(vulObj);
});
// make wrap text (optional)
worksheet.columns.forEach((column) => {
column.style = { alignment: { wrapText: true } };
});
最后,我们可以使用WriteFile函数将Excel文件写入磁盘。
workbook.xlsx.writeFile("vulnerabilities.xlsx").then(() => {
console.log("Excel file is written.");
});
tada!最终代码:
import { readFileSync } from "fs";
import exceljs from "exceljs";
const file = readFileSync("./wpscan_output.json", "utf8");
const data = JSON.parse(file);
const interesting_findings = data.interesting_findings;
const version_vulnerabilities = data.version.vulnerabilities;
const main_theme_vulnerabilities = data.main_theme.vulnerabilities;
const plugins_vulnerabilities = Object.values(data.plugins)
.map((plugin) => plugin.vulnerabilities)
.flat();
const vulnerabilities = [
...version_vulnerabilities,
...main_theme_vulnerabilities,
...plugins_vulnerabilities,
];
const workbook = new exceljs.Workbook();
const worksheet = workbook.addWorksheet("Vulnerabilities");
worksheet.columns = [
{ header: "Title", key: "title", width: 50 },
{ header: "Fixed in", key: "fixed_in", width: 10 },
{ header: "URL", key: "url", width: 50 },
{ header: "WPVulnDB", key: "wpvulndb", width: 50 },
{ header: "CVE", key: "cve", width: 50 },
];
const vulnerabilities_count = vulnerabilities.length;
console.log(
`There are ${vulnerabilities_count} vulnerabilities in this website.`
);
vulnerabilities.forEach((vulnerability) => {
let vulObj = {
title: vulnerability.title,
fixed_in: vulnerability.fixed_in,
url: vulnerability.references.url,
wpvulndb: vulnerability.references.wpvulndb?.join("\n") || "-",
cve: vulnerability.references.cve?.join("\n") || "-",
};
worksheet.addRow(vulObj);
});
// wrap text
worksheet.columns.forEach((column) => {
column.style = { alignment: { wrapText: true } };
});
workbook.xlsx.writeFile("vulnerabilities.xlsx").then(() => {
console.log("Excel file is written.");
});
就是这样!
只有几行代码,我们就可以解析WPSCAN JSON报告,并创建一个带有所有漏洞表的Excel电子表格。这可能是快速分析WPSCAN扫描结果并识别需要修复的区域的有用工具。
我希望您对此教程有帮助。