1

我正在尝试编写一个脚本来让我访问 localhost 中 nessus 的高级扫描选项。所以我想通过没有GUI的shell脚本进行提前扫描操作。我希望所有操作,如登录、提前扫描和导出报告都通过 shell 脚本执行,无需 GUI 访问。

4

2 回答 2

1

为什么要用 bash 脚本来做呢?您可以使用 nessus API 更轻松地完成此操作。看看下面的链接 https://github.com/jfalken/nessus_enterprise_rest_client

于 2017-05-22T20:40:51.057 回答
0

在 nessus 中进行自动化的最简单方法是使用 nessus API。

它位于https://NessusServerIP:8834/ - 如果您访问它,API 文档会向您致意。

有各种可用的 API 实现——如果你用谷歌搜索“Nessus API 客户端”,你会一瞥。

如您所说,如果您想要运行 bash-skripts,那么最简单的方法可能是对 API-Requests 使用 CURL。

典型的工作流程如下所示:

  1. 授权 NessusAPI(通过 TOKEN 或 API-Key)
  2. 启动或配置扫描(并等待它完成)
  3. 导出报告(并等到它完成)
  4. 下载导出的报告

CURL #1(使用令牌授权):

    curl -X POST --data '{"username":"NessusUser","password":"YourPassword"}' -k "https://NessusServerIp:8834/session" 
--header "Content-Type:application/json" | python -m json.tool

..这将产生您遵循 JSON 产生其他 API 调用所需的令牌:

{“令牌”:“e411e443521adee4496d79823a510cc68c5bf05aeda6e6eb”}

CURL #2(启动扫描):

        curl -X POST -H 'X-Cookie: token=e411e443521adee4496d79823a510cc68c5bf05aeda6e6eb' -H 'Content-Type:application/json' 
    --data '{"scan_id":"21", "alt_targets":[127.0.0.1]}' 
-k "https://NessusServerIp:8834/scans/21/launch" | python -m json.tool

...这将用这样的 JSON 来回答,其中包含刚刚开始扫描的 ID:

{“scan_uuid”:“c1c30d8f-5f79-2e4b-2d03-05b8b3c595f1e768e03195abdfa2”}

CURL #3(导出扫描):

 curl -X POST -H 'X-Cookie: token=766ef7a2302780c189ba563b89c5eb3706140c0ef1e4de8b' -H
 'Content-Type:application/json' --data '{"scan_id":"33", "format":"html"}' -k
 "https://NessusServerIP:8834/scans/33/export" | python -m json.tool

...这将产生此 JSON 响应,其中包含导出文件的令牌和 file_id: {"token":"3e13ab381c480caa1e377411c0b561970c46e5d78894c5a0cb2be0e7f00fefe0","file":1434780027}

...所以现在我们可以下载报告了。在这种情况下,由于我在上次调用中指定了“格式:html”,它是一个 .html,您需要将结果保存到其中。

Curl #4(下载导出的报告):

        curl -X GET -H 'X-Cookie: token=7d155aef4359d02addea29d8d56bca4a5045ca61efeb38ee' -H 'Content-Type:application/json' 
    --data '{"scan_id":"21", "alt_targets":127.0.0.1}' 
-k "https://NessusServerIP:8834/scans/17/export/945237343/download" > report.html

...这应该会在您启动脚本的文件夹中留下一个 report.html。

现在......你如何自动化这个?好吧,写一个 Bash-Skript,输入这个调用,解析答案以提取你需要的信息——然后享受吧!:)

ps:我使用python -m json.tool来美化 CURL 原本不是很漂亮的输出。

希望我有帮助,Gewure

于 2017-06-22T09:00:34.177 回答