shodan网络安全搜索引擎(下)

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

感谢泷羽sec 团队的教学
视频地址:哔哩哔哩_bilibili


九、批量查找Mongodb未授权登录

  • 日本的

shodan search --limit 10 --fields ip_str "Mongodb server information -authentication"port:27017 country:jp
(搜Mongodb未授权登录数据库mongodb自己下载未授权的一般能够直接链接数据库这个是必学的)
​
“Mongodb server information -authentication”:为MongoDB服务器搜索,同时排除已启用身份验证的结果。

MongoDB未授权登录数据库是一个严重的安全问题,

以下是相关情况:

一、漏洞产生原因

  • 启动Mongodb的时候未设置--auth,并且很少有人会给数据库添加上账号密码(默认空口令),这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器1

二、漏洞利用方式

  1. 环境安装(以Kali系统为例)

  • 导入MongoDB公共GPG密钥:如果提示错误运行sudo apt - get install gnupg之后,重新运行相关命令。
  • 创建一个列表文件来配置下载列表和下载源。
  • 重新加载更新源:sudo apt - get update。
  • 安装MongoDB的最新稳定版本:sudo apt - get install - y mongodb - org。
  • 启动进程:sudo systemctl start mongod,若失败(如提示Failed to start mongod.service: Unit mongod.service not found.),首先运行特定命令,然后再次运行开始命令。
  • 配置开机自启:sudo systemctlenable mongod。
  1. 漏洞利用步骤

  • 扫描或者通过FOFA发现端口或者服务(默认端口27017)。
  • 使用mongo连接数据库,命令格式:mongo--host目标ip--port目标端口。
  • 查看用户、数据库信息等。
  • 创建系统用户管理员,例如创建一个用户名为myUserAdmin,密码为Passw0rd的系统用户管理员账号:
    • 切换到admin库:use admin。
    • 创建用户:db.createUser({user:myUserAdmin ,pwd:Passw0rd,roles:[{role:userAdminAnyDatabase,db:admin}]}),创建成功后会有提示信息:Successfully added user:{user:myUserAdmin,roles:[{role:userAdminAnyDatabase,db:admin}]}。
  • 可以通过ssh直接登录系统完成利用2

连接MongoDB数据库的方法:

    连接MongoDB数据库可以通过多种方式进行,包括使用MongoDB Compass(GUI)、MongoDB Shell(CLI)或编程语言驱动程序。以下是详细的步骤和方法介绍:
​
1. 选择连接方法
首先,你需要选择连接MongoDB的方法。有几种方法可供选择:
​
MongoDB Compass:一个图形化用户界面(GUI)工具,可简化与数据库的交互。
MongoDB Shell(mongo):一个命令行工具,可用于连接、查询和更新数据库。
编程语言驱动程序:MongoDB提供了各种编程语言的驱动程序,包括Python、Java和Node.js。
​
2. 安装必要的软件
根据你选择的连接方法,你可能需要安装一些额外的软件:
​
MongoDB Compass:从MongoDB官网下载并安装Compass。
MongoDB Shell:在macOS、Linux或Windows上安装MongoDB。
编程语言驱动程序:参考MongoDB文档了解如何安装和使用特定语言的驱动程序。
​
3. 建立连接
一旦你安装了必要的软件,就可以建立与数据库的连接:
​
MongoDB Compass:启动Compass,点击“新建连接”并输入数据库的连接参数。
MongoDB Shell:打开终端并运行以下命令:mongo [数据库URI]。例如,mongo mongodb://localhost:27017。
编程语言驱动程序:使用驱动程序的API连接到数据库。例如,在Python中:
    import pymongo 
    client = pymongo.MongoClient("mongodb://localhost:27017")
​
4. 验证连接
建立连接后,你可以使用以下命令验证连接是否成功:
> db.runCommand({ping:1}) 
​
如果连接成功,应返回以下输出:
{ "ok": 1 }
​

MongoDB指令(增删改查)

增加
​
增加一条数据:
db.collection.insertOne(
        { item:"canvas", qty: 100, tags: ["cotton"], size: {
h: 28, w: 35.5, uom: "cm" } }
)
​
增加多条数据:
db.collection.insertMany([
        { item: "journal", qty: 25, tags: ["blank", "red"],
size: { h: 14, w: 21, uom: "cm" } },
         { item: "mat", qty: 85, tags: ["gray"], size: { h:
27.9, w: 35.5, uom: "cm" } },
          { item: "mousepad", qty: 25, tags: ["gel", "blue"],
size: { h: 19, w: 22.85, uom: "cm" } }
])
​
删除
​
删除单条命令
db.collection.deleteOne(
    <filter>, // 过滤条件
    {
        writeConcern: <document>,
        collation: <document>,
        hint: <document|string> // Available starting in
MongoDB 4.4
    }
)
​
删除多条数据
db.collection.deleteMany(
    <filter>,
    {
        writeConcern: <document>,
        collation: <document>
    }
)
​
修改数据
db.collection.update(
    <query>,
    <update>,
    {
        upsert: <boolean>,
        multi: <boolean>,
        writeConcern: <document>
    }
)
​
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
​
查询
​
1. 查询所有:
    db.collection.find()
​
2. 下面的实例返回inventory集合中status等于"D"的所有文档:
    db.inventory.find( { status: "D" } )
​
3. 下面的案例返回inventory集合中status等于"A"或"D"的所有文档。
    db.inventory.find( { status: { $in: [ "A", "D" ] } } )
    
4. 下面的案例返回inventory集合中status等于"A" 并且qty小于( $lt)30的所有文档:
    db.inventory.find( { status: "A", qty: { $lt: 30 } } )
​
5. 下面的案例返回inventory集合中status等于"A" 或者qty小于( $lt)30的所有文档。
    db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

十、jenkins介绍

Jenkins主要有以下作用:

Jenkins 组件主要有以下作用:

一、自动化构建与部署 能自动从代码仓库获取代码并进行编译、打包等构建操作。可以把构建好的成果自动部暑到不同环境中。

二、自动化测试 自动运行各种测试,如单元测试、集成测试等

三、任务管理 可设置定时任务,按特定时间自动执行工作。能管理任务问的依赖关系。监控任务状态,失败时通知相关人员。

四、可扩展定制 有很多插件可满足不同的需求,也能自行开发插件。自动测试、自动测试、自动回滚。

五、在渗透测试过程中的辅助作用

  • 自动化测试:Jenkins 可以用于自动化渗透测试过程中的一些任务,如漏洞扫描、安全测试等。通过编写 Jenkins 任务,可以定期对目标系统进行安全测试,提高测试效率和覆盖范围。

  • 持续集成与持续部署(CI/CD):在一些企业中,Jenkins 被用于 CI/CD 流程中。渗透测试⼈员可以利用 Jenkins 的 CI/CD 流程,在开发和部署过程中进行安全测试,及时发现和修复安全问题。

  • 漏洞管理:Jenkins 可以与漏洞管理工具集成,帮助企业管理和跟踪安全漏洞。渗透测试⼈员可以利用 Jenkins 的漏洞管理功能,了解目标系统中存在的安全漏洞,并制定相应的攻击策略。

总之,Jenkins 在渗透测试中既可能是攻击目标,也可以作为辅助工具。渗透测试人员需要了解 Jenkins 的安全风险和漏洞,以及如何利用 Jenkins 来提⾼渗透测试的效率和效果。同时,企业也需要加强 Jenkins 的安全配置和管理以防止被攻击者利用)。

jenkins批量挖掘

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

参数解释:

  • shodan search:表示使用Shodan进行搜索操作。

  • —limit10:限制搜索结果的数量为10个

  • —fields ip_str:指定只返回搜索结果中的IP地址字段,

  • “X-Jenkins"0R"Set-cookie:JSESSIONID”:这是搜索条作意味着搜索结果中要么响应头包含“X-Jenkins”,要么“Set-cook ie’”的值包含“JSESSIONID”。使用“OR”逻辑运算符连接了这两个条件,扩大了搜索的范围。

  • http.title:“Dashboard”:另一个搜索条件,表示HTTP响应的标题中包含“Dashboard’"这个字符串。

十一、Google搜索语法

截图搜索参数has_ screenshot:true cisco Google搜索语法
​
“inurl:admin":查找包含"admin” 的网页URL,可能找到管理后台入口。
​
"inurl:login”:查找包含"login" 的登录页面。 
​
“inurl:php?id=”:查找可能存在SOL注入漏洞的PHP页面。 
​
“inurl:asp?id=”:查找可能存在sOL注入漏洞的ASP页面。
​
"inurl:jsp?id=”:查找可能存在sQL注入漏洞的JSP页面。
​
“filetype:pdf关键词”:查找特定关键词的PDF文件。
​
“filetype:doc关键词”:查找特定关键词的Word文档。
​
“filetype:xls关键词”:查找特定关键词的Excel表格。
​
“intitle:后台管理”:查找标题中包含“后台管理”的网页。
​
“intitle:登录页面”,查找标题中包含“登录页面”的网页。 
​
"site:gov inurl:upload":在政府网站中查找可能存在文件上传漏洞的页面。
​
“site:edu inur1:forum”:在教育机构网站中查找论坛页面。 
​
“site:.com inurI:phpmyadmin”:在商业网站中查找可能存在的phpMyAdmin 管理页面。 
​
“site:org inur l:password”:在非营利组织网站中查找包含"pa0sword"的页面,可能找到泄露的密码信息。 
​
“site:.net inurI:backup":在.net 域名网站中查找备份文件。 
​
site:.gov.cn intitle:敏感信息”:在政府中文域名网站中查找标题包含敏感信息的页面。 
​
“site:company.com inurl:confidentia1",在特定公司网站中查找包含"conf idontia1"(机密)的页面。
​
"site:domain.com inurl:up loads":在特定域名网站中查找上传文件的目录。 
​
“site:edu.cn filetype:ppt 关键词”,在教育机构中文域名网站中查找特定关键词的PPT文件。
​
“site:.gov inur1:vuInerability":在各种政府网站中查找包含"vulnerability" (漏洞) 的页面
​
基本搜索语法
1.  intitle:
用于搜索网页标题中包含特定字符的网页。例如,输入intitle:cbi,则会搜索出所有网页标题中带有“cbi”的网页。
​
2.  inurl:
用于搜索包含特定字符的URL。例如,输入inurl:cbi,则会找到所有URL中包含“cbi”字符的网页。
​
3.  intext:
用于搜索网页正文内容中的指定字符。例如,输入intext:cbi,则会搜索出所有网页正文中包含“cbi”的内容。
​
4.  filetype:
用于搜索指定类型的文件。例如,输入filetype:cbi,则会返回所有以“cbi”结尾的文件URL。
​
5.  site:
用于找到与指定网站有联系的URL。例如,输入site:family.chinaok.com ,则会显示所有与该网站有联系的URL。
​
高级搜索语法
​
1.  allintitle:
用于搜索网页标题中同时包含多个关键词的网页。例如,输入allintitle:program moon,则会返回标题中同时包含“program”和“moon”的网页。
​
2.  allintext:
用于搜索网页正文内容中同时包含多个关键词的内容。例如,输入allintext:2018 program,则会返回正文内容中同时包含“2018”和“program”的网页。
​
实例应用
以下是一些实例,展示了如何结合使用这些搜索语法来实现更复杂的搜索需求:
•   查看脚本类型:site:域名 filetype:asp/aspx/php/jsp1
•   迂回策略入侵:inurl:cms/data/templates/images/index/ filetype:xls inurl:gov usernamepassword filetype:inc inurl:config.inchost filetype:sqlcdb_members inurl:forumdata filetype:txt inurl:新建文本文档.txt 密码 filetype:login url:logmdb1
•   利用inurl或allinurl寻找有漏洞的网站或服务器:allinurl:winnt/system32/ 或 allinurl:wwwboard/passwd.txt1
​

十二、补充命令

alert参数

shodan alert -h 查看帮助文档

命令解释

命令

clear
这个命令用于清除所有警报。在网络监控工具中,警报可能是由于检测到网络中的异常活动而触发的。使用clear命令可以移除这些警报,使得警报列表变为空。

create
这个命令用于创建一个新的网络警报,以监控外部网络。这意味着你可以设置规则,当网络流量或状态达到某些条件时,就会触发警报。

disable
这个命令用于禁用警报的触发器。如果你不想某个警报在特定条件下触发,可以使用此命令暂时禁用它。

domain
这个命令用于基于域名创建网络警报。这意味着你可以监控特定域名的网络活动,并在出现异常时收到警报。

download
这个命令用于下载有关正在监控的网络/IP的信息。这对于分析和记录网络活动非常有用。

enable
这个命令用于启用警报的触发器。如果你之前禁用了某个警报的触发器,可以使用此命令重新启用它。
export
这个命令用于导出监控网络/IP的配置。这样做的目的是为了备份配置或在其他地方导入相同的监控设置。

import
这个命令用于导入监控网络/IP的配置。这允许你从备份或其他来源恢复配置,以便在当前环境中使用。

info
这个命令用于显示关于特定警报的信息。这对于诊断和调试警报非常有用,因为它提供了警报的详细信息。

list
这个命令用于列出所有活动的警报。这对于查看当前有哪些警报处于激活状态非常有用。

remove
这个命令用于删除指定的警报。如果你不再需要某个警报,可以使用此命令将其从系统中移除。

stats
这个命令用于显示关于你正在监控的网络的汇总信息。这有助于了解网络的整体健康状况和性能。

triggers
这个命令用于列出可用的通知触发器。通知触发器定义了在什么条件下应该发送通知(例如电子邮件或短信)。
​

domain查看域信息

用法:shodan domain [OPTIONS] <domain>
​
查看一个域的所有可用信息
​
选项:
 -D,——details查找域结果中任何ip的主机信息
 -S,——save将信息保存到以域命名的文件中
 (如果文件存在则追加)。
 -H,——history在结果中包含历史DNS数据
 -T,——type TEXT只返回指定类型的DNS记录
 -h,——help显示此消息并退出。

scan参数

因为shodan是非实时的工具,它存储的信息可能是几个月,几个星期前的信息。如果有需要我们可以通过scan参数进行实时的扫描

shodan scan -h 帮助命令

命令解释

互联网扫描相关
internet:用于在互联网上针对特定端口和协议进行扫描。这有助于发现使用特定端口和协议的设备或服务暴露情况1。

扫描任务管理
list:显示最近启动的扫描任务。这可以帮助你查看已经执行过的扫描操作的记录。

protocols:列出你可以使用Shodan进行扫描的协议。了解可扫描的协议对于准确执行扫描任务非常重要,因为不同的协议可能对应不同类型的设备或服务。

status:检查按需扫描的状态。当你发起一个扫描任务后,可以使用这个命令查看扫描是否正在进行、是否已经完成或者是否遇到了错误等状态信息。

submit:使用Shodan扫描IP地址/网段。与之前提到的scan命令类似,都是用于对特定的IP或网段进行扫描操作,以获取相关设备或服务的信息。
​

stats参数

命令解释

--limit INTEGER这个参数用于指定要返回的结果数量。例如,如果你设置 --limit 10,那么只会返回前10个结果。
--facets TEXT这个参数用于指定要获取统计信息的面(facet)。面是数据分析中的一个概念,通常用于对数据进行分组和聚合。你可以提供一个面的名称列表,以获取这些面的统计信息。
-O, --filename TEXT这个参数用于指定保存结果的CSV文件的名称。例如,如果你设置 -O output.csv ,那么结果将会被保存到一个名为 output.csv 的文件中。
-h, --help这个参数用于显示帮助信息。当你运行命令并加上 -h 或 --help 时,它会显示所有可用的参数及其描述,帮助你了解如何正确使用这个工具或脚本。

Shodan Stats 功能介绍

Shodan Stats 提供了搜索结果的概要信息,帮助用户快速了解搜索到的设备分布情况。这些信息包括但不限于以下几个方面:

  • Top Services (Ports):显示使用最多的服务/端口,帮助用户了解网络中最常见的服务类型。

  • Top Organizations (ISPs):列出使用最多的组织/ISP,这对于市场研究和网络风险分析非常有用。

  • Top Operating Systems:展示使用最多的操作系统,有助于了解不同操作系统在网络中的普及程度。

  • Top Products (Software Name):列出使用最多的产品/软件名称,这对于软件开发和安全研究人员来说是非常有价值的。

如何使用 Shodan Stats

        使用 Shodan Stats 功能非常简单,用户只需在 Shodan 的搜索栏中输入关键词,然后点击搜索。在搜索结果页面,用户可以看到一系列的汇总数据,包括上述提到的各项统计信息。此外,Shodan 还提供了多种过滤选项,允许用户进一步细化搜索结果,例如按国家、城市、ISP、产品、版本等进行筛选。

示例

假设用户想要了解全球范围内使用最广泛的 Web 服务器软件,他们可以在 Shodan 中输入 "web server" 并查看 "stats" 提供的信息。这将显示出哪些 Web 服务器软件在全球范围内最为流行,以及它们对应的端口和服务信息

shodan stats --facets ssl.version country:cn has_ssl:true http

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值