Nmap入门到高级【第四章】
预计更新
-
Nmap基础知识
1.1 Nmap简介和历史
1.2 Nmap安装和使用方法
1.3 Nmap扫描技术和扫描选项 -
Nmap扫描技术
2.1 端口扫描技术
2.2 操作系统检测技术
2.3 服务和应用程序检测技术
2.4 漏洞检测技术 -
Nmap扫描选项
3.1 扫描类型选项
3.2 过滤器选项
3.3 探测选项
3.4 输出选项 -
Nmap脚本引擎
4.1 Nmap脚本引擎简介
4.2 Nmap脚本语言
4.3 内置脚本和第三方脚本
4.4 使用Nmap脚本引擎进行漏洞检测 -
Nmap数据分析
5.1 Nmap扫描结果分析
5.2 Nmap扫描数据可视化
5.3 Nmap数据与第三方工具集成 -
Nmap安全审计
6.1 网络安全审计概述
6.2 使用Nmap进行安全审计
6.3 Nmap与其他工具的集成 -
Nmap的高级技术
7.1 Nmap的高级扫描技术
7.2 Nmap的高级选项和配置
7.3 Nmap的高级脚本和扩展 -
Nmap的自定义开发
8.1 Nmap自定义开发简介
8.2 Nmap开发环境搭建
8.3 Nmap插件开发
8.4 Nmap扫描引擎开发 -
Nmap与Web应用程序安全
9.1 Web应用程序安全概述
9.2 使用Nmap进行Web应用程序安全测试
9.3 Nmap与其他Web应用程序安全工具的集成 -
Nmap实战案例
10.1 Nmap实战案例概述
10.2 Nmap在企业网络安全中的应用
10.3 Nmap在互联网安全中的应用
10.4 Nmap在渗透测试中的应用
4. Nmap脚本引擎4.1 Nmap脚本引擎简介4.2 Nmap脚本语言4.3 内置脚本和第三方脚本4.4 使用Nmap脚本引擎进行漏洞检测
Nmap脚本引擎简介
一、Nmap脚本引擎简介
Nmap脚本引擎(Nmap Scripting Engine,NSE)是一种内置在Nmap中的脚本解释器,可以用来执行各种网络安全测试脚本。NSE可以用来执行各种自定义的测试任务,包括端口扫描、服务识别、漏洞检测等。NSE可以帮助用户快速地检测出目标主机上的安全问题,提高网络安全性和效率。
NSE的核心思想是将一些常见的网络安全测试任务抽象为脚本,并且将这些脚本封装在Nmap中,用户可以通过简单的命令行参数来选择要执行的脚本。NSE使用Lua编程语言编写,并且支持动态加载和自定义编写脚本,用户可以根据自己的需要编写自己的脚本,以便更好地满足自己的测试需求。
NSE主要有以下几个特点:
-
内置多种常用脚本:NSE内置了多种常用脚本,包括端口扫描、服务识别、漏洞检测等,用户可以根据自己的需要选择要执行的脚本。
-
支持自定义脚本:用户可以根据自己的需要编写自己的脚本,并且可以将这些脚本封装在Nmap中进行执行,以便更好地满足自己的测试需求。
-
支持动态加载脚本:NSE支持动态加载脚本,用户可以在执行扫描任务时选择要加载的脚本,以便更好地满足自己的测试需求。
-
强大的灵活性:NSE可以与其他Nmap功能进行结合,例如版本检测、操作系统识别等,可以帮助用户更好地进行网络安全测试。
二、NSE脚本的分类
NSE脚本可以根据不同的功能进行分类,主要有以下几种类型:
-
探测脚本(Discovery Scripts):探测脚本用于探测目标主机上的各种信息,包括端口扫描、服务识别、操作系统识别等。探测脚本可以帮助用户了解目标主机的网络拓扑结构和软件配置信息,以便更好地进行安全测试。
-
安全脚本(Security Scripts):安全脚本用于检测目标主机上的安全问题,包括漏洞检测、弱口令检测、SSL/TLS检测等。安全脚本可以帮助用户发现目标主机上的安全漏洞和弱点,以便及时修复和加强安全防护。
-
实用脚本(Utility Scripts):实用脚本用于执行各种实用功能,包括DNS解析、HTTP请求、FTP传输等。实用脚本可以帮助用户更好地了解目标主机的网络环境和软件配置信息,以便更好地进行安全测试。
-
输出脚本(Output Scripts):输出脚本用于处理和输出扫描结果,支持多种输出格式,包括文本、XML、HTML等。输出脚本可以帮助用户更好地整理和分析扫描结果,以便更好地进行安全测试。
三、NSE脚本的使用
NSE脚本可以通过命令行参数来启用,主要有以下几种方式:
- 执行所有脚本:使用-A选项可以启用所有的NSE脚本,例如:
- 执行特定类型的脚本:使用–script选项可以选择要执行的脚本类型,例如:
nmap -sV --script discovery 192.168.1.1
这个命令将执行所有的探测脚本。
- 执行特定脚本:使用–script选项可以选择要执行的特定脚本,例如:
nmap --script ssh-brute 192.168.1.1
这个命令将执行ssh-brute.nse脚本,用于检测SSH服务器上的弱口令。
- 执行多个脚本:使用–script选项可以同时执行多个脚本,例如:
nmap --script "dns-brute and smtp-enum-users" 192.168.1.1
这个命令将同时执行dns-brute.nse和smtp-enum-users.nse脚本,用于检测DNS服务器和SMTP服务器上的弱点。
除了通过命令行参数来选择脚本,NSE还提供了一些常用的脚本,可以直接使用。例如,使用http-title.nse脚本可以获取Web服务器的标题信息,使用http-robots.txt.nse脚本可以获取Web服务器的robots.txt文件信息。
四、自定义脚本
NSE支持自定义脚本,用户可以根据自己的需要编写自己的脚本,以便更好地满足自己的测试需求。自定义脚本需要遵循一定的规范,包括:
-
使用Lua编程语言编写。
-
实现一个名为action的函数,该函数接受一个参数,表示当前扫描的主机和端口信息,例如:
function action(host, port)-- do something
end
- 实现一个名为categories的变量,该变量表示脚本所属的类型,例如:
categories = {"discovery", "safe"}
- 使用–script-args选项来传递脚本参数。例如,使用–script-args myarg=123可以将参数123传递给脚本。
五、常用脚本示例
- http-enum.nse:用于枚举Web服务器上的目录和文件。
nmap --script http-enum 192.168.1.1
- smb-os-discovery.nse:用于探测SMB服务器的操作系统信息。
nmap --script smb-os-discovery 192.168.1.1
- dns-brute.nse:用于枚举DNS服务器上的主机名和IP地址。
nmap --script dns-brute 192.168.1.1
- ftp-anon.nse:用于检测FTP服务器上的匿名访问权限。
nmap --script ftp-anon 192.168.1.1
- ssl-heartbleed.nse:用于检测SSL/TLS服务器上的心脏滴血漏洞。
nmap --script ssl-heartbleed 192.168.1.1
六、总结
NSE是Nmap中一个非常强大的功能,可以帮助用户快速地检测出目标主机上的安全问题,提高网络安全性和效率。NSE支持多种常用脚本和自定义脚本,可以根据用户的需求进行灵活选择和编写。通过掌握NSE的使用方法和自定义脚本的编写,可以更好地进行网络安全测试,保障网络安全。
Nmap脚本语言
Nmap脚本语言(NSE)是一种用于Nmap扫描器的脚本语言,可以用于执行各种网络安全测试任务,例如漏洞扫描、服务识别、主机发现、操作系统检测等。NSE的设计目标是使Nmap更加灵活和可扩展。本文将详细介绍NSE的语法、使用方法和编写自定义脚本的步骤。
一、NSE语法
NSE使用Lua编程语言编写,因此Lua的语法和规则也适用于NSE。Lua是一种轻量级的脚本语言,具有简单、快速、可嵌入等特点,易于学习和使用。在此介绍Lua的一些基本语法和规则,以便更好地理解NSE。
- 注释
注释是程序中用于说明代码作用或者提供说明性信息的一段文本,不会被程序执行。在Lua中,注释有两种方式:
单行注释:使用两个连续连字符(–)表示,后面的内容都会被视为注释。
-- This is a single line comment
多行注释:使用一对连续的方括号([[]])表示,方括号中间的内容都会被视为注释。
--[[
This is a multi-line comment
It can span across multiple lines
]]
- 变量
变量是存储数据的容器,可以通过变量名来访问和修改其中的数据。在Lua中,变量的命名规则与其他编程语言类似,必须以字母或下划线开头,可以包含字母、数字和下划线。变量赋值使用等号(=)进行。
-- Define a variable
local x = 10-- Access and modify a variable
x = x + 1
- 数据类型
Lua中有8种基本数据类型,分别是nil、boolean、number、string、function、userdata、table和thread。其中,table是一种特殊的数据类型,用于存储键值对。Lua中的变量类型是动态的,也就是说,变量可以随时改变其数据类型。
-- Define a variable with different data types
local x = 10
x = "hello"
x = true
- 控制流语句
控制流语句用于控制程序的执行流程,常见的有if语句、for循环、while循环和repeat-until循环。
if语句:用于根据条件执行不同的代码块。
if x > 10 thenprint("x is greater than 10")
elseprint("x is less than or equal to 10")
end
for循环:用于循环执行一段代码,通常用于遍历数组或列表。
-- Iterate through a table
local t = {1, 2, 3, 4, 5}
for i, v in ipairs(t) doprint(i, v)
end
while循环:用于循环执行一段代码,直到条件不成立为止。
-- Print all even numbers between 1 and 10
local i = 1
while i <= 10 doif i % 2 == 0 thenprint(i)endi = i + 1
end
repeat-until循环:用于循环执行一段代码,直到条件成立为止。
-- Print all even numbers between 1 and 10
local i = 1
repeatif i % 2 == 0 thenprint(i)endi = i + 1
until i > 10
- 函数
函数是一段可重用的代码,用于完成特定的任务。在Lua中,函数可以有多个参数和返回值,也可以作为变量进行传递和调用。
-- Define a function
function add(a, b)return a + b end-- Call a function
local result = add(1, 2)
print(result)
- 模块
模块是一组相关的函数、变量和常量的集合,用于组织和管理代码。在Lua中,模块可以用require函数进行加载和使用。
-- Load a module
local myModule = require("mymodule")-- Call a function from the module
myModule.myFunction()
二、NSE使用方法
NSE的使用方法非常简单,可以通过命令行或GUI界面来执行。以下是使用NSE的一些示例命令。
- 执行默认脚本
执行默认的NSE脚本,可以使用以下命令:
nmap -sC target
其中,-sC选项表示执行默认脚本,target表示要扫描的目标地址。
- 执行指定脚本
执行指定的NSE脚本,可以使用以下命令:
nmap -sV --script=myScript.nse target
其中,-sV选项表示进行服务版本检测,–script选项后面跟上要执行的脚本名称,target表示要扫描的目标地址。
- 执行脚本分类
执行某一类别的NSE脚本,可以使用以下命令:
nmap -sV --script=vuln target
其中,-sV选项表示进行服务版本检测,–script选项后面跟上要执行的脚本类别名称,target表示要扫描的目标地址。
- 执行自定义脚本
执行自定义的NSE脚本,可以使用以下命令:
nmap -sV --script=myScript.lua target
其中,-sV选项表示进行服务版本检测,–script选项后面跟上要执行的自定义脚本文件名称,target表示要扫描的目标地址。
三、编写自定义脚本
编写自定义的NSE脚本,需要按照一定的格式和规范进行编写。以下是编写自定义脚本的一般步骤。
- 定义脚本信息
第一步是定义脚本的信息,包括脚本名称、描述、作者、版本号等。
description = "This is my custom NSE script"
author = "John Doe"
license = "MIT"
categories = {"discovery", "vuln"}
- 定义脚本参数
第二步是定义脚本的参数,用于控制脚本的行为和输出。可以定义布尔型、数值型、字符串型等类型的参数。
-- Define a boolean parameter
action = true
args = {{"--action", "Perform an action", "boolean", action}
}
- 定义脚本主体
第三步是定义脚本的主体部分,包括扫描逻辑、输出信息等。可以使用Nmap提供的函数进行端口扫描、服务识别、漏洞检测等。
-- Define the script's main function
function main()if action then-- Perform some actionend-- Scan open portslocal portTable = {80, 443, 8080}local openPorts = {}for _, port in ipairs(portTable) dolocal status, err = nmap.scan_port(host, port)if status == "open" thentable.insert(openPorts, port)endend-- Print open portsif #openPorts > 0 thenlocal ports = table.concat(openPorts, ", ")print("Open ports: " .. ports)elseprint("No open ports found")end
end
四、常用脚本示例
NSE提供了丰富的脚本库,可以用于执行各种网络安全测试任务。以下是一些常用的脚本示例。
- http-title.nse
该脚本用于获取Web服务器的主页标题。可以使用以下命令执行:
nmap - sV --script=http-title target
该脚本的主要部分如下:
description = [[
Gets the title of a web page served by an HTTP server.
]]-- Define the script's main function
function main()-- Check if the target supports HTTPif not nmap.is_webapp(target, 80) and not nmap.is_webapp(target, 443) thenreturnend-- Send an HTTP request to the targetlocal response = http.get(target, "/", {port = 80})-- Get the page title from the responselocal title = response.title-- Print the titleif title ~= nil thenprint("Title: " .. title)end
end
- smb-vuln-ms17-010.nse
该脚本用于检测Windows SMB v1协议的漏洞(MS17-010)。可以使用以下命令执行:
nmap -p 445 --script=smb-vuln-ms17-010 target
该脚本的主要部分如下:
description = [[
Checks for the presence of the MS17-010 vulnerability in Windows SMB v1.
]]-- Define the script's main function
function main()-- Check if the target has port 445 openif not nmap.is_port_open(target, 445) thenreturnend-- Send a packet to the target to check for the vulnerabilitylocal response = smb.check_ms17_010(target)-- Print the vulnerability statusif response.ms17_010_vulnerable thenprint("Target is vulnerable to MS17-010")elseprint("Target is not vulnerable to MS17-010")end
end
- dns-brute.nse
该脚本用于进行DNS爆破,尝试猜测目标主机的域名。可以使用以下命令执行:
nmap --script=dns-brute target
该脚本的主要部分如下:
description = [[
Brute force DNS names by guessing common subdomains and hostnames.
]]-- Define the script's main function
function main()-- Check if the target supports DNSif not nmap.is_dns_server(target, 53) thenreturnend-- Define a list of common subdomains and hostnames to guesslocal names = {"www", "mail", "ftp", "webmail", "admin"}-- Try each combination of name and domainfor _, name in ipairs(names) dofor _, domain in ipairs(dns.brute_targets(target)) dolocal hostname = name .. "." .. domain-- Check if the hostname resolves to an IP addresslocal ips = dns.resolve(hostname)-- Print the resolved IP addressesif #ips > 0 thenprint(hostname .. ": " .. table.concat(ips, ", "))endendend
end
以上是一些常用的NSE脚本示例,可以根据实际需要进行调整和修改。使用NSE可以大大提高网络安全测试的效率和准确性,是网络安全测试工程师必备的工具之一。
内置脚本和第三方脚本
Nmap是一款功能强大的网络扫描工具,具有丰富的内置脚本库和第三方脚本库,可以用于执行各种网络安全测试任务。下面将详细介绍Nmap的内置脚本和第三方脚本,分别从功能、使用方法、示例等方面进行介绍。
一、内置脚本
Nmap的内置脚本是指Nmap自带的脚本库,包含了各种网络安全测试任务所需的脚本,例如服务识别、漏洞检测、主机发现、端口扫描等。以下是Nmap的一些常用内置脚本。
- http-title.nse
该脚本用于获取Web服务器的主页标题。可以通过以下命令执行:
nmap -sV --script=http-title target
该脚本的主要代码如下:
description = [[
Gets the title of a web page served by an HTTP server.
]]-- Define the script's main function
function main()-- Check if the target supports HTTPif not nmap.is_webapp(target, 80) and not nmap.is_webapp(target, 443) thenreturnend-- Send an HTTP request to the targetlocal response = http.get(target, "/", {port = 80})-- Get the page title from the responselocal title = response.title-- Print the titleif title ~= nil thenprint("Title: " .. title)end
end
- smb-vuln-ms17-010.nse
该脚本用于检测Windows SMB v1协议的漏洞(MS17-010)。可以使用以下命令执行:
nmap -p 445 --script=smb-vuln-ms17-010 target
该脚本的主要代码如下:
description = [[
Checks for the presence of the MS17-010 vulnerability in Windows SMB v1.
]]-- Define the script's main function
function main()-- Check if the target has port 445 openif not nmap.is_port_open(target, 445) thenreturnend-- Send a packet to the target to check for the vulnerabilitylocal response = smb.check_ms17_010(target)-- Print the vulnerability statusif response.ms17_010_vulnerable thenprint("Target is vulnerable to MS17-010")elseprint("Target is not vulnerable to MS17-010")end
end
- dns-brute.nse
该脚本用于进行DNS爆破,尝试猜测目标主机的域名。可以使用以下命令执行:
nmap --script=dns-brute target
该脚本的主要代码如下:
description = [[
Brute force DNS names by guessing common subdomains and hostnames.
]]-- Define the script's main function
function main()-- Check if the target supports DNSif not nmap.is_dns_server(target, 53) thenreturnend-- Define a list of common subdomains and hostnames to guesslocal names = {"www", "mail", "ftp", "webmail", "admin"}-- Try each combination of name and domainfor _, name in ipairs(names) dofor _, domain in ipairs(dns.brute_targets(target)) dolocal hostname = name .. "." .. domain-- Check if the hostname resolves to an IP addresslocal ips = dns.resolve(hostname)-- Print the resolved IP addressesif #ips > 0 thenprint(hostname .. ": " .. table.concat(ips, ", "))endendend
end
以上是一些常用的内置脚本示例,可以根据实际需要进行调整和修改。
二、第三方脚本
除了Nmap自带的内置脚本之外,Nmap还支持第三方脚本库,可以通过将脚本放置在特定路径下来使用。以下是一些常见的第三方脚本库。
- Vulners.nse
该脚本库用于漏洞扫描和利用,可以利用漏洞库Vulners.com提供的数据来检测和利用漏洞。可以通过以下命令执行:
nmap --script vulners.nse target
该脚本库的主要代码如下:
description = [[
Detects vulnerabilities using data from the Vulners.com vulnerability database.
]]-- Define the script's main function
function main()-- Check if the target supports HTTPif not nmap.is_webapp(target, 80) and not nmap.is_webapp(target, 443) thenreturnend-- Get the HTTP response headers from the targetlocal headers = http.get(target, "/", {port = 80}).headers-- Get the operating system and service information from the headerslocal os_info = headers["server"]local service_info = headers["x-powered-by"]-- Check for vulnerabilities using the Vulners.com databaselocal results = vulners.search(os_info, service_info)-- Print the resultsfor _, result in ipairs(results) doprint(result.title)print(result.description)end
end
- ssl-heartbleed.nse
该脚本库用于检测SSL心脏滴血漏洞(Heartbleed),可以通过以下命令执行:
nmap -p 443 --script=ssl-heartbleed target
该脚本库的主要代码如下:
description = [[
Checks for the presence of the Heartbleed vulnerability in SSL/TLS servers.
]]-- Define the script's main function
function main()-- Check if the target has port 443 openif not nmap.is_port_open(target, 443) thenreturnend-- Check for the Heartbleed vulnerabilitylocal result = ssl.heartbleed_check(target)-- Print the resultif result.vulnerable thenprint("Target is vulnerable to Heartbleed")elseprint("Target is not vulnerable to Heartbleed")end
end
- smb-enum-shares.nse
该脚本库用于枚举Windows SMB共享,可以通过以下命令执行:
nmap -p 445 --script=smb-enum-shares target
该脚本库的主要代码如下:
description = [[
Enumerates Windows SMB shares on a remote host.
]]-- Define the script's main function
function main()-- Check if the target has port 445 openif not nmap.is_port_open(target, 445) thenreturnend-- Enumerate the SMB shares on the targetlocal shares = smb.enum_shares(target)-- Print the sharesfor _, share in ipairs(shares) doprint(share.name)end
end
以上是一些常用的第三方脚本库示例,可以根据实际需要进行调整和修改。
总结
Nmap的内置脚本和第三方脚本库提供了丰富的功能和灵活的扩展性,可以用于执行各种网络安全测试任务。在实际使用中,可以根据实际需要选择合适的脚本,或者编写自己的脚本来满足特定的需求。需要注意的是,在使用脚本时一定要谨慎,避免对目标系统造成不必要的损害。
使用Nmap脚本引擎进行漏洞检测
Nmap是一款强大的网络扫描工具,它提供了一套完整的脚本引擎,可以用于执行各种网络安全测试任务。其中,脚本引擎在漏洞检测方面发挥了重要作用,可以帮助安全专业人员快速发现目标系统中存在的漏洞。本文将详细介绍如何使用Nmap脚本引擎进行漏洞检测,包括脚本引擎的基本原理、使用方法、示例等。
一、脚本引擎的基本原理
Nmap的脚本引擎是一种基于Lua脚本语言的插件系统,可以通过调用各种脚本来对目标系统进行漏洞检测、服务识别、操作系统识别等。脚本引擎的基本原理是通过发送一些特定的网络数据包,然后根据目标系统的响应来判断目标系统是否存在漏洞或者运行着特定的服务或操作系统。脚本引擎中的脚本是由Nmap社区和第三方开发者编写的,可以通过Nmap自带的脚本库或者第三方脚本库来获取。
二、脚本引擎的使用方法
Nmap的脚本引擎可以通过命令行或Nmap脚本引擎语言(NSE)来使用。以下是基于命令行的使用方法:
- 列出所有可用的脚本
可以使用以下命令列出所有可用的脚本:
nmap --script-help all
该命令将列出所有可用的脚本,以及相应的描述和用法说明。
- 列出特定类别的脚本
可以使用以下命令列出特定类别的脚本,例如漏洞检测脚本:
nmap --script-help vuln
该命令将列出所有可用的漏洞检测脚本,以及相应的描述和用法说明。
- 执行特定的脚本
可以使用以下命令执行特定的脚本,例如检测目标系统是否存在Shellshock漏洞:
nmap -p 80 --script=http-shellshock --script-args uri=/cgi-bin/bin,cmd=ls target
该命令将发送一个特殊的HTTP请求,检测目标系统是否存在Shellshock漏洞,如果存在则将执行"ls"命令。
- 执行多个脚本
可以使用以下命令执行多个脚本,例如同时检测目标系统的SSH服务和HTTP服务是否存在漏洞:
nmap -p 22,80 --script ssh-vuln-cve2015-5600,http-vuln-cve2015-1635 target
该命令将同时执行ssh-vuln-cve2015-5600和http-vuln-cve2015-1635两个脚本,检测目标系统的SSH服务和HTTP服务是否存在漏洞。
- 执行自定义脚本
除了使用Nmap自带的脚本库,还可以编写自定义脚本来满足特定的需求。以下是一个简单的自定义脚本示例,用于检测目标系统是否存在OpenSSL心脏滴血漏洞:
local openssl = require "openssl"-- Define the script's main function
function main()-- Check if the target has port 443 openif not nmap.is_port_open(target, 443) thenreturnend-- Check for the Heartbleed vulnerabilitylocal result = openssl.heartbleed_check(target)-- Print the resultif result.vulnerable thenprint("Target is vulnerable to OpenSSL Heartbleed")elseprint("Target is not vulnerable to OpenSSL Heartbleed")end
end
该脚本使用OpenSSL库来检测目标系统是否存在OpenSSL心脏滴血漏洞,可以通过以下命令来执行该脚本:
nmap -p 443 --script=my-heartbleed-script target
该命令将执行自定义脚本来检测目标系统是否存在OpenSSL心脏滴血漏洞。
三、脚本引擎的示例
下面将介绍几个常用的脚本引擎示例,包括漏洞检测、服务识别、操作系统识别等。
- 漏洞检测
Nmap的脚本引擎可以用于检测目标系统是否存在各种漏洞。以下是一个简单的漏洞检测脚本示例,用于检测目标系统是否存在OpenSSL心脏滴血漏洞:
nmap -p 443 --script=ssl-heartbleed target
该命令将发送一个特殊的SSL请求,检测目标系统是否存在OpenSSL心脏滴血漏洞。
- 服务识别
Nmap的脚本引擎可以用于识别目标系统运行的服务类型和版本。以下是一个简单的服务识别脚本示例,用于识别目标系统运行的Web服务:
nmap -p 80 --script=http-title target
该命令将发送一个HTTP请求,获取目标系统的Web页面标题,从而识别目标系统运行的Web服务类型和版本。
- 操作系统识别
Nmap的脚本引擎可以用于识别目标系统的操作系统类型和版本。以下是一个简单的操作系统识别脚本示例,用于识别目标系统的操作系统类型和版本:
nmap -O target
该命令将发送一系列探测数据包,根据响应来识别目标系统的操作系统类型和版本。
四、脚本引擎的注意事项
在使用Nmap的脚本引擎进行漏洞检测时,需要注意以下几点:
- 确认目标系统的合法性
在使用Nmap进行漏洞检测时,需要确认目标系统的合法性,避免对未经授权的系统进行扫描。
- 确认脚本的可靠性
在使用Nmap的脚本引擎进行漏洞检测时,需要确认脚本的可靠性,并对脚本进行适当的测试和验证,以确保脚本的准确性和可靠性。
- 确认漏洞的影响范围
在使用Nmap进行漏洞检测时,需要确认漏洞的影响范围,并对漏洞进行适当的评估和分类,以便进行合理的漏洞修复和管理。
总结
Nmap的脚本引擎是一款功能强大的漏洞检测工具,可以帮助安全专业人员快速发现目标系统中存在的漏洞。本文介绍了Nmap脚本引擎的基本原理、使用方法和示例,希望可以帮助读者更好地理解和应用Nmap的脚本引擎。在使用Nmap进行漏洞检测时,需要注意确认目标系统的合法性、脚本的可靠性和漏洞的影响范围,以保证漏洞检测的准确性和可靠性。
相关文章:
Nmap入门到高级【第四章】
预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…...
c++正则表达式及其使用,超级详细
文章目录 概述正则表达式语法正则表达式操作std::regex_matchstd::regex_replacestd::regex_search 实例匹配邮箱替换 HTML 标签搜索 URL 总结 概述 正则表达式是一种用于匹配字符串的工具,可以在文本中查找特定的模式,并且可以快速地对字符串进行搜索和…...

【LeetCode: 剑指 Offer II 099. 最小路径之和 | 暴力递归 | DFS =>记忆化搜索=>动态规划】
🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…...
Python OpenCV 计算机视觉:6~7
原文:OpenCV Computer Vision with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最…...

LabView中数组的使用2-1
在LabView中,数组用来管理相同类型的数据。 1 在前面板中创建数组 1.1 创建空数组 在前面板中创建数组时,首先在前面板中点击鼠标右键,弹出“控件”对话框,之后选择“新式->数组、矩阵与簇->数组”,在前面板中…...

Android 10.0 系统systemui下拉通知栏的通知布局相关源码分析
1.前言 在android10.0的系统rom开发中,在进行systemui中的下拉通知栏的布局自定义的时候,对于原生systemui的 系统的下拉通知栏的通知布局的了解也是非常重要的,接下来就来分析下相关的下拉通知栏的通知布局的相关 源码流程,了解这些才方便对通知栏的布局做修改 2.系统…...

研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型)
研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型) 变量|常量与可变性变量声明案例为什么不可变变量可变(mut关键字)变量可变(覆盖) 常量声明 数据类型标量类型整型整型字面值整型溢出问…...
接口的多继承多实现
接口的多继承多实现 目录 接口的多继承多实现多继承(接口1 extends 接口2,接口3)多实现(实现类 实现 接口1,接口2)总结1.类与类的关系2.类和接口的关系3.接口与接口的关系 多继承(接口1 extends 接口2,接口…...
腾讯-iOS面试题-答案
一面 1、介绍一下实习的项目,任务分工,做了哪些工作?介绍实习内容 2、网络相关的:项目里面使用到什么网络库,用过ASIHTTP库吗 在iOS开发中,常用的网络库包括: URLSession:苹果官方提供的网络…...
SQL Server内存架构
2. 内存架构 所谓内存架构,这里是指SQL Server实例内存管理、使用与相关逻辑设计及实现等方面内容。更具体一点,就是讲SQL Server实例分配、管理和使用其内存空间的内部机制。本书1.1节中我们已经讲过,SQL Server实例包括多个内部机制各不相同的内存区域,在此,我们将讲解…...
有哪些功能强大,但是很小众的Python库呢?
Python生态系统中有很多小众但非常强大的库,一般,通俗的规律就是,越是高端,越小众,但是,高端不代表难学,只要理论到了,用起来照样嗖嗖的,以下是一些参考的高端小众库&…...

SpringBoot设计了哪些可拓展的机制?
SpringBoot核心源码 public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { ...this.primarySources new LinkedHashSet(Arrays.asList(primarySources));// Servletthis.webApplicationType WebApplicationType.deduceFromClass…...

Layer组件多个iframe弹出层打开与关闭及参数传递
Layer官网地址:http://layer.layui.com/ 1、多个iframe弹出层(非嵌套) 1.打开iframe弹出层js代码 (1)示例一: content参数可传入要打开的页面,type参数传2,即可打开iframe类型的弹层…...

BearPi环境搭建及基本使用
这是一篇总结,一些坑的记录 具体教程请访问: BearPi-HM_Nano: 小熊派BearPi-HM Nano开发板基于HarmonyOS的源码 - Gitee.com 第一步:安装虚拟机 不做赘述 第二步:下载资源 这里要用到ubuntu的一些基础知识,不会的…...
算法笔记-换根DP
换根DP 一般是给定一棵不定根树,求以每个节点为根的一些信息。可以通过二次扫描: 第一次扫描,任选一点为根,在有根树上,自底向上转移第二次扫描,从上一次扫描的根开始,自顶向下计算 P3478 [P…...

LeetCode 785. Is Graph Bipartite【DFS,二分图】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

【微信小程序】-- 分包 - 独立分包 分包预下载(四十五)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

2.3 连续性随机变量
思维导图: 学习目标: 我会按照以下步骤学习连续型随机变量: 复习概率论的基础知识,包括概率、期望、方差等概念和公式,以及离散型随机变量的概率分布函数和概率质量函数的概念和性质。 学习连续型随机变量的概念和性…...

【DES详解】(一)处理input block(64 bits)
一、DES 加密算法总览 0-1、初识置换 IP(Initial Permutation) 输入:明文(64 bits) 过程:初识置换 输出:处理后的明文permuted input(64 bits) 首先,对需要解…...
redis笔记——三种特殊的数据结构
三种特殊数据类型 geospatial(地理位置) 用于定位,附近的人,距离计算 添加元素 geoadd key 经度 纬度 描述名称,可一次添加多个元素 127.0.0.1:6379> geoadd china:city 113.28 23.12 guangzhou (integer) 1 1…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...