Nmap全脚本使用指南!NSE脚本全详细教程!Kali Linux教程!(五)

脚本类别

discovery(发现)

346. http-enum

枚举流行的 Web 应用程序和服务器使用的目录。

这将解析与 Nikto Web 应用程序扫描器格式相似的指纹文件。但是,此脚本更进一步,内置了高级模式匹配,并且能够识别 Web 应用程序的特定版本。

您还可以使用 http-fingerprints.nikto-db-path 解析 Nikto 格式的数据库。这将尝试实时解析 nikto 数据库中定义的大多数指纹。有关此内容的更多文档,请参阅 nselib/data/http-fingerprints.lua 文件。

目前,可以在 nselib/data 文件夹中的 Nmap 目录下找到该数据库。该文件名为 http-fingerprints,文件头中有其功能的详细描述。

许多指纹都是我 (Ron Bowes) 发现的,其中许多来自 Yokoso 项目,经 Kevin Johnson (http://seclists.org/nmap-dev/2009/q3/0685.html) 许可使用。

最初,此脚本尝试访问两个不同的随机文件,以检测未返回正确 404 Not Found 状态的服务器。如果它们返回 200 OK,则主体会删除任何非静态数据(URI、时间等)并保存。如果两次随机尝试返回不同的结果,则脚本中止(因为无法区分看起来像 200 的 404 与实际的 200)。这将防止大多数误报。

此外,如果根文件夹返回 301 Moved Permanently 或 401 AuthenticationRequired,此脚本也将中止。如果根文件夹已消失或需要身份验证,则几乎没有希望在其中找到任何东西。

默认情况下,只显示返回 200 OK 或 401 AuthenticationRequired 的页面。但是,如果设置了 http-enum.displayall 脚本参数,则将显示所有结果(404 Not Found 和随机文件返回的状态代码除外)。http-fingerprints 数据库中的条目可以指定自己的标准来接受页面为有效。

http-enum.basepath

        在每个请求前面添加的基本路径。前/尾斜杠将被忽略。

http-fingerprints.nikto-db-path

        查看 nikto 数据库的给定路径。然后,它将 nikto 数据库中的记录转换为我们的 Lua 表格式,并将它们添加到我们当前的指纹中(如果它们尚不存在)。不幸的是,我们当前的实现有一些限制:* 它不支持带有多个“dontmatch”模式的探测记录。* 它不支持“match”模式的逻辑 AND。* 它不支持为探测发送额外的标头。这意味着,如果 nikto 指纹需要上述功能之一,它将不会被加载。在撰写本文时,6573 个 Nikto 指纹中的 6546 个正在成功加载。此运行时 Nikto 指纹集成由 Nikto 合著者 Chris Sullo 建议,如 http://seclists.org/nmap-dev/2013/q4/292 中所述

http-enum.displayall

        将此参数设置为显示可能指示有效页面的所有状态代码,而不仅仅是 200 OK 和 401 AuthenticationRequired 页面。虽然这更有可能找到某些隐藏文件夹,但也会产生更多的误报。

http-enum.category

        设置为类别(如指纹文件中所定义)。一些选项是“攻击”、“数据库”、“常规”、“微软”、“打印机”等。

http-enum.fingerprintfile

        指定从中读取指纹的其他文件。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sV --script=http-enum scanme.nmap.org

347. http-errors

此脚本会抓取网站并返回所有错误页面。

脚本将返回所有响应 http 代码等于或高于 400 的页面(按错误代码排序)。要更改此行为,请使用 errcodes 选项。

默认情况下,脚本会在 40 页内进行抓取和搜索。对于大型 Web 应用程序,请确保增加 httpspider 的 maxpagecount 值。请注意,脚本将变得更具侵入性。

http-errors.errcodes

        我们感兴趣的错误代码。默认值:nil(所有代码 >= 400)

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpspider 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 --script "http-errors.nse" ip/域名

http-favicon

已演示过。这里不再演示。

348. http-feed

此脚本会爬取网站以查找任何 RSS 或 Atom 源。

默认情况下,此脚本会在 40 页内进行抓取和搜索。对于大型 Web 应用程序,请确保增加 httpsspider 的 maxpagecount 值。请注意,此脚本将变得更具侵入性。

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p80 --script "http-feed.nse" scanme.nmap.org

http-generator

已演示过。这里不再演示。

349. http-gitweb-projects-enum

从 gitweb(Git 修订控制系统的 Web 界面)检索 Git 项目、所有者和描述的列表。

http-gitweb-projects-enum.path

        指定 gitweb 的位置(默认值:/)

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 www.example.com --script "http-gitweb-projects-enum"

350. http-google-malware

检查主机是否在 Google 的可疑恶意软件和钓鱼服务器黑名单中。这些列表不断更新,是 Google 安全浏览服务的一部分。

为此,脚本会查询 Google 的安全浏览服务,您需要拥有自己的 API 密钥才能访问 Google 的安全浏览查找服务。请在 http://code.google.com/apis/safebrowsing/key_signup.html 注册您的 API 密钥

要了解有关 Google 安全浏览的更多信息:

        http://code.google.com/apis/safebrowsing/

要注册并获取您的个人 API 密钥:

        http://code.google.com/apis/safebrowsing/key_signup.html

http-google-malware.url

        要检查的 URL。默认:http/https://host

http-google-malware.api

        Google 安全浏览查找服务的 API 密钥

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 --script "http-google-malware" scanme.nmap.org

351. http-grep

抓取网站并尝试将所有页面和 URL 与给定字符串进行匹配。匹配项按发现它们的 URL 进行计数和分组。

内置电子邮件、IP、SSN、Discover、Amex 等模式的功能。脚本默认搜索电子邮件和 IP。

http-grep.breakonmatch

        如果匹配单个模式类型,则返回输出。

http-grep.builtins

        提供单个或一系列内置类型。支持电子邮件、电话、万事达卡、discover、visa、amex、ssn 和 ip 地址。如果您只输入脚本参数 http-grep.builtins,则将启用所有参数。

http-grep.maxdepth

        蜘蛛的初始 URL 下的最大目录数量。负值将禁用限制。(默认值:3)

http-grep.withinhost

        仅蜘蛛同一主机内的 URL。(默认值:true)

http-grep.withindomain

        仅蜘蛛同一域内的 URL。这会扩大 withinhost 的范围,并且不能组合使用。(默认值:false)

http-grep.match

        在 URL 和页面内容中匹配的字符串或由分隔符分隔的模式列表

http-grep.maxpagecount

        要访问的最大页面数量。负值禁用限制(默认值:20)

http-grep.url

        开始抓取的 URL。这是相对于扫描主机的 URL,例如 /default.html(默认值:/)

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpsspider.maxdepth、httpsspider.maxpagecount、httpsspider.noblacklist、httpsspider.url、httpsspider.useheadfornonwebfiles、httpsspider.withindomain、httpsspider.withinhost

        请参阅 httpsspider 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

nmap -p 80 www.example.com --script "http-grep" --script-args='match="[A-Za-z0-9%.%%%+%-]+@[A-Za-z0-9%.%%%+%-]+%.%w%w%w?%w?",breakonmatch'
nmap -p 80 www.example.com --script "http-grep" --script-args 'http-grep.builtins ={"mastercard", "discover"}, http-grep.url="example.html"'

352. http-headers

对 Web 服务器的根文件夹(“/”)执行 HEAD 请求并显示返回的 HTTP 标头。

useget

        设置为强制使用 GET 请求而不是 HEAD。

path

        请求的路径,例如 /index.php。默认为 /。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sV --script=http-headers scanme.nmap.org

353. http-hp-ilo-info

尝试从 HP iLO 主板中提取信息,包括版本和地址。

HP iLO 主板在 <ip>/xmldata?item=all 处存在未经身份验证的信息泄露。它列出了主板信息,例如服务器型号、固件版本、MAC 地址、IP 地址等。此脚本使用 slaxml 库来解析 iLO xml 文件并显示信息。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "http-hp-ilo-info" -p 80 ip/域名

354. http-icloud-findmyiphone

通过查询 MobileMe 网络服务 (需要身份验证) 检索所有启用“查找我的 iPhone”的 iOS 设备的位置。

http-icloud-findmyiphone.username

        Apple Id 用户名

http-icloud-findmyiphone.password

        Apple Id 密码

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sn -Pn --script "http-icloud-findmyiphone" --script-args='username=username,password=password' ip/域名

355. http-icloud-sendmsg

通过 Apple MobileMe 网络服务向 iOS 设备发送消息。设备必须使用“查找我的 iPhone”应用程序注册 Apple ID。

http-icloud-sendmsg.username

        Apple ID 用户名

http-icloud-sendmsg.sound

        布尔值,指定在显示消息时是否应播放响亮的声音。(默认值:true)

http-icloud-sendmsg.subject

        要发送到设备的消息的主题。

http-icloud-sendmsg.message

        要发送到设备的消息正文。

http-icloud-sendmsg.deviceindex

        应将消息发送到的设备索引(@see http-icloud-sendmsg.listdevices)

http-icloud-sendmsg.password

        Apple ID 密码

http-icloud-sendmsg.listdevices

        列出由指定 Apple ID 管理的设备。

slaxml.debug

        请参阅 slaxml 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

nmap -sn -Pn --script "http-icloud-sendmsg" --script-args="username=user,password=pass,http-icloud-sendmsg.listdevices" 192.168.174.132
nmap -sn -Pn --script "http-icloud-sendmsg" --script-args="username=user,password=pass,deviceindex=1,subject='subject',message='hello world.',sound=false" 192.168.174.132

356. http-internal-ip-disclosure

确定 Web 服务器在发送不带 Host 标头的 HTTP/1.0 请求时是否泄露其内部 IP 地址。

某些配置错误的 Web 服务器在返回重定向响应时会在响应标头中泄露其内部 IP 地址。这是某些版本的 Microsoft IIS 的已知问题,但也会影响其他 Web 服务器。

http-internal-ip-disclosure.path

        URI 路径。默认值:/

sudo nmap --script "http-internal-ip-disclosure" ip/域名
sudo nmap --script "http-internal-ip-disclosure" --script-args "http-internal-ip-disclosure.path=/path" 192.168.174.129

357. http-jsonp-detection

尝试发现 Web 服务器中的 JSONP 端点。JSONP 端点可用于绕过 Web 浏览器中的同源策略限制。

该脚本在响应中搜索回调函数以检测 JSONP 端点。它还尝试通过 URL 确定回调函数(回调函数可能完全或部分可从 URL 控制),并尝试通过 URL 强行破解最常见的回调变量。

参考文献:https://securitycafe.ro/2017/01/18/practical-jsonp-injection/

http-jsonp-detection.path

        请求的 URL 路径。默认路径为“/”。

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p 80 --script "http-jsonp-detection" scanme.nmap.org

http-ls

已演示过。这里不再演示。

358. http-mcmp

检查 Web 服务器是否允许 mod_cluster 管理协议 (MCMP) 方法。

该脚本发送 MCMP PING 消息以确定协议支持,然后发出 DUMP 命令以转储 mod_cluster_manager 看到的当前配置。

参考:

        https://developer.jboss.org/wiki/Mod-ClusterManagementProtocol

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sV --script=http-mcmp ip/域名

359. http-mobileversion-checker

检查该网站是否有移动版本。

newtargets

        如果设置了此项,则将任何新发现的主机添加到 nmap 扫描队列。默认值:nil

httpspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

slaxml.debug

        请参阅 slaxml 库的文档。

max-newtargets

        请参阅目标库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

 nmap -p443 --script "http-mobileversion-checker.nse" baidu.com

http-ntlm-info

已演示过。这里不再演示。

http-open-proxy

已演示过。这里不再演示。

360. http-open-redirect

抓取网站并尝试识别开放重定向。开放重定向是通常以 URL 作为参数并以 HTTP 重定向 (3XX) 响应目标的处理程序。开放重定向的风险在 http://cwe.mitre.org/data/definitions/601.html 中进行了描述。

只有直接链接到目标网站的开放重定向才能通过这种方式发现。如果未链接开放重定向器,则不会发现它。

http-open-redirect.maxdepth

        初始 url 下要抓取的目录的最大数量。负值将禁用该限制。(默认值:3)

http-open-redirect.maxpagecount

        要访问的页面的最大数量。负值将禁用该限制(默认值:20)

http-open-redirect.url

        开始抓取的 url。这是相对于扫描主机的 URL,例如 /default.html(默认值:/)

http-open-redirect.withindomain

        仅抓取同一域内的 URL。这会扩大 withinhost 的范围,并且不能组合使用。(默认值:false)

http-open-redirect.withinhost

        仅抓取同一主机内的 URL。(默认值:true)

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

nmap --script=http-open-redirect ip/域名

361. http-php-version

尝试从 Web 服务器检索 PHP 版本。PHP 有许多魔法查询,它们会返回随 PHP 版本而变化的图像或文本。此脚本使用以下查询:

        /?=PHPE9568F36-D428-11d2-A769-00AA001ACF42:获取 GIF 徽标,该徽标会在愚人节当天发生变化。
        /?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000:获取 HTML 信用页面。

魔法查询列表位于 http://www.0php.com/php_easter_egg.php。该脚本还会检查是否有任何标头字段值以“PHP”开头,并报告该值(如果找到)。

5.5.0 之后的 PHP 版本不响应这些查询。

链接:

        http://phpsadness.com/sad/11

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sV --script=http-php-version ip/域名

362. http-put

使用 HTTP PUT 方法将本地文件上传到远程 Web 服务器。您必须使用 NSE 参数指定文件名和 URL 路径。

http-put.file

        - 应上传到服务器的本地文件的完整路径

http-put.url

        - 存储文件的远程目录和文件名,例如 (/uploads/file.txt)

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p 80 scanme.nmap.org --script "http-put" --script-args "http-put.url='/uploads/rootme.php',http-put.file='/tmp/rootme.php'"

363. http-qnap-nas-info

尝试从 QNAP 网络附加存储 (NAS) 设备检索型号、固件版本和启用的服务。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap --script "http-qnap-nas-info" ip/域名

364. http-referer-checker

告知有关跨域包含脚本的信息。包含外部 javascript 脚本的网站将其部分安全性委托给第三方实体。

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 --script "http-referer-checker.nse" scanme.nmap.org

http-robots.txt

已演示过。这里不再演示。

365. http-robtex-reverse-ip

通过查询 Robtex 服务 (https://www.robtex.com/ip-lookup/) 获取目标 IP 地址的最多 100 个正向 DNS 名称。

由于 Robtex 的 API 发生变化,*暂时禁用*。请参阅 https://www.robtex.com/api/

http-robtex-reverse-ip.host

        要查找的主机的 IPv4 地址

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "http-robtex-reverse-ip" --script-args "http-robtex-reverse-ip.host='45.33.32.156'" scanme.nmap.org

366. http-robtex-shared-ns

通过查询 http://www.robtex.com/dns/ 上的 Robtex 服务,查找最多 100 个使用与目标相同的名称服务器的域名。

目标必须通过 DNS 名称指定,而不是 IP 地址。

由于 Robtex 的 API 发生变化,*暂时禁用*。请参阅 https://www.robtex.com/api/

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap --script "http-robtex-shared-ns" scanme.nmap.org

367. http-sap-netweaver-leak

检测允许匿名访问 KM 单元导航页面的 SAP Netweaver Portal 实例。此页面泄露文件名、ldap 用户等。

启用知识管理单元的 SAP Netweaver Portal 允许未经身份验证的用户通过 URL“/irj/go/km/navigation?Uri=/”列出文件系统目录。

此问题已报告,不会修复。

参考:

        https://help.sap.com/saphelp_nw73ehp1/helpdata/en/4a/5c004250995a6ae10000000a42189b/frameset.htm

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

vulns.short、vulns.showall

        请参阅 vulns 库的文档。

nmap -p 80 --script "http-sap-netweaver-leak" ip/域名

368. http-security-headers

检查 OWASP 安全标头项目中给出的与安全性相关的 HTTP 响应标头,并简要描述标头及其配置值。

该脚本使用 http.head 向服务器请求标头,并对其进行解析以列出找到的标头及其配置。 该脚本检查 HSTS(HTTP 严格传输安全)、HPKP(HTTP 公钥密码)、X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Content-Security-Policy、X-Permitted-Cross-Domain-Policies、Set-Cookie、Expect-CT、Cache-Control、Pragma 和 Expires。

参考:https://www.owasp.org/index.php/OWASP_Secure_Headers_Project https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

http-security-headers.path

        请求的 URL 路径。默认路径为“/”。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p 80 --script "http-security-headers" ip/域名

369. http-sitemap-generator

抓取 Web 服务器并显示其目录结构以及每个文件夹中文件的数量和类型。请注意,列出的具有“其他”扩展名的文件是没有扩展名或属于根文档的文件。

http-sitemap-generator.withindomain

        仅抓取同一域内的 URL。这会扩大 withinhost 的范围,并且不能组合使用。(默认值:false)

http-sitemap-generator.maxdepth

        抓取初始 URL 下的最大目录数量。负值将禁用限制。(默认值:3)

http-sitemap-generator.maxpagecount

        访问的最大页面数量。负值将禁用限制(默认值:20)

http-sitemap-generator.url

        开始抓取的 URL。这是相对于扫描主机的 URL,例如 /default.html(默认值:/)

http-sitemap-generator.withinhost

        仅抓取同一主机内的 URL。(默认值:true)

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "http-sitemap-generator" -p 80 scanme.nmap.org

http-svn-enum

已演示过。这里不再演示。

http-svn-info

已演示过。这里不再演示。

http-title

已演示过。这里不再演示。

370. http-trace

发送 HTTP TRACE 请求并显示方法 TRACE 是否已启用。如果已启用调试,则返回响应中已修改的标头字段。

http-trace.path

        URI 路径

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "http-trace" 192.168.174.132

371. http-traceroute

利用 Max-Forwards HTTP 标头检测反向代理的存在。

该脚本的工作原理是发送 HTTP 请求,其中 Max-Forwards HTTP 标头的值从 0 到 2 不等,并检查某些响应值(例如状态代码、服务器、Content-Type 和 Content-Length HTTP 标头)和正文值(例如 HTML 标题)中是否存在任何异常。

基于以下工作:

        Nicolas Gregoire (nicolas.gregoire@agarri.fr)
        Julien Cayssol (tools@aqwz.com)

有关更多信息,请参阅:

        http://www.agarri.fr/kom/archives/2011/11/12/traceroute-like_http_scanner/index.html

http-traceroute.path

        发送请求的路径。默认为 /。

http-traceroute.method

        要使用的 HTTP 请求方法。默认为 GET。在其他值中,TRACE 可能是最有趣的。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script=http-traceroute ip/域名

372. http-trane-info

尝试从 Trane Tracer SC 设备获取信息。Trane Tracer SC 是一个智能现场面板,用于与部署在多个部门(包括商业设施和其他部门)的 HVAC 设备控制器进行通信。

信息是从向未经身份验证的用户公开敏感内容的 Web 服务器获取的。

在 Trane Tracer SC 版本 4.40.1211 及以下版本上测试。

参考:

        http://websec.mx/publicacion/blog/Scripts-de-Nmap-para-Trane-Tracer-SC-HVAC

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p80 --script "http-trane-info.nse" ip/域名

373. http-unsafe-output-escaping

爬取网站并尝试识别输出转义问题,其中内容会反射回用户。此脚本会找到所有参数 ?x=foo&y=bar,并检查这些值是否反映在页面上。如果确实反映出来,脚本将尝试插入 ghz>hzx"zxc'xcv,并检查哪些(如果有)字符在没有正确 html 转义的情况下反射回页面。这表明存在潜在的 XSS 漏洞。

http-unsafe-output-escaping.withinhost

        仅抓取同一主机内的 URL。(默认值:true)

http-unsafe-output-escaping.url

        开始抓取的 URL。这是相对于扫描主机的 URL,例如 /default.html(默认值:/)

http-unsafe-output-escaping.maxdepth

        抓取初始 URL 下的最大目录数量。负值将禁用此限制。(默认值:3)

http-unsafe-output-escaping.withindomain

        仅抓取同一域内的 URL。这会扩大 withinhost 的范围,并且不能组合使用。(默认值:false)

http-unsafe-output-escaping.maxpagecount

        访问的最大页面数量。负值将禁用此限制(默认值:20)

slaxml.debug

        请参阅 slaxml 库的文档。

httpsspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpsspider 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

nmap --script=http-unsafe-output-escaping scanme.nmap.org

374. http-useragent-tester

检查主机是否允许各种抓取实用程序。

http-useragent-tester.useragents

        包含更多 User-Agent 标头的表。默认值:nil

httpspider.doscraping、httpspider.maxdepth、httpspider.maxpagecount、httpspider.noblacklist、httpspider.url、httpspider.useheadfornonwebfiles、httpspider.withindomain、httpspider.withinhost

        请参阅 httpspider 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

slaxml.debug

        请参阅 slaxml 库的文档。

max-newtargets、newtargets

        请参阅目标库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

sudo nmap -p80 --script "http-useragent-tester.nse" ip/域名

375. http-vhosts

通过对使用常见主机名的 http 服务器发出大量 HEAD 请求来搜索 Web 虚拟主机名。

每个 HEAD 请求提供不同的 Host 标头。主机名来自内置默认列表。显示返回文档的名称。还显示重定向的位置。

域可以作为 http-vhosts.domain 参数提供,也可以从目标的名称中推断出来。例如,在扫描 www.example.com 时,将尝试各种 <name>.example.com 形式的名称。

http-vhosts.filelist

        包含要尝试的 vhosts 的文件。默认 nselib/data/vhosts-default.lst

http-vhosts.collapse

        按状态代码开始折叠结果的限制。默认 20

http-vhosts.path

        尝试检索的路径。默认 /。

http-vhosts.domain

        主机名将添加到的域,例如 example.com 产生 www.example.com、www2.example.com 等。如果未提供,则根据主机名进行猜测。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "http-vhosts" -p 80,8080,443 ip/域名

376. http-vlcstreamer-ls

连接到 VLC Streamer 辅助服务并列出目录内容。iOS VLC Streamer 应用程序使用 VLC Streamer 辅助服务将多媒体内容从远程服务器流式传输到设备。

http-vlcstreamer-ls.dir

        列出的目录(默认值:/)

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p 54340 --script "http-vlcstreamer-ls" ip/域名

377. http-waf-detect

通过使用恶意负载探测 Web 服务器并检测响应代码和正文的变化,尝试确定 Web 服务器是否受到 IPS(入侵防御系统)、IDS(入侵检测系统)或 WAF(Web 应用程序防火墙)的保护。

为此,脚本将发送“良好”请求并记录响应,之后它将此响应与包含恶意负载的新请求进行匹配。理论上,Web 应用程序不应该对恶意请求做出反应,因为我们将负载存储在脚本/文件未使用的变量中,只有 WAF/IDS/IPS 应该对其做出反应。如果设置了 aggro 模式,脚本将尝试所有攻击媒介(更嘈杂)

此脚本可以检测大量 IDS、IPS 和 WAF 产品,因为它们通常以相同的方式保护 Web 应用程序。但它不会检测不改变 http 流量的产品。结果可能因产品配置而异,但此脚本已针对以下产品的各种配置进行了测试:

        Apache ModSecurity
        Barracuda Web 应用防火墙
        PHPIDS
        dotDefender
        Imperva Web 防火墙
        Blue Coat SG 400

http-waf-detect.uri

        目标 URI。使用不会重定向到其他页面的路径

http-waf-detect.aggro

        如果设置了 aggro 模式,脚本将尝试所有攻击媒介来触发 IDS/IPS/WAF

http-waf-detect.detectBodyChanges

        如果设置,它还会检查文档正文中的更改

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 --script "http-waf-detect" ip/域名
nmap -p80 --script "http-waf-detect" --script-args="http-waf-detect.aggro,http-waf-detect.uri=/testphp.vulnweb.com/artists.php" www.modsecurity.org

378. http-waf-fingerprint

尝试检测 Web 应用程序防火墙的存在及其类型和版本。

该方法通过发送大量请求并在响应中查找已知行为和指纹(例如服务器标头、cookie 和标头值)来实现。强化模式通过发送额外的 WAF 特定请求来检测特定行为。

感谢 wafw00f 和 w3af 提供的一些指纹。

http-waf-fingerprint.root

        基本路径。默认为 /。

http-waf-fingerprint.intensive

        如果设置,将添加 WAF 特定扫描,这需要更多时间。默认情况下关闭。

slaxml.debug

        请参阅 slaxml 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

nmap --script=http-waf-fingerprint ip/域名

http-webdav-scan

已演示过。这里不再演示。

379. http-wordpress-enum

枚举 Wordpress 安装的主题和插件。该脚本还可以通过将版本号与从 api.wordpress.org 提取的信息进行比较来检测过时的插件。

该脚本使用两个单独的主题数据库 (wp-themes.lst) 和插件数据库 (wp-plugins.lst)。数据库按受欢迎程度排序,默认情况下脚本将仅搜索前 100 个条目。主题数据库有大约 32,000 个条目,而插件数据库有大约 14,000 个条目。

该脚本通过查看插件目录中的 readme.txt 文件来确定插件的版本号,并使用主题目录中的文件 style.css 来确定主题版本。如果脚本参数 check-latest 设置为 true,则脚本将查询 api.wordpress.org 以获取可用的最新版本号。由于它查询外部服务,因此默认情况下禁用此检查。

此脚本是 http-wordpress-plugins.nse 和 http-wordpress-themes.nse 的组合,最初由 Ange Gutek 和 Peter Hill 提交。

TODO:- 实现主题的版本检查。

http-wordpress-enum.type

        搜索类型。可用选项:插件、主题或全部。默认:all。

http-wordpress-enum.search-limit

        条目数或字符串“全部”。默认:100。

http-wordpress-enum.root

        基本路径。默认情况下,脚本将尝试查找 WP 目录安装或返回到“/”。

http-wordpress-enum.check-latest

        从 wordpress.org 检索最新插件版本信息。默认:false。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -sV --script "http-wordpress-enum" ip/域名
nmap --script "http-wordpress-enum" --script-args "check-latest=true,search-limit=10" ip/域名
nmap --script "http-wordpress-enum" --script-args=type="themes" ip/域名

380. http-xssed

该脚本搜索xssed.com数据库并输出结果。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p80 --script "http-xssed.nse" ip/域名

381. icap-info

测试已知 ICAP 服务名称列表并打印有关检测到的任何服务的信息。互联网内容适配协议 (ICAP) 用于扩展透明代理服务器,通常用于内容过滤和防病毒扫描。

sudo nmap -p 1344 ip/域名 --script "icap-info"

382. iec-identify

尝试识别 IEC 60870-5-104 ICS 协议。

使用 TESTFR(测试帧)消息进行探测后,将发送 STARTDT(开始数据传输)消息,并使用常规询问来收集存储的信息对象地址列表。

sudo nmap -sV --script=iec-identify 192.168.174.128

383. iec61850-mms

查询 IEC 61850-8-1 MMS 服务器。向 LN0 和 LPHD 发送发起请求、识别请求和读取请求。

输出包含以下属性:

        modelName_identify: Identify-Response attribute model_name
        vendorName_identify: Identify-Response attribute vendor_name
        modelNumber_identify: Identify-Response attribute revision
        productFamily: Read-Response attribute 'LLN0$DC$NamPlt$d'
        configuration: Read-Response attribute 'LLN0$DC$NamPlt$configRev'
        vendorName: Read-Response attribute 'LPHD$DC$PhyNam$vendor' (old: 'LLN0$DC$NamPlt$vendor')
        serialNumber: Read-Response attribute 'LPHD$DC$PhyNam$serNum'
        modelNumber: Read-Response attribute 'LPHD$DC$PhyNam$model'
        firmwareVersion: Read-Response attribute 'LPHD$DC$PhyNam$swRev' (old: 'LLN0$DC$NamPlt$swRev')

sudo nmap --script iec61850-mms.nse -p 102 ip/域名

ike-version

已演示过。这里不再演示。

imap-ntlm-info

已演示过。这里不再演示。

384. ip-forwarding

通过使用扫描主机作为默认网关向给定目标发送 ICMP 回显请求,检测远程设备是否启用了 IP 转发或“Internet 连接共享”。

给定目标可以是路由主机或 LAN 主机,并且需要能够响应 ICMP 请求 (ping) 才能使测试成功。此外,如果给定目标是路由主机,则扫描主机需要具有正确的路由才能到达该主机。

为了使用扫描主机作为默认网关,Nmap 需要发现 MAC 地址。这要求 Nmap 以特权模式运行,并且主机位于 LAN 上。

ip-forwarding.target

        响应 ICMP 回显请求 (ping) 的 LAN 或路由目标。

sudo nmap -sn scanme.nmap.org --script "ip-forwarding" --script-args='target=www.bing.com'

385. ip-geolocation-geoplugin

尝试使用 Geoplugin 地理位置网络服务 (http://www.geoplugin.com/) 识别 IP 地址的物理位置。使用此服务进行查找没有限制。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "ip-geolocation-geoplugin" scanme.nmap.org

386. ip-geolocation-ipinfodb

尝试使用 IPInfoDB 地理位置 Web 服务 (http://ipinfodb.com/ip_location_api.php) 识别 IP 地址的物理位置。

对此服务的请求没有限制。但是,需要通过免费注册此服务来获取 API 密钥:http://ipinfodb.com/login.php

ip-geolocation-ipinfodb.apikey

        指定用户想要用来访问此服务的 api-key 的字符串

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "ip-geolocation-ipinfodb" 192.168.174.132 --script-args "ip-geolocation-ipinfodb.apikey=API_key"

387. ip-geolocation-maxmind

尝试使用 Geolocation Maxmind 数据库文件(可从 http://www.maxmind.com/app/ip-location 获取)识别 IP 地址的物理位置。此脚本支持使用其 API 支持的所有 Maxmind 数据库(包括商业数据库)进行查询。

maxmind_db

        字符串表示要使用哪个文件作为 Maxmind 数据库

nmap --script "ip-geolocation-maxmind" scanme.nmap.org --script-args "ip-geolocation.maxmind_db=filename"

ip-https-discover

已演示过。这里不再演示。

388. ipidseq

对主机的 IP ID 序列进行分类(测试对空闲扫描的敏感性)。

发送六个探测以获取目标的 IP ID,并按照与 Nmap 类似的方法对其进行分类。这对于找到适合 Nmap 空闲扫描 (-sI) 的僵尸主机非常有用,因为 Nmap 本身不提供扫描这些主机的方法。

probeport

        设置要探测的目标端口

nmap --script "ipidseq" --script-args "probeport=80" ip/域名

389. ipmi-version

通过 Channel Auth 探测执行 IPMI 信息发现。

sudo nmap -sU --script "ipmi-version" -p 623 ip/域名

ipv6-multicast-mld-list

已演示过。这里不再演示。

ipv6-node-info

已演示过。这里不再演示。

390. irc-botnet-channels

检查 IRC 服务器是否存在恶意僵尸网络常用的频道。

使用 irc-botnet-channels.channels 脚本参数控制频道名称列表。默认频道列表为

        loic
        Agobot
        Slackbot
        Mytob
        Rbot
        SdBot
        poebot
        IRCBot
        VanBot
        MPack
        Storm
        GTbot
        Spybot
        Phatbot
        Wargbot
        RxBot

irc-botnet-channels.channels

        要检查的频道名称列表。

sudo nmap -p 6667 --script=irc-botnet-channels ip/域名
sudo nmap -p 6667 --script=irc-botnet-channels --script-args 'irc-botnet-channels.channels=loic,Agobot,Slackbot' ip/域名

irc-info

已演示过。这里不再演示。

iscsi-info

已演示过。这里不再演示。

391. isns-info

列出使用 Internet 存储名称服务 (iSNS) 注册的门户和 iSCSI 节点。

sudo nmap -p 3205 ip/域名 --script "isns-info"

jdwp-info

已演示过。这里不再演示。

knx-gateway-discover

已演示过。这里不再演示。

knx-gateway-info

已演示过。这里不再演示。

392. ldap-novell-getpass

通用密码可实现高级密码策略,包括密码中的扩展字符、将密码从 eDirectory 同步到其他系统以及为所有 eDirectory 访问设置单一密码。

如果密码策略允许管理员检索用户密码(密码策略中设置了“允许管理员检索密码”),则此脚本可以检索密码。

ldap-novell-getpass.password

        连接服务器时使用的 LDAP 密码

ldap-novell-getpass.account

        要检索密码的帐户名称

ldap-novell-getpass.username

        连接服务器时使用的 LDAP 用户名

nmap -p 636 --script "ldap-novell-getpass" --script-args 'ldap-novell-getpass.username="CN=admin,O=cqure",ldap-novell-getpass.password=pass1234,ldap-novell-getpass.account="CN=paka,OU=hr,O=cqure"' ip/域名

393. ldap-rootdse

检索 LDAP 根 DSA 特定条目 (DSE)

sudo nmap -p 389 --script "ldap-rootdse" ip/域名

394. ldap-search

尝试执行 LDAP 搜索并返回所有匹配项。

如果未向脚本提供用户名和密码,则会查询 Nmap 注册表。如果已选择 ldap-brute 脚本并且找到有效帐户,则将使用此帐户。如果没有,则将使用匿名绑定作为最后一次尝试。

ldap.searchattrib

        与“custom”qfilter 一起使用时,此参数与 ldap.searchvalue 配合使用,允许用户指定自定义属性和值作为搜索条件。

ldap.maxobjects

        如果设置,则覆盖脚本返回的对象数(默认为 20)。值 -1 完全取消限制。

ldap.qfilter

        如果设置,则指定快速过滤器。该库不支持解析实际 LDAP 过滤器。以下值对过滤器参数有效:computer、users、ad_dcs、custom 或 all。如果未指定任何值,则默认为 all。

ldap.attrib

        如果设置,则搜索将仅包含指定的属性。对于单个属性,可以使用字符串值,如果需要提供多个属性,则应使用表。

ldap.searchvalue

        与“custom”qfilter 一起使用时,此参数与 ldap.searchattrib 配合使用,允许用户指定自定义属性和值作为搜索条件。此参数允许使用星号“*”作为通配符。

ldap.password

        如果设置,则与用户名一起使用以向 LDAP 服务器进行身份验证

ldap.savesearch

        如果设置,脚本会将输出保存到以指定路径和名称开头的文件中。将根据所选的输出类型自动添加文件后缀 .CSV 以及主机名和端口。

ldap.username

        如果设置,脚本将尝试使用用户名和密码执行 LDAP 绑定

ldap.base

        如果设置,脚本将使用它作为搜索的基础。默认情况下,将检索并使用 defaultNamingContext。如果没有可用的 defaultNamingContext,脚本将迭代可用的 namingContext

nmap -p 389 --script "ldap-search" --script-args 'ldap.username="cn=ldaptest,cn=users,dc=cqure,dc=net",ldap.password=ldaptest,ldap.qfilter=users,ldap.attrib=sAMAccountName' ip/域名
nmap -p 389 --script "ldap-search" --script-args 'ldap.username="cn=ldaptest,cn=users,dc=cqure,dc=net",ldap.password=ldaptest,ldap.qfilter=custom,ldap.searchattrib="operatingSystem",ldap.searchvalue="Windows *Server*",ldap.attrib={operatingSystem,whencreated,OperatingSystemServicePack}' ip/域名

395. lexmark-config

从 Lexmark S300-S400 打印机检索配置信息。

Lexmark S302 以其配置响应 NTPRequest 版本探测。响应解码为 mDNS,因此请求被修改为尽可能接近 mDNS 请求。但是,在 Lexmark 的文档中,端口 (9100/udp) 被列为完全不同的东西 (HBN3)。请参阅 http://www.lexmark.com/vgn/images/portal/Security%20Features%20of%20Lexmark%20MFPs%20v1_1.pdf。

sudo nmap -sU -p 9100 --script=lexmark-config ip/域名

llmnr-resolve

已演示过。这里不再演示。

lltd-discovery

已演示过。这里不再演示。

396. membase-http-info

从 CouchBase Web 管理端口检索信息(主机名、操作系统、正常运行时间等)。此脚本检索的信息不需要任何凭据。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p 8091 ip/域名 --script "membase-http-info" 

397. memcached-info

从分布式内存对象缓存系统 memcached 检索信息(包括系统架构、进程 ID 和服务器时间)。

sudo nmap -p 11211 --script "memcached-info" ip/域名

398. mikrotik-routeros-username-brute

注意:该脚本默认是并没安装的。使用前请先安装此脚本。建议挂代理安装。

sudo wget https://svn.nmap.org/nmap/scripts/mikrotik-routeros-username-brute.nse

尝试枚举 MikroTik-RouterOS 中端口 8291 上运行 Winbox 服务的 MikroTik 设备上的有效用户名。

此脚本从用户那里获取一个单词列表,并通过向其中添加用户名来修改基线有效负载。如果服务器响应 35 个字节,则用户名无效;如果响应为 51 个字节,则用户名有效。

mikrotik-routeros-username-brute.wordlist

        包含要尝试的用户名的文件,每行一个。

sudo nmap -p 8291 --script "mikrotik-routeros-username-brute" --script-args=wordlist=wordlist ip/域名

mikrotik-routeros-version

已演示过。这里不再演示。

399. modbus-discover

枚举 SCADA Modbus 从属 ID (sid) 并收集其设备信息。

Modbus 是流行的 SCADA 协议之一。此脚本执行 Modbus 设备信息披露。它尝试查找 Modbus 设备的合法 sid(从属 ID)并获取有关供应商和固件的其他信息。此脚本是 Mark Bristow 编写的 modscan python 实用程序的改进版。

有关 MODBUS 协议和安全问题的信息:

        MODBUS 应用协议规范:http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
        Defcon 16 Modscan 演示文稿:https://www.defcon.org/images/defcon-16/dc16-presentations/defcon-16-bristow.pdf
        Modscan 实用程序托管在 google code 上:http://code.google.com/p/modscan/

aggressive

        - 布尔值定义查找全部或仅查找第一个 sid

sudo nmap --script "modbus-discover.nse" --script-args='modbus-discover.aggressive=true' -p 502 ip/域名

mongodb-databases

已演示过。这里不再演示。

mongodb-info

已演示过。这里不再演示。

400. mqtt-subscribe

转储来自 MQTT 代理的消息流量。

此脚本建立与 MQTT 代理的连接并订阅所请求的主题。已选择默认主题来接收系统信息和来自其他客户端的所有消息。这允许 Nmap 监听客户端发布到 MQTT 代理的所有消息。

有关更多信息:

        https://en.wikipedia.org/wiki/MQTT
        https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

mqtt-subscribe.protocol-name

        MQTT 协议名称,默认为 MQTT。

mqtt-subscribe.listen-msgs

        要接收的 PUBLISH 消息数,默认为 100。值为零时,仅在侦听时间已过时强制此脚本停止。

mqtt-subscribe.username

        需要身份验证的 MQTT 代理的用户名。

mqtt-subscribe.protocol-level

        MQTT 协议级别,默认为 4。

mqtt-subscribe.topic

        主题过滤器,用于指示我们希望接收哪些 PUBLISH 消息。

mqtt-subscribe.password

        需要身份验证的 MQTT 代理的密码。

mqtt-subscribe.listen-time

        侦听 PUBLISH 消息的时间长度,默认为 5 秒。值为零时,仅在收到 listen-msgs PUBLISH 消息时强制此脚本停止。

mqtt-subscribe.client-id

        MQTT 客户端标识符,默认为 nmap,后缀为随机。

nmap -p 1883 --script "mqtt-subscribe" ip/域名

mrinfo

已演示过。这里不再演示。

401. ms-sql-config

查询 Microsoft SQL Server (ms-sql) 实例以获取数据库、链接服务器和配置设置的列表。

是否需要 SQL Server 凭据:是(使用 ms-sql-brute、ms-sql-empty-password 和/或 mssql.username 和 mssql.password)运行条件:

        主机脚本:如果使用 mssql.instance-all、mssql.instance-name

或 mssql.instance-port 脚本参数,则将运行(请参阅 mssql.lua)。

        端口脚本:将针对任何标识为 SQL Server 的服务运行,但仅当未使用 mssql.instance-all、mssql.instance-name 和 mssql.instance-port 脚本参数时才运行。

注意:通过命名管道与实例的通信取决于 smb 库。要通过命名管道与实例通信(并可能发现实例),主机必须至少有一个经过扫描并发现打开的 SMB 端口(例如 TCP 445)。此外,除了连接到 SQL Server 实例本身所需的身份验证之外,命名管道连接可能还需要 Windows 身份验证才能连接到 Windows 主机(通过 SMB)。有关更多信息,请参阅 smb 库的文档和参数。

注意:默认情况下,ms-sql-* 脚本可能会尝试连接到 Nmap 扫描的端口列表中未包含的端口并与之通信。可以使用 mssql.scanned-ports-only 脚本参数禁用此功能。

ms-sql-config.showall

        如果设置,则显示所有配置选项。

mssql.domain、mssql.instance-all、mssql.instance-name、mssql.instance-port、mssql.password、mssql.protocol、mssql.scanned-ports-only、mssql.timeout、mssql.username

        请参阅 mssql 库的文档。

randomseed、smbbasic、smbport、smbsign

        请参阅 smb 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p 1433 --script "ms-sql-config" --script-args "mssql.username=sa,mssql.password=sa" ip/域名

402. ms-sql-dac

查询 Microsoft SQL Browser 服务以获取给定(或所有)SQL Server 实例的 DAC(专用管理连接)端口。DAC 端口用于在正常连接尝试失败时连接到数据库实例,例如,当服务器挂起、内存不足或处于其他不良状态时。此外,DAC 端口还为管理员提供对系统对象的访问权限,否则无法通过正常连接访问。

默认情况下,DAC 功能可在环回适配器上访问,但可以通过将“远程管理连接”配置值设置为 1 来激活远程访问。在某些情况下,当 DAC 已远程启用但后来被禁用时,sql 浏览器服务可能会错误地将其报告为可用。因此,脚本会尝试连接到报告的端口以验证它是否可访问。

mssql.domain、mssql.instance-all、mssql.instance-name、mssql.instance-port、mssql.password、mssql.protocol、mssql.scanned-ports-only、mssql.timeout、mssql.username

        请参阅 mssql 库的文档。

randomseed、smbbasic、smbport、smbsign

        请参阅 smb 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -sU -p 1434 --script "ms-sql-dac" ip/域名

ms-sql-dump-hashes

已演示过。这里不再演示。

ms-sql-hasdbaccess

已演示过。这里不再演示。

ms-sql-info

已演示过。这里不再演示。

ms-sql-ntlm-info

已演示过。这里不再演示。

403. ms-sql-query

针对 Microsoft SQL Server (ms-sql) 运行查询。

是否需要 SQL Server 凭据:是(使用 ms-sql-brute、ms-sql-empty-password 和/或 mssql.username 和 mssql.password)运行条件:

        主机脚本:如果使用 mssql.instance-all、mssql.instance-name

或 mssql.instance-port 脚本参数,则将运行(请参阅 mssql.lua)。

        端口脚本:将针对任何被标识为 SQL Server 的服务运行,但仅当未使用 mssql.instance-all、mssql.instance-name 和 mssql.instance-port 脚本参数时才会运行。

注意:通过命名管道与实例通信取决于 smb 库。要通过命名管道与实例通信(并可能发现实例),主机必须至少有一个经过扫描并发现打开的 SMB 端口(例如 TCP 445)。此外,除了连接到 SQL Server 实例本身所需的身份验证之外,命名管道连接可能还需要 Windows 身份验证才能连接到 Windows 主机(通过 SMB)。有关更多信息,请参阅 smb 库的文档和参数。

注意:默认情况下,ms-sql-* 脚本可能会尝试连接到 Nmap 扫描的端口列表中未包含的端口并与之通信。可以使用 mssql.scanned-ports-only 脚本参数禁用此功能。

mssql.database

        要连接的数据库(默认值:tempdb)

ms-sql-query.query

        要针对服务器运行的查询。(默认值:SELECT @@version version)

mssql.domain、mssql.instance-all、mssql.instance-name、mssql.instance-port、mssql.password、mssql.protocol、mssql.scanned-ports-only、mssql.timeout、mssql.username

        请参阅 mssql 库的文档。

randomseed、smbbasic、smbport、smbsign

        请参阅 smb 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p 1433 --script "ms-sql-query" --script-args=mssql.username=sa,mssql.password=sa,ms-sql-query.query="SELECT * FROM master..syslogins" ip/域名

404. ms-sql-tables

查询 Microsoft SQL Server (ms-sql) 以获取每个数据库的表列表。

需要 SQL Server 凭据:是(使用 ms-sql-brute、ms-sql-empty-password 和/或 mssql.username 和 mssql.password)运行条件:

        主机脚本:如果使用 mssql.instance-all、mssql.instance-name

或 mssql.instance-port 脚本参数,则将运行(请参阅 mssql.lua)。

        端口脚本:将针对任何标识为 SQL Server 的服务运行,但仅当未使用 mssql.instance-all、mssql.instance-name 和 mssql.instance-port 脚本参数时才运行。

sysdatabase 表应该几乎可供所有人访问。

一旦我们有了数据库列表,我们就会对其进行迭代并尝试提取表名。为了成功完成此操作,我们需要具有 sysadmin 权限或有权访问数据库的帐户。因此,我们成功枚举的每个数据库的表都标记为已完成,然后遍历已知用户帐户,直到我们用尽所有用户或找到所有数据库中的所有表。

系统数据库被排除在外。

注意:通过命名管道与实例通信取决于 smb 库。要通过命名管道与实例通信(并可能发现实例),主机必须至少有一个经过扫描并发现打开的 SMB 端口(例如 TCP 445)。此外,除了连接到 SQL Server 实例本身所需的身份验证之外,命名管道连接可能还需要 Windows 身份验证才能连接到 Windows 主机(通过 SMB)。有关更多信息,请参阅 smb 库的文档和参数。

注意:默认情况下,ms-sql-* 脚本可能会尝试连接到 Nmap 扫描的端口列表中未包含的端口并与之通信。可以使用 mssql.scanned-ports-only 脚本参数禁用此功能。

ms-sql-tables.keywords

        如果设置,则仅显示与关键字匹配的表或列

ms-sql-tables.maxdb

        限制处理和返回的数据库数量(默认为 5)。如果设置为零或更少,则处理所有数据库。

ms-sql-tables.maxtables

        限制返回的表数量(默认为 5)。如果设置为零或更少,则返回所有表。

mssql.domain、mssql.instance-all、mssql.instance-name、mssql.instance-port、mssql.password、mssql.protocol、mssql.scanned-ports-only、mssql.timeout、mssql.username

        请参阅 mssql 库的文档。

randomseed、smbbasic、smbport、smbsign

        请参阅 smb 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap -p 1433 --script "ms-sql-tables" --script-args "mssql.username=sa,mssql.password=sa" ip/域名

405. msrpc-enum

查询 MSRPC 端点映射器以获取映射服务列表并显示收集的信息。

由于它使用 smb 库,因此您可以指定要使用的可选用户名和密码。

脚本的工作原理与 Microsoft 的 rpcdump 工具或 SPIKE fuzzer 的 dcedump 工具非常相似。

randomseed、smbbasic、smbport、smbsign

        请参阅 smb 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap 192.168.174.129 --script=msrpc-enum

mtrace

已演示过。这里不再演示。

multicast-profinet-discovery

已演示过。这里不再演示。

406. mysql-audit

根据 CIS MySQL v1.0.2 基准的部分内容审核 MySQL 数据库服务器安全配置(通过创建适当的审计文件,该引擎可用于其他 MySQL 审计)。

mysql-audit.password

        用于连接数据库的密码

mysql-audit.username

        用于连接数据库的用户名

mysql-audit.filename

        包含审计规则库的文件的名称,默认为“mysql-cis.audit”

nmap -p 3306 --script "mysql-audit" --script-args "mysql-audit.username='root',mysql-audit.password='',mysql-audit.filename='nselib/data/mysql-cis.audit'" 192.168.174.132

407. mysql-databases

尝试列出 MySQL 服务器上的所有数据库。

mysqluser

        用于身份验证的用户名。如果未设置,它会尝试使用 mysql-brute 或 mysql-empty-password 找到的凭据。

mysqlpass

        用于身份验证的密码。如果未设置,它会尝试使用 mysql-brute 或 mysql-empty-password 找到的凭据。

nmap -sV --script=mysql-databases --script-args "mysql-databases.mysqluser='root',mysql-databases.mysqlpass=''" -p3306 192.168.174.132

mysql-dump-hashes

已演示过。这里不再演示。

mysql-info

已演示过。这里不再演示。

mysql-query

已演示过。这里不再演示。

408. mysql-variables

尝试显示 MySQL 服务器上的所有变量。

mysqluser

        用于身份验证的用户名。如果未设置,它会尝试使用 mysql-brute 或 mysql-empty-password 找到的凭据。

mysqlpass

        用于身份验证的密码。如果未设置,它会尝试使用 mysql-brute 或 mysql-empty-password 找到的凭据。

nmap -sV --script=mysql-variables --script-args=mysqluser=root,mysqlpass= -p3306 192.168.174.132

409. mysql-vuln-cve2012-2122

尝试利用 CVE2012-2122 绕过 MySQL 和 MariaDB 服务器中的身份验证。如果存在漏洞,它还会尝试转储 MySQL 用户名和密码哈希值。

5.1.61、5.2.11、5.3.5、5.5.22 之前的所有 MariaDB 和 MySQL 版本都存在漏洞,但漏洞利用取决于 memcmp() 是否返回 -128..127 范围之外的任意整数。

“当用户连接到 MariaDB/MySQL 时,会计算一个令牌(SHA 密码和随机加密字符串)并将其与预期值进行比较。由于转换不正确,即使 memcmp() 返回非零值,令牌和预期值也可能被视为相等。在这种情况下,MySQL/MariaDB 会认为密码正确,即使它不正确。由于协议使用随机字符串,因此遇到此错误的概率约为 1/256。这意味着,如果知道要连接的用户名(并且“root”几乎总是存在),她可以通过重复连接尝试使用 *任何* 密码进行连接。~300 次尝试仅需几分之一秒,因此基本上帐户密码保护与不存在一样好。”

原始公开咨询:

        http://seclists.org/oss-sec/2012/q2/493

关于此漏洞的有趣帖子:

        https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql

mysql-vuln-cve2012-2122.pass

        MySQL 密码。默认值:nmapFTW。

mysql-vuln-cve2012-2122.user

        MySQL 用户名。默认值:root。

mysql-vuln-cve2012-2122.iterations

        连接重试次数。默认值:1500。

mysql-vuln-cve2012-2122.socket_timeout

        套接字超时。默认值:5 秒。

vulns.short, vulns.showall

        请参阅 vulns 库的文档。

sudo nmap -p3306 --script "mysql-vuln-cve2012-2122" 192.168.174.132

nat-pmp-info

已演示过。这里不再演示。

410. nat-pmp-mapport

使用 NAT 端口映射协议 (NAT-PMP) 将路由器上的 WAN 端口映射到客户端上的本地端口。它支持以下操作:

        map(映射) - 将路由器上的新外部端口映射到请求 IP 的内部端口
        unmap(取消映射) - 取消映射请求 IP 的先前映射端口
        unmapall(取消映射所有) - 取消映射请求 IP 的所有先前映射端口

nat-pmp-mapport.op

        操作,可以是 map、unmap 或 unmap all o map 允许您将外部端口映射到调用 IP 的内部端口 o unmap 删除指定端口和协议的外部端口映射 o unmapall 删除指定协议和调用 IP 的所有映射

nat-pmp-mapport.protocol

        要映射的协议,可以是 tcp 或 udp。

nat-pmp-mapport.privport

        将请求映射到的调用 IP 的内部端口。此端口将接收进入路由器上外部端口的所有请求。

nat-pmp-mapport.pubport

        要在路由器上映射的外部端口。指定的端口被视为请求的端口。如果端口可用,它将分配给调用者,否则路由器将简单地选择另一个端口,创建映射并返回结果端口。

nat-pmp-mapport.lifetime

        映射的生命周期(以秒为单位)(默认值:3600)

sudo nmap -sU -p 5351 ip/域名 --script "nat-pmp-mapport" --script-args='op=map,pubport=8080,privport=8080,protocol=tcp'
sudo nmap -sU -p 5351 188.114.216.92 --script "nat-pmp-mapport" --script-args='op=unmap,pubport=8080,privport=8080,protocol=tcp'
sudo nmap -sU -p 5351 188.114.216.92 --script "nat-pmp-mapport" --script-args='op=unmapall,protocol=tcp'

411. nbd-info

显示来自 NBD 服务器的协议和块设备信息。

网络块设备协议用于通过 TCP 发布块设备。此脚本连接到 NBD 服务器并尝试拉取导出的块设备列表及其详细信息

有关更多信息:

        https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md

nbd-info.export_names

        可以是单个名称,也可以是用于向服务器请求信息的名称表。

sudo nmap -p 10809 --script "nbd-info" ip/域名

nbns-interfaces

已演示过。这里不再演示。

nbstat

已演示过。这里不再演示。

ncp-serverinfo

已演示过。这里不再演示。

412. ndmp-fs-info

通过使用网络数据管理协议 (ndmp) 查询远程设备来列出远程文件系统。NDMP 是一种用于在 NAS 设备和备份设备之间传输数据的协议,无需数据通过备份服务器。已知以下产品支持该协议:

        Amanda
        Bacula
        CA Arcserve
        CommVault Simpana
        EMC Networker
        Hitachi Data Systems
        IBM Tivoli
        Quest Software Netvault Backup
        Symantec Netbackup
        Symantec Backup Exec

nmap -p 10000 --script "ndmp-fs-info" ip/域名

netbus-info

已演示过。这里不再演示。

413. nfs-ls

尝试从 NFS 导出中获取有关文件的有用信息。输出旨在类似于 ls 的输出。

脚本首先枚举并挂载远程 NFS 导出。之后,它对每个挂载点执行 NFS GETATTR 过程调用以获取其 ACL。对于每个挂载目录,脚本将尝试列出其文件条目及其属性。

由于结果中显示的文件属性是 GETATTR、READDIRPLUS 和类似过程的结果,因此这些属性是本地文件系统的属性。

这些访问权限仅在 NFSv3 中显示:

        Read(读取):从文件读取数据或读取目录。
        Lookup(查找):在目录中查找名称(对非目录对象无意义)。
        Modify(修改):重写现有文件数据或修改现有目录条目。
        Extend(扩展):写入新数据或添加目录条目。
        Delete(删除):删除现有目录条目。
        Execute(执行):执行文件(对目录无意义)。

递归列表尚未实现。

nfs-ls.time

        指定在文件属性输出中使用哪个最后的 mac 时间。可能的值包括:

        m:最后修改时间 (mtime)
        a:最后访问时间 (atime)
        c:最后更改时间 (ctime)

        默认值为 m (mtime)。

nfs.version

        要使用的 NFS 协议版本

mount.version、rpc.protocol

        请参阅 rpc 库的文档。

ls.checksum、ls.empty、ls.errors、ls.human、ls.maxdepth、ls.maxfiles

        请参阅 ls 库的文档。

nmap -p 111 --script=nfs-ls ip/域名

414. nfs-showmount

显示 NFS 导出,如 showmount -e 命令。

mount.version、nfs.version、rpc.protocol

        请参阅 rpc 库的文档。

nmap -sV --script=nfs-showmount ip/域名

415. nfs-statfs

从远程 NFS 共享检索磁盘空间统计信息和信息。输出类似于 df 的输出。

如果使用的版本是 NFSv3,则脚本将提供远程 NFS 的 pathconf 信息。

nfs-statfs.human

        如果设置为 1 或 true,则以人类可读的格式显示文件大小,并带有 KB 和 MB 等后缀。

mount.version、nfs.version、rpc.protocol

        请参阅 rpc 库的文档。

nmap -p 111 --script=nfs-statfs ip/域名

nntp-ntlm-info

已演示过。这里不再演示。

416. nrpe-enum

查询 Nagios 远程插件执行器 (NRPE) 守护进程以获取信息,例如平均负载、进程计数、登录用户信息等。

此脚本尝试执行已启用的命令的库存列表。不支持用户提供的参数。

nrpe-enum.cmds

        要执行的命令的冒号分隔列表。

sudo nmap --script "nrpe-enum" -p 5666 ip/域名

ntp-info

已演示过。这里不再演示。

417. ntp-monlist

获取并打印 NTP 服务器的监控数据。

监控数据是与目标具有 NTP 关联的最近使用 (MRU) 的列表。每条记录都包含有关主机向目标发送的最新 NTP 数据包的信息,包括源地址和目标地址以及数据包的 NTP 版本和模式。利用此信息可以将关联主机分类为服务器、对等体和客户端。

还会向目标发送对等体命令,响应中的对等体列表允许区分配置的模式 1 对等体和充当对等体的客户端(例如 Windows W32Time 服务)。

关联主机进一步分为公共主机或私有主机。私有主机的 IP 地址在公共 Internet 上不可路由,因此可以帮助了解目标所在的私有网络的拓扑结构。

monlist 和 peers 命令显示的其他信息包括目标时钟与之同步的主机以及向目标发送控制模式 (6) 和私有模式 (7) 命令的主机,管理员可以使用这些主机来提供 NTP 服务。

应该注意的是,NTP 监控数据的本质意味着此脚本发送的模式 7 命令由目标记录(并且经常出现在这些结果中)。由于监控数据是 MRU 列表,因此您很可能通过发送看似无害的客户端模式请求来覆盖模式 7 命令的记录。这可以使用 Nmap 轻松实现:nmap -sU -pU:123 -Pn -n --max-retries=0 <target>

注意:

        响应 monlist 命令的监控列表限制为 600 个关联。
        目标上可能未启用监控功能,在这种情况下您可能会收到错误编号 4(无可用数据)。
        可能对谁可以执行模式 7 命令有所限制(例如 ntp.conf 中的“restrict noquery”),在这种情况下您可能不会收到回复。
        此脚本不处理身份验证,需要身份验证信息的目标可能会响应错误编号 3(格式错误)。

sudo nmap -sU -pU:123 -Pn -n --script=ntp-monlist ip/域名

418. omp2-enum-targets

尝试从 OpenVAS 管理器服务器检索目标系统和网络列表。

该脚本使用提供的或之前破解的凭据在管理器上进行身份验证,并获取每个帐户定义的目标列表。

如果设置了 newtargets 全局变量,这些目标将被添加到扫描队列中。

max-newtargets,newtargets

        请参阅目标库的文档。

omp2.password,omp2.username

        请参阅 omp2 库的文档。

nmap -p 9390 --script "omp2-brute,omp2-enum-targets" ip/域名
nmap -p 9390 --script "omp2-enum-targets" --script-args "omp2.username=admin,omp2.password=secret" ip/域名

419. omron-info

此 NSE 脚本用于将 FINS 数据包发送到远程设备。脚本将发送控制器数据读取命令,一旦收到响应,它将验证该响应是否正确响应所发送的命令,然后解析数据。

sudo nmap --script "omron-info" -sU -p 9600 ip/域名

openlookup-info

已演示过。这里不再演示。

420. openwebnet-discovery

OpenWebNet 是 Bticino 自 2000 年以来开发的通信协议。检索设备识别信息和连接设备的数量。

参考文献:

        https://www.myopen-legrandgroup.com/solution-gallery/openwebnet/
        http://www.pimyhome.org/wiki/index.php/OWN_OpenWebNet_Language_Reference

sudo nmap --script "openwebnet-discovery" 192.168.174.129

421. path-mtu

对目标主机执行简单的路径 MTU 发现。

TCP 或 UDP 数据包被发送到主机,并设置了 DF(不分段)位,且数据量各不相同。如果收到 ICMP 需要分段,或者在重新传输后未收到回复,则数据量会降低并发送另一个数据包。此过程持续到(假设没有发生错误)收到来自最终主机的回复,表明数据包到达主机时没有分段。

不会尝试所有 MTU,以免花费太多时间或网络资源。目前,要尝试的 MTU 相对较短的列表包含 RFC 1191“路径 MTU 发现”中表 7-1 中的稳定值。使用这些值可以显著减少 MTU 搜索空间。最重要的是,这个列表很少被完整地遍历,因为:

        传出接口的 MTU 被用作起点,并且
        当中间路由器发送“无法分段”消息时,我们可以跳转到列表下方,其中包含其下一跳 MTU(如 RFC 1191 中所述,并由 RFC 1812 要求)

sudo nmap --script "path-mtu" 192.168.174.128

422. pcworx-info

此 NSE 脚本将查询并解析远程 PLC 的 pcworx 协议。脚本将发送初始请求数据包,一旦收到响应,它将验证它是否是对所发送命令的正确响应,然后将解析出数据。PCWorx 是 Phoenix Contact 的协议和程序。

http://digitalbond.com

sudo nmap --script "pcworx-info" -p 1962 ip/域名

pop3-capabilities

已演示过。这里不再演示。

pop3-ntlm-info

已演示过。这里不再演示。

423. profinet-cm-lookup

向 PROFINET 设备发送 DCERPC EPM 查找请求。针对 Profinet 设备的 DCE/RPC 端点映射器 (EPM)。

Profinet 设备支持端口 34964 下基于 udp 的 PNIO-CM 协议。PNIO-CM 使用 DCE/RPC 作为其底层协议。

Profinet 设备支持 UUID 变体“dea00001-6c97-11d1-8271-00a02442df7d”下的 DCE/RPC UUID 实体。此脚本发送此 UUID 的查找请求。

参考:

        https://rt-labs.com/docs/p-net/profinet_details.html#dce-rpc-uuid-entities
        https://wiki.wireshark.org/EPM

sudo nmap -sU ip/域名 -p 34964 --script "profinet-cm-lookup"

424. qscan

反复探测主机上的开放和/或关闭端口,以获取每个端口的一系列往返时间值。这些值用于对统计上与其他组不同的端口集合进行分组。端口位于不同的组(或“系列”)可能是由于网络机制(例如端口转发到 NAT 后面的机器)造成的。

为了将这些端口分组到不同的系列中,必须计算一些统计值。这些值包括每个端口往返时间的平均值和标准差。记录完所有时间并计算出这些值后,使用 Student's t 检验来测试每个端口数据之间差异的统计显著性。具有统计上相同的往返时间的端口被分组在同一系列中。

此脚本基于 Doug Hoyte 的 Qscan 文档和 Nmap 补丁。

numclosed

        探测的最大关闭端口数(默认值为 1)。负数表示禁用限制。

numopen

        探测的最大打开端口数(默认值为 8)。负数表示禁用限制。

confidence

        置信度:0.75、0.9、0.95、0.975、0.99、0.995 或 0.9995。

numtrips

        尝试获取的往返次数。

delay

        数据包发送之间的平均延迟。这是一个数字,后跟 ms(表示毫秒)或 s(表示秒)。(m 和 h 也受支持,但对于超时来说太长了。)实际延迟将在指定时间的 50% 到 150% 之间随机变化。默认值:200ms。

nmap --script "qscan" --script-args "qscan.confidence=0.95,qscan.delay=200ms,qscan.numtrips=10" scanme.nmap.org

quake1-info

已演示过。这里不再演示。

quake3-info

已演示过。这里不再演示。

quake3-master-getservers

已演示过。这里不再演示。

425. rdp-enum-encryption

确定 RDP 服务支持哪个安全层和加密级别。它通过循环遍历所有现有协议和密码来实现这一点。在调试模式下运行时,脚本还会返回失败的协议和密码以及报告的任何错误。

该脚本的灵感来自 MWR 的 RDP 密码检查器 http://labs.mwrinfosecurity.com/tools/2009/01/12/rdp-cipher-checker/

sudo nmap -p 3389 --script "rdp-enum-encryption" ip/域名

rdp-ntlm-info

已演示过。这里不再演示。

426. redis-info

从 Redis 键值存储中检索信息(例如版本号和架构)。

creds.[service], creds.global

        请参阅 creds 库的文档。

sudo nmap -p 6379 ip/域名 --script "redis-info"

427. resolveall

注意:此脚本已被 Nmap 7.70 中的 --resolve-all 命令行选项取代

解析主机名并将每个地址(IPv4 或 IPv6,取决于 Nmap 模式)添加到 Nmap 的目标列表中。这与 Nmap 的正常主机解析过程不同,后者仅扫描每个主机名返回的第一个地址(A 或 AAAA 记录)。

该脚本将在主机名提供的任何目标上运行。它也可以通过 resolveall.hosts 参数输入主机名。由于它通过 IP 地址添加新目标,因此它不会递归运行,因为这些新目标不是由主机名提供的。它也不会添加最初由 Nmap 选择扫描的相同 IP。

resolveall.hosts

        要解析的主机名表

max-newtargets,newtargets

        请参阅目标库的文档。

sudo nmap --script=resolveall --script-args=newtargets,resolveall.hosts={192.168.174.132,192.168.174.128}
sudo nmap --script=resolveall ip/域名

428. rfc868-time

从时间服务检索日期和时间。

sudo nmap -sV --script "rfc868-time" -p37 ip/域名

429. riak-http-info

使用 HTTP 协议从 Basho Riak 分布式数据库检索信息(例如节点名称和架构)。

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

sudo nmap -p 8098 ip/域名 --script "riak-http-info"

rmi-dumpregistry

已演示过。这里不再演示。

430. rpcap-info

连接到 rpcap 服务(通过 WinPcap 提供远程嗅探功能)并检索接口信息。该服务可以设置为需要身份验证或不需要身份验证,还支持 IP 限制。

creds.rpcap

        用于身份验证的用户名:密码

creds.[service], creds.global

        请参阅 creds 库的文档。

sudo nmap -p 2002 ip/域名 --script "rpcap-info
sudo nmap -p 2002 ip/域名 --script "rpcap-info" --script-args="creds.rpcap='administrator:foobar'"

rpcinfo

已演示过。这里不再演示。

431. rsync-list-modules

列出可用于 rsync(远程文件同步)同步的模块。

sudo nmap -p 873 --script "rsync-list-modules" ip/域名

432. rusers

连接到 rusersd RPC 服务并检索已登录用户的列表。

mount.version、nfs.version、rpc.protocol

        请参阅 rpc 库的文档。

nmap -sV --script=rusers 192.168.174.132

433. s7-info

枚举西门子 S7 PLC 设备并收集其设备信息。此脚本基于 Positive Research 和 Scadastrangelove 开发的 PLCScan(https://code.google.com/p/plcscan/)。此脚本旨在提供与 Nmap 内部的 PLCScan 相同的功能。PLCScan 收集的部分信息未移植;这些信息可以从收到的数据包中解析出来。

感谢 Positive Research 和 Dmitry Efanov 创建 PLCScan

sudo nmap --script "s7-info.nse" -p 102 ip/域名

servicetags

已演示过。这里不再演示。

434. shodan-api

查询给定目标的 Shodan API,并产生与 -sV nmap 扫描类似的输出。ShodanAPI 密钥可以使用“apikey”脚本参数设置,也可以硬编码在 .nse 文件本身中。您可以从 https://developer.shodan.io 获取免费密钥

注意:如果您希望此脚本完全被动运行,请确保包含 -sn -Pn -n 标志。

shodan-api.target

        指定要扫描的单个目标。

shodan-api.apikey

        指定 ShodanAPI 密钥。这也可以在 nse 文件中硬编码。

shodan-api.outfile

        将结果写入指定的 CSV 文件

slaxml.debug

        请参阅 slaxml 库的文档。

http.host、http.max-body-size、http.max-cache-size、http.max-pipeline、http.pipeline、http.truncated-ok、http.useragent

        请参阅 http 库的文档。

smbdomain、smbhash、smbnoguest、smbpassword、smbtype、smbusername

        请参阅 smbauth 库的文档。

nmap --script "shodan-api" scanme.nmap.org -sn -Pn -n --script-args 'shodan-api.outfile=potato.csv,shodan-api.apikey=apikey'
nmap --script "shodan-api" --script-args 'shodan-api.target=192.168.174.132,shodan-api.apikey=apikey'

435. sip-call-spoof

欺骗对 SIP 电话的呼叫并检测目标采取的操作(忙碌、拒绝、挂断等)

这通过向目标电话发送虚假的 SIP 邀请请求并检查响应来实现。状态代码为 180 的响应表示电话正在响铃。脚本等待下一个响应,直到达到超时或收到特殊响应。特殊响应包括:忙碌 (486)、拒绝 (603)、超时 (408) 或挂断 (200)。

sip-call-spoof.from

        呼叫者用户 ID。默认为 Home。

sip-call-spoof.extension

        发送请求的 SIP 扩展。默认为 100。

sip-call-spoof.ua

        源应用程序的用户代理。默认为 Ekiga。

sip-call-spoof.timeout

        等待响应的时间。默认为 5 秒

sip-call-spoof.src

        要欺骗的源地址。

sip.timeout

        请参阅 sip 库的文档。

sudo nmap --script=sip-call-spoof -sU -p 5060 ip/域名
sudo nmap --script=sip-call-spoof -sU -p 5060 --script-args 'sip-call-spoof.ua=Nmap, sip-call-spoof.from=Boss' ip/域名

由于篇幅有限,请看下一章教程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值