当前位置:网站首页 > 黑客培训 > 正文

渗透测试之地基服务篇:服务攻防之数据库Mongodb(下)

freebuffreebuf 2021-07-18 423 0

本文来源:

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

数据库作为业务平台信息技术的核心和基础,承载着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,数据库的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的数据库中往往储存着等极其重要和敏感的信息。这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。

通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!

今天会讲解到利用主从复制RCE、本地Redis主从复制RCE反弹shell、SSRF Redis 反弹shell、Redis知识拓展、Redis安全防护等操作,如果连Redis都不会安装操作提权等,怎么进行下一步的研究Redis数据库安全!怎么拿下对方服务器?

二、学习Mongo Shell

在前一期中,我们已经看到了对MongoDB及其设置的简要介绍。现在是时候使用Mongo shell并在MongoDB上执行一些命令来更好了解MongoDB及其工作。

MongoDB使用JavaScript风格的查询,因此我们觉得大部分时间都在运行JavaScript代码。

本节将简要介绍MongoDB的工作原理,并且介绍简单的Mongo shell命令。
在我们开始之前,有几个术语要理解。

• MongoDB 可以有多个数据库. • 每个数据库都含有一个或多个集合 “collections”. • 每个集合都含有一个或多个文档 “documents”. 

现在,我们继续运行MongoDB命令。

1、MongoDB命令操作

1)创建数据库

如果要创建的数据库名不存在,以下命令将创建一个新的数据库,数据库名已存在会直接使用它。

让我们来创建一个名为”dayudb”的数据库:
1626575326_60f391de3c6884001f3c8.png?1626575329652

use dayudb 

2)检查当前数据库

我们可以使用命令”db”来检查当前的数据库。 我们运行命令”db”来检查当前的数据库。

1626575335_60f391e7c50d37b286b8f.png?1626575335961

db 

3)检查数据库列表

“show dbs”是列出可用数据库的命令,但是这里并没有输出我们刚才创建的testdb数据库,因为它至少需要一个文档,当我们插入一个文档,我们就可以看到列出的数据库。

1626575341_60f391ed2d53fb008f170.png?1626575341486

4)将数据插入集合

这个是把一个数据插入到data集合中。

db.data.insert({"user":"test1"}) 

1626575346_60f391f2936e3783bcca9.png?1626575347015

5)查询数据

从MongoDB集合中查询数据,可以使用find()方法。
让我们查询data集合中的全部文档数据。
1626575350_60f391f68f50485188fe8.png?1626575351316

db.data.find() 

6)在查询数据时写入条件

我们还可以使用MongoDB特定的语法在类似于RDBMS条件的查询中编写条件,让我们来匹配用户名user为test1的数据。

1626575354_60f391fade3f8bbcff6bb.png?1626575356846

db.data.insert({"dayu":"123456"}) db.data.insert({"dayu2":"1234567"}) db.data.insert({"dayu3":"12345678"}) 

7)删除数据

我们可以使用remove()方法根据特定条件从集合中删除文档。让我们来删除用户名user为test3的数据。

1626575360_60f392007f199ccc7293e.png?1626575362189

db.data.remove({"dayu":"123456"}) 

8)删除集合

我们可以使用drop()方法来删除集合,让我们来删除data集合。
1626575364_60f3920440a53e597a459.png?1626575364529

show collections; db.data.drop() show collections; 

9)删除数据库

我们可以使用db.dropDatabase()删除目前使用的数据库。

1626575369_60f3920907d2b834c621d.png?1626575369441

db.dropDatabase() 

2、自搭渗透实验环境

熟悉了MongoDB的基本操作之后,接下来我们本地搭建一个Lab实验环境来开始我们的MongoDB数据库渗透测试。

用Kali来模拟现实中的生产机器,安装MongoDB和php web应用程序。

接下来正式开始我们的Lab实验环境搭建,我这里先安装好了LAMP。

**注意: **请使用与我用来创建数据库和集合相同的名称。这是PHP Web应用程序的工作所必需的。如果您更改这些名称,则可能需要相应地更改PHPWeb应用程序。

1)创建一个新的数据库

1626575374_60f3920ea942c27684818.png?1626575374986

use dayu 

2)插入数据

把测试数据插入集合”users”和集合”products”

1626575378_60f39212e40feef50541b.png

db.users.insert({"username":"tom","password":"tom","email":"tom@gmail.com","cardnumber":12345}) db.users.insert({"username":"jim","password":"jim","email":"jim@gmail.com","cardnumber":54321}) db.users.insert({"username":"bob","password":"bob","email":"bob@gmail.com","cardnumber":22222}) db.products.insert({"email":"tom@gmail.com","prodname":"laptop","price":"1500USD"}) db.products.insert({"email":"jim@gmail.com","prodname":"book","price":"50USD"}) db.products.insert({"email":"bob@gmail.com","prodname":"diamond-ring","price":"4500USD"}) 

3)安装mongo的PHP驱动程序

为了使PHP Web应用程序能够使用MongoDB,我们需要安装PHP驱动程序。

1626575384_60f39218335c7b929639e.png1626575387_60f3921b74194eec83365.png报错了!!

sudo apt-get install php-pear sudo pecl install mongo 

错误排错:

1626575391_60f3921f465b8e1176153.png?1626575394323

apt-get install php-mongodb 

这是我遇到的坑和经验,小伙伴遇到解决即可!

三、Mongodb进攻渗透

mongodb默认端口:
1626575397_60f39225b108dcfba9709.png?1626575398015

intitle:mongo intext:"listDatabases" 

简单了解了Mongodb,接下来我们就开始进行渗透进攻!

1、注入mongodb

SQL手工注入漏洞测试(MongoDB数据库)

地址:

https://www.mozhe.cn/bug/detail/YXlRYUJPYk1vQjAreHlweVAyMzVTUT09bW96aGUmozhe 

1626575403_60f3922b3a815e86c69f0.png?1626575404941我们登录该页面进行渗透,该页面是墨者的一个Mongodb的数据库渗透平台。

Mongodb语法

在做之前,先了解下相关语法。Mongodb的查询文档方式与其他的数据库略微不同,当进行条件查询的时候,mysql是用where,而mongodb是以键值对形式进行查询的

转载请注明来自网盾网络安全培训,本文标题:《渗透测试之地基服务篇:服务攻防之数据库Mongodb(下)》

标签:数据库安全

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表