文章

Nse脚本编写基础

nmap nse脚本

用法
1
2
3
4
5
6
7
8
9
10
-sC	全部脚本

--script 指定脚本

--script-args	指定脚本参数
--scripts-args-file	指定脚本参数

--script-trace	调试开发
--script-updatedb	调试开发

类别

通过脚本中categories = {}来说明,有authbroadcastbrutedefaultdiscoverydosexploitexternalfuzzerintrusivemalwaresafeversionvuln

1
参考连接:https://nmap.org/book/nse-usage.html
运行阶段:

prerule:在扫描所有目标前进行

1
在目标主机上执行一些预扫描任务,以确定要应用的脚本集合。这些脚本可用于发现可利用的服务和漏洞,以及为后续扫描选择最佳的脚本。

postrule:在扫描所有目标后运行

1
在完成端口扫描和主机扫描之后,执行额外的任务,如输出结果的整理、报告生成、服务指纹识别、漏洞验证等。这些脚本可以在扫描结束后对收集到的数据进行进一步处理和分析。

hostrule:Nmap 对目标主机执行主机发现、端口扫描、版本检测和操作系统检测后,扫描过程中运行

1
对目标主机进行更全面的扫描,包括操作系统检测、探测已开放端口关联的服务和配置等。这些脚本可以提供更详细的主机信息,帮助进行目标环境的评估和漏洞分析。

portrule:扫描中扫到特定端口上面的服务的时候运行(service rule)如果主机的 Web 服务器在多个端口上运行,则这些脚本可能会运行多次(每个端口一个)

1
在端口级别对目标主机进行扫描,根据特定的脚本策略来选择要执行的脚本。这些脚本可以用于识别目标主机上开放的端口、服务版本信息和其他相关的网络特征。
脚本参数

可通过get_script_args获取命令行传入的参数或直接使用生成的lua table(nmap.registry.args)

命令:nmap localhost -p 7848 –script test.nse –script-args ‘user=admin’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
local shortport = require "shortport"
local stdnse = require "stdnse"

-- 扫描指定端口会调用action
portrule = shortport.port_or_service(7848)

categories = {"discovery", "safe"}

local arg_path = stdnse.get_script_args("user") or "/"

-- 扫描主机过程中会调用action 
hostrule = function()
    return true
end

-- 扫描主机完成后会调用action
postrule = function()
    return true
end

-- 扫描主机前进行预检查会调用action
prerule = function()
    return true
end

action = function(host, port)
    print(arg_path)
end
脚本格式(如何写?)
本文由作者按照 CC BY 4.0 进行授权