第八章(二)—漏洞扫描(nmap脚本使用)

本文深入探讨Nmap脚本的使用,特别是漏洞扫描(vuln)分类下的脚本,涵盖500多种不同功能的脚本。文章介绍了如何使用特定脚本,如smb-vuln-ms10-061.nse,来探测目标系统中的共享打印机漏洞,以及如何结合smb-enum-shares.nse脚本来增强漏洞发现能力。同时,还讲解了Nmap的并发机制、错误处理及漏洞报告的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nmap脚本

nmap扫描脚本,默认集成500多个脚本,这些脚本是有分类的,每个脚本所做的工作是不同方面的。
在这里插入图片描述

/usr/share/nmap/scripts/   #nmap的脚本都在该目录下存放
cat script.db
less script.db | grep vuln | wc -l #查看nmap中有多少个关于弱点vuln的脚本

每个脚本后面都有一个分类categories,后面的参数内容描述了该脚本属于哪些分类
在这里插入图片描述
在这里插入图片描述

nmap漏洞扫描

NSE漏洞扫描的优势:

可以使用Nmap API来完成对扫描过程中收集信息的处理
NSE脚本可以在执行过程中和其他脚本共享获得的信息
NSE中提供了大量网络协议库的组件
NSE中提供了漏洞库文件,利用漏洞库文件可以创建一份优秀的漏洞报告
NSE中提供了强大的并发机制和错误处理机制

如果想要使用这个分类下的所有脚本,可以在–script的后面加上分类名称,同样我们可以用相似的方法来提高目标版本的检测功能,以及将目标端口设置为全部有效端口。

nmap -p- -sV --version-all --script vuln 192.168.126.131

如果我们想得到详细的信息,可以使用参数vuln.showall显示全部内容

#常用的nse分类如下:
auth: 负责处理鉴权证书(绕开鉴权)的脚本  
broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务  
brute: 提供暴力破解方式,针对常见的应用如http/snmp等  
default: 使用-sC-A选项扫描时候默认的脚本,提供基本脚本扫描能力  
discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等  
dos: 用于进行拒绝服务攻击  
exploit: 利用已知的漏洞入侵系统  
external: 利用第三方的数据库或资源,例如进行whois解析  
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽  
malware: 探测目标机是否感染了病毒、开启了后门等信息  
safe: 此类与intrusive相反,属于安全性脚本  
version: 负责增强服务与版本扫描(Version Detection)功能的脚本  
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

-p- 指的是将目标端口指定为全部有效端口, -sV --version-all 用来提高版本检测的效率。
运行上面的指令稍微等待一会儿,我们可以得到一份漏扫报告

例:smb-vuln-ms10-061.nse

这个脚本是stuxnet蠕虫利用的4个漏洞之一。计算机武器类的病毒。
通过LANMAN API去枚举对方目标系统的共享打印机,如果发现了共享打印机,一些低版本的操作系统在没有打补丁的情况下,他的Print Spooler系统服务默认的权限是配置不当的,通过请求Print Spooler这个服务就可以实现在目标系统的系统目录下去创建文件,执意任意代码,直接控制目标系统。当然前提是目标系统开放了LANMAN

nmap -p 445 1.1.1.1 --script=smb-vuln-ms10-061

原理:
连接目标系统的445文件共享端口。
在这里插入图片描述在这里插入图片描述
如何去发现这个漏洞?
不同的扫描软件有不同的判断机制。

1.smb-vuln-ms10-061.nse
有些扫描软件会向nmap使用的smb-vuln-ms10-061.nse脚本,它会先去探测目标系统有没有共享的打印机,然后去探测共享打印机的名称,如果说目标系统有共享打印机,并被扫描器探测到其名称,使用LANMAN API去探测到打印机的名称,他就会直接进行攻击性的探测。

判断条件:基于目标系统是否开放LANMAN服务。

缺点:只通过smb-vuln-ms10-061.nse脚本默认的LANMAN API去查询目标机器,如果目标机器没有开放LANMAN,当使用nmap的这个脚本去查询的时候,扫描脚本会直接判断目标系统不存在这个漏洞。

2.smb-vuln-ms10-061.nse+smb-enum-share
如果目标系统没有开放LANMAN API,通过smb-vuln-ms10-061.nse脚本默认的连接方式,连接不上目标系统的共享打印机,这时可以通过nmap的smb-enum-shares.nes枚举共享脚本去发现目标系统的共享打印机,在使用该脚本的时候,有时候需要你提供目标系统管理员的账号密码才可以跟目标系统建立上连接然后枚举上他的共享打印机,这个是受目标系统的共享打印机共享时的权限所限制的,所有有些是必须提供账号密码才可以建立连接。然后利用这个脚本去发现目标系统有共享打印机,然后再利用smb-vuln-ms10-061.nse这个漏洞去探测他是不是可以在目标系统的目录下创建文件和执行任意代码。

判断条件:基于目标系统ms10-061这个补丁是否安装。

缺点:通过目标系统的账号密码去登录到目标系统,然后通过查目标系统有没有打ms10-061这个补丁这种方式去判断目标系统是否存在这个漏洞。这样存在一个问题,当目标系统没有安装ms10-061这个补丁,有些扫描器就会判断目标系统有这个漏洞了。但是其实目标服务器也没有开放共享的打印机,即这个漏洞不会被别人利用去控制我的服务器。此时判断的结果也就没办法百分百的准确,应综合的看待漏洞威胁。
smb-enum-share枚举共享

#身份认证参数——smbuser/smbpassword
 nmap -p445 --script=smb-enum-shares.nes --script-args=smbuser=admin,smbpassword=pass 1.1.1.1

在这里插入图片描述

可以用同样的方法去学习和了解nmap中vuln相关的脚本。
可参考:https://blog.51cto.com/14309999/2448947

### 如何使用 Nmap 扫描 1433 端口 Nmap 是一种强大的网络扫描工具,可以用来检测特定端口的状态以及服务信息。以下是关于如何使用 Nmap 对 1433 端口进行扫描的相关说明。 #### 基本命令结构 Nmap 的基本语法如下: ```bash nmap [选项] <目标> ``` 对于 1433 端口的扫描,可以直接指定该端口号作为参数之一。例如: #### 针对单个主机的简单扫描 如果只想针对某个具体的目标地址(如 `192.168.1.1`),可以通过以下命令实现: ```bash nmap -p 1433 192.168.1.1 ``` 这条命令会尝试连接到目标机器上的 1433 端口,并报告其状态(开放、关闭或被过滤)。此方法适用于初步了解某台设备上是否有 SQL Server 数据库运行的情况[^1]。 #### 使用更详细的输出模式 为了获取更多有关于所发现的服务版本等细节信息,在执行上述基础操作之外还可以加上 `-sV` 参数来进行服务探测和服务指纹识别: ```bash nmap -p 1433 --script=mysql-info,ms-sql-info,vulners 192.168.1.1 ``` 这里增加了脚本功能以进一步分析可能存在的漏洞或者提取数据库的具体配置数据[^2]。 #### 并发多主机批量处理 当需要同时测试多个IP范围内是否存在可用的MSSQL实例时,则可利用通配符(*)表示法或是CIDR记号定义整个子网范围内的所有节点: ```bash nmap -p 1433 192.168.*.* # 或者 nmap -p 1433 192.168.0.0/16 ``` 这种方法特别适合企业内部环境下的大规模资产盘点工作[^3]。 #### 处理IPv6 地址场景 随着互联网协议第六版(IPv6)逐渐普及开来,NMAP同样支持对该类新型地址形式发起请求访问动作. 假设存在这样一个情况:我们需要验证一台远程服务器(拥有合法分配好的全球唯一标识符Global Unicast Address GUA )是否开启了监听SQL server默认通讯接口即TCP port number equals to one thousand four hundred thirty three (1433).那么我们可以按照下面方式构建查询语句: ```bash nmap -6 -p 1433 [2001:db8::abcd] ``` 注意这里的区别在于加入了额外标志位(-6),表明接下来的操作对象属于下一代通信标准范畴之内[^4]. --- ### Python 调用 Nmap 实现自动化流程控制 除了直接通过终端界面手动输入指令外,也可以借助编程语言比如Python编写脚本来完成更加复杂的任务调度逻辑设计需求. 安装依赖包:`pip install python-nmap` 样例代码展示: ```python import nmap nm = nmap.PortScanner() result = nm.scan(hosts='192.168.1.0/24', arguments='-p 1433') for host in nm.all_hosts(): print(f"Host : {host} ({nm[host].hostname()})") print(f"State : {nm[host].state()}") for proto in nm[host].all_protocols(): lport = list(nm[host][proto].keys()) lport.sort() for port in lport: state=nm[host][proto][port]['state'] product=nm[host][proto][port]['product'] if 'product' in nm[host][proto][port] else '' version=nm[host][proto][port]['version'] if 'version' in nm[host][proto][port] else '' print(f"{proto}:{port}->{state}|{product}{version}") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值