网络搜索引擎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)
相关推荐
用户9623779544817 小时前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954484 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954484 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star4 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954484 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher6 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行9 天前
网络安全总结
安全·web安全