网络搜索引擎Shodan(5)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。

感谢泷羽sec 团队 的教学

视频地址:shodan(5)_哔哩哔哩_bilibili


本文主要讲解search命令的一些用法,以及如何去搜索Mongodb未授权登录的设备和使用jenkins服务设备。

你可以使用这个命令在 Shodan 中搜索 208.88.84.0/24 子网的 IP 地址

命令解释:

  • shodan search:启动 Shodan 的搜索查询。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:指定只显示 IP 地址和端口号。
  • net:208.88.84.0/24:定义搜索范围为指定的子网。
  • 在 Shodan 中,net 参数用于指定一个网络范围或子网进行搜索。

这个命令会返回属于 NSA 的设备中,最多 10 个存在已知漏洞的设备的 IP 地址和开放端口。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:只显示 IP 地址和端口号。
  • org:nsa:搜索属于 NSA(国家安全局)的设备。
  • has_vuln:True:查找存在已知漏洞的设备。
  • Shodan 中,org 参数用于指定某个组织或公司进行搜索。

这个命令用于在 Shodan 上搜索与 google 相关的设备。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:只显示 IP 地址和端口号。
  • hostname:google:查找主机名中包含 google 的设备。
  • 在 Shodan 中,hostname 参数用于搜索特定主机名的设备。通过这个参数,你可以查找与某个特定域名或主机名相关的设备。

这个命令用于在 Shodan 上搜索中国(cn)的设备,具体是查找使用 Safedog WAF(安全狗) 的设备。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:只显示 IP 地址和端口号。
  • country:cn:查找位于中国的设备。
  • http.waf:safedog:查找使用 Safedog Web 应用防火墙的设备。
  • 在 Shodan 中,http.waf 参数用于搜索特定的 Web 应用防火墙(WAF)。通过这个参数,你可以查找使用特定 WAF 保护的设备或应用。

这个命令用于在 Shodan 上搜索中国(cn)的设备,具体是查找包含登录页面的设备。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:只显示 IP 地址和端口号。
  • country:cn:查找位于中国的设备。
  • http.html:login:查找包含"login"关键字的 HTML 内容,通常指示有登录页面的设备。
  • 在 Shodan 中,http.html 参数用于查找特定 HTTP 响应内容中的关键字。这可以帮助用户定位包含特定文本或结构的网页。

这个命令用于在 Shodan 上搜索运行 MongoDB 数据库的设备,特别是那些显示"Mongodb server information -authentication"信息(未授权)的设备。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 10:限制结果为 10 条。
  • --fields ip_str,port:只显示 IP 地址和端口号。
  • "Mongodb server information -authentication":搜索包含该特定字符串的 HTTP 响应,通常表示 MongoDB 的信息。
  • port:27017:指定搜索 MongoDB 默认端口(27017)。

编写python脚本批量测试

python 复制代码
from pymongo import MongoClient
import socket

def check_mongodb(ip):
    try:
        client = MongoClient(f"mongodb://{ip}:27017", serverSelectionTimeoutMS=2000)
        client.admin.command('ismaster')  # 测试连接是否成功
        print(f"[+] '连接成功': {ip}")
    except Exception as e:
        print(f"[-] '连接失败': {ip} ({e})")

with open('ips.txt', 'r') as file:
    ips = file.readlines()
    for ip in ips:
        ip = ip.strip()
        check_mongodb(ip)

使用NoSQLBooster进行验证

7、Jenkins

enkins 是一个开源的持续集成(CI)和持续交付(CD)工具,广泛用于自动化软件构建、测试和部署流程。它具有插件支持,能够与几乎任何工具和平台集成,方便从代码进行管理提交到生产部署的整个流程。

主要功能
  • 持续集成(CI):Jenkins 可以监控代码库(如 Git)中的更改并自动构建项目。这有助于在早期发现代码问题,减少代码集成的风险。
  • 持续交付(CD):可以自动将构建的应用程序部署到测试或生产环境,确保代码在通过所有测试后安全上线。
  • 自动化测试:支持单元测试、集成测试和功能测试,可以配置触发条件进行自动测试。
  • 插件支持:Jenkins 提供超过 1,500 个插件,支持与各种开发、测试和部署工具的集成,如 Git、Docker、Maven 等。
  • 任务调度:支持定时任务或事件驱动的任务调度,适用于自动化日常构建和部署工作。

搜索语句:shodan search --limit 100 --fields ip_str "X-Jenkins" OR "Set-cookie:JSESSIONID" http.title:"Dashboard"

这个命令用于在 Shodan 上搜索与 Jenkins 相关的设备,特别是那些显示特定 HTTP 标题和内容的设备。

命令解释:

  • shodan search:启动 Shodan 的搜索。
  • --limit 100:限制结果为 100 条。
  • --fields ip_str:只显示 IP 地址。
  • "X-Jenkins":查找包含 X-Jenkins 响应头的设备,通常指示这些设备运行 Jenkins。
  • "Set-Cookie:JSESSIONID":查找包含 JSESSIONID cookie 的设备,通常用于 Java 应用程序的会话管理。
  • http.title:"Dashboard":查找 HTTP 响应中包含"Dashboard"作为标题的设备,这通常与 Jenkins 的仪表板相关。

使用python脚本测试

python 复制代码
import requests

# 设置请求的 Headers
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'
}


def check_jenkins(ip):
    url = f'http://{ip}:8080/'
    try:
        # 访问 Jenkins 主页面
        response = requests.get(url, headers=headers, timeout=5)
        if "Dashboard [Jenkins]" in response.text:
            print(f"[+] '检测到 Jenkins' {ip}")

            # 检查是否存在未授权访问
            script_url = f"{url}script"
            script_response = requests.get(script_url, headers=headers, timeout=5)
            if script_response.status_code == 200:
                print(f"[!] '存在潜在的未经授权的访问' {script_url}")
            else:
                print(f"[-] '不存在未经授权的访问' {script_url}")
        else:
            print(f"[-] '未发现Jenkins' {ip}")
    except requests.RequestException as e:
        print(f"[!] '访问错误' {ip}: {e}")


# 读取 IP 列表并检测
with open("ips.txt", "r") as file:
    ips = file.readlines()
    for ip in ips:
        ip = ip.strip()
        check_jenkins(ip)
相关推荐
Hello.Reader4 分钟前
CloakBrowser 深度解析从 Playwright 包装层到源码级指纹 Chromium,讲透架构、Humanize、GeoIP、供应链安全与生产实战
安全·架构
德迅云安全杨德俊11 分钟前
云原生容器安全新标杆
安全·云原生
celiahul18 分钟前
当搜索引擎变成“问答机器人”,你的网站该如何适配?
网络·人工智能·搜索引擎·内容运营·外贸推广
进击切图仔43 分钟前
Ubuntu 挂载 XFS 磁盘并免密读写
linux·网络·ubuntu
wsad05321 小时前
Ubuntu 26.04 配置静态 IP 地址
网络·tcp/ip·ubuntu
虹科网络安全7 小时前
解读CRA横向标准EN 40000系列:从法规文本到工程落地 | CRA合规之路(七)
网络·安全·web安全
huainingning8 小时前
华三防火墙web界面ipsec配置
网络
DevSecOps选型指南9 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
阿里云云原生11 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能
kisloy11 小时前
【爬虫入门第13讲】Scrapy 框架深度解析(四)核心配置与自定义扩展
网络·爬虫·scrapy