Nmap识别MongoDB 6.0指纹

Nmap识别MongoDB 6.0指纹

朋友反馈一个问题,说使用Nmap扫描MongoDB服务时对于6.0以上的版本默认无法识别到服务版本信息。

如上图所示,对应的VERSION信息是空的,在提示信息中可以看到,官方推荐将指纹信息上传以帮助更新服务指纹,又或者可以通过Nmap的默认脚本mongodb-info来做版本识别。前一种方式需要等待官方做指纹文件更新或产品版本更新,后者使用脚本又会影响到扫描速度。如果想在当前的Nmap版本下不使用脚本来识别MongoDB 6.0以上版本,唯一的办法是使用Nmap内置的服务指纹将MongoDB 6.0服务版本识别出来。

Nmap服务指纹解析

Nmap默认的服务指纹文件位于/usr/share/nmap目录下,文件名是nmap-service-probes,根据默认端口27017可以找到Nmap识别MongoDB服务的内容:

上图中的匹配规则用到了四个指令:

  • Probe:为识别服务发送的字符串信息;
  • rarity:1-9范围的数字,是服务识别和可靠性的概率,数字越大,扫描概率越小,返回信息价值越低;
  • ports:服务识别常用的端口,效果与nmap的-p参数相同;
  • match:根据Probe指令发送字符串返回的信息,匹配服务指纹规则;

上图中用于识别MongoDB服务,通过TCP协议发送到服务端的字符串是:

\x41\0\0\0\x3a\x30\0\0\xff\xff\xff\xff\xd4\x07\0\0\0\0\0\0test.$cmd\0\0\0\0\0\xff\xff\xff\xff\x1b\0\0\0\x01serverStatus\0\0\0\0\0\0\0\xf0\x3f\0

match指令的格式包括:

  • 服务名称(service)
  • 匹配规则(pattern)
  • 版本信息(versioninfo)

以第一行的match指令为例:

match mongodb m|^.*version.....([\.\d]+)|s p/MongoDB/ v/$1/ cpe:/a:mongodb:mongodb:$1/
  • 服务名称:MongoDB
  • 匹配规则:m|^.*version.....([\.\d]+)|s,采用Perl格式的正则表达式,s表示包含换行符;
  • 版本信息:p/MongoDB/ v/$1/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值