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 = {}来说明,有auth、broadcast、brute、default。discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version和vuln
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 进行授权