声明:学习视频来自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。
二、漏洞利用方式
-
环境安装(以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。
-
漏洞利用步骤
- 扫描或者通过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