系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用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”的数据库:
use dayudb
2)检查当前数据库
我们可以使用命令”db”来检查当前的数据库。 我们运行命令”db”来检查当前的数据库。
db
3)检查数据库列表
“show dbs”是列出可用数据库的命令,但是这里并没有输出我们刚才创建的testdb数据库,因为它至少需要一个文档,当我们插入一个文档,我们就可以看到列出的数据库。
4)将数据插入集合
这个是把一个数据插入到data集合中。
db.data.insert({"user":"test1"})
5)查询数据
从MongoDB集合中查询数据,可以使用find()方法。
让我们查询data集合中的全部文档数据。
db.data.find()
6)在查询数据时写入条件
我们还可以使用MongoDB特定的语法在类似于RDBMS条件的查询中编写条件,让我们来匹配用户名user为test1的数据。
db.data.insert({"dayu":"123456"})
db.data.insert({"dayu2":"1234567"})
db.data.insert({"dayu3":"12345678"})
7)删除数据
我们可以使用remove()方法根据特定条件从集合中删除文档。让我们来删除用户名user为test3的数据。
db.data.remove({"dayu":"123456"})
8)删除集合
我们可以使用drop()方法来删除集合,让我们来删除data集合。
show collections;
db.data.drop()
show collections;
9)删除数据库
我们可以使用db.dropDatabase()删除目前使用的数据库。
db.dropDatabase()
2、自搭渗透实验环境
熟悉了MongoDB的基本操作之后,接下来我们本地搭建一个Lab实验环境来开始我们的MongoDB数据库渗透测试。
用Kali来模拟现实中的生产机器,安装MongoDB和php web应用程序。
接下来正式开始我们的Lab实验环境搭建,我这里先安装好了LAMP。
**注意: **请使用与我用来创建数据库和集合相同的名称。这是PHP Web应用程序的工作所必需的。如果您更改这些名称,则可能需要相应地更改PHPWeb应用程序。
1)创建一个新的数据库
use dayu
2)插入数据
把测试数据插入集合”users”和集合”products”
db.users.insert({"username":"tom","password":"tom","email":"[email protected]","cardnumber":12345})
db.users.insert({"username":"jim","password":"jim","email":"[email protected]","cardnumber":54321})
db.users.insert({"username":"bob","password":"bob","email":"[email protected]","cardnumber":22222})
db.products.insert({"email":"[email protected]","prodname":"laptop","price":"1500USD"})
db.products.insert({"email":"[email protected]","prodname":"book","price":"50USD"})
db.products.insert({"email":"[email protected]","prodname":"diamond-ring","price":"4500USD"})
3)安装mongo的PHP驱动程序
为了使PHP Web应用程序能够使用MongoDB,我们需要安装PHP驱动程序。
报错了!!
sudo apt-get install php-pear
sudo pecl install mongo
错误排错:
apt-get install php-mongodb
这是我遇到的坑和经验,小伙伴遇到解决即可!
三、Mongodb进攻渗透
mongodb默认端口:
intitle:mongo intext:"listDatabases"
简单了解了Mongodb,接下来我们就开始进行渗透进攻!
1、注入mongodb
SQL手工注入漏洞测试(MongoDB数据库)
地址:
https://www.mozhe.cn/bug/detail/YXlRYUJPYk1vQjAreHlweVAyMzVTUT09bW96aGUmozhe
我们登录该页面进行渗透,该页面是墨者的一个Mongodb的数据库渗透平台。
Mongodb语法
在做之前,先了解下相关语法。Mongodb的查询文档方式与其他的数据库略微不同,当进行条件查询的时候,mysql是用where,而mongodb是以键值对形式进行查询的
来源:freebuf.com 2021-07-18 10:27:54 by: dayuxiyou
请登录后发表评论
注册