0x01 Brief Description

作为nosql(not only sql)数据库的一种,mongodb很强大,很多企业也在用到。相对于sql数据库,nosql数据库有以下优点:简单便捷、方便拓展、更好的性能

0x02 Produce the vulnerability

漏洞环境搭建:

kali2.0搭建的环境apt-get install mongodb,注意最好用aliyun的源,之前用的中科大的源,没有找到下载。

安装完成之后开启服务,见下图:

环境的搭建原型来自这里:

http://bobao.360.cn/learning/detail/2839.html

mongdb的配置见下图

上图中可以看到mongodb默认是绑定到127.0.0.1,也就是说只允许本地访问,如果想要允许其它ip连接,只需要注释掉改行(不推荐,这样会导致未授权访问安全问题)。

关于mongodb开启认证以及创建角色的相关内容可以参考慕课网上的视频Mongodb安全

服务的开启

service mongodb start

查看数据库

show  dbs

查看集合

show collections

查看集合中的元素

db.collectionname.find()

数据的CURD就不细述了,最终的数据如下图所示:

GUI连接推荐使用mongovue,显示比较友好。

web端代码(记得安装mongodb模块 apt-get install php5-mongo)

 <?php
echo "param is id :)";
if(!empty($_GET['id']))
{
$m = new MongoClient();
$id = $_GET['id'];
if ($id=="1")
{
echo "You Can't access Admin's Account";
}
else
{
$db = $m->securitytest;
$collection = $db->users;
$qry = array("id"=> $_GET['id']);
$cursor = $collection->find($qry);
foreach($cursor as $document)
{
echo "<br>";
echo "Username:".$document["username"]."<br>";
echo "Password:".$document["password"]."<br>";
echo "<br>"; } } }

题解:

打开页面如下图所示,知道这里的参数是id

这个时候输入参数id=1,提示不允许访问

输入参数id=3 显示如下:

然后我们知道mongodb有这样一个关键字 ne 就是not equal的意思

Syntax: {field: {$ne: value} }
$ne selects the documents where the value of the field is not equal (i.e. !=) to the specified value. This includes documents that do not contain the field.

like this

就是查询到了id不为1的数据

那在这里呢,我们就可以这样构造进行注入:

http://192.168.247.132/inj.php?id[$ne]=2

Flag get!

当然还可以继续爆出collections和dbs,可参考这里:https://www.secpulse.com/archives/3278.html

此外还应该注意nosql数据库的未授权访问的问题,常见的nosql数据库及端口

0x03 Reference

相关学习视频:

http://www.imooc.com/video/5933

mongodb的中文文档:

http://docs.mongoing.com/manual-zh/

black nosql injection 视频后半部分

https://www.youtube.com/watch?v=ZYiTLZGK4AQ

Mongodb注入的更多相关文章

  1. 2019-10-31:渗透测试,基础学习,mongodb注入学习

    mongodb命令删除文档,db.集合名.remove({键:值})更新文档,db.集合名.update({被更新的对象},{$set:{要更新的内容}}),默认只更新检测到的第一条文档更新全部匹配到 ...

  2. 【转】MongoDB资料汇总专题

    1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...

  3. MongoDB资料汇总专题[转发]

    转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...

  4. MongoDB+php7搭建

    0x00前言: 今天一位非计算机专业的朋友问我怎么打开.bson文件,我第一反应.bson文件是什么,网上查了下是mongodb的传输文件.也就是类似于mysql的.sql文件一样 之前看过mongo ...

  5. MongoDB资料汇总专题

    原文地址:http://bbs.chinaunix.net/thread-3675396-1-1.html 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希 ...

  6. MongoDB资料汇总(转)

    原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 ...

  7. MongoDB资料汇总专题(转)

    原文地址:http://blog.nosqlfan.com/html/3548.html 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 Mo ...

  8. SQL注入 基础学习

    SQL注入学习笔记 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有 ...

  9. nginx配合modsecurity实现WAF功能

    一.准备工作 系统:centos 7.2 64位.nginx1.10.2, modsecurity2.9.1 owasp3.0 1.nginx:http://nginx.org/download/ng ...

随机推荐

  1. 在Fabric ChainCode中导入第三方包(以状态机为例)

    在企业级应用开发中,经常会涉及到流程和状态,而有限状态机(FSM)则是对应的一种简单实现,如果复杂化,就上升到Workflow和BPM了.我们在Fabric ChainCode的开发过程中,也很可能涉 ...

  2. 转 HttpClient 设置连接超时时间

    要: HttpClient 4.5版本升级后,设置超时时间的API又有新的变化,请大家关注. HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳 ...

  3. vue 项目设置实现通过本地手机访问

    1.查询ip地址 win+R打开cmd 窗口 输入ipconfig 找到IPV4地址   192.168.x.xxx 2.在vue项目config文件夹中的index.js,将localhost换为i ...

  4. Python Revisited (变量)

    目录 = 浅拷贝 深拷贝` 函数的默认参数为可变类型时 危险 全局变量与临时变量 global 在函数里面进行复制 再看一个例子 numpy里的bug? 待续 @ 首先,需要指出的是,Python的变 ...

  5. java基础-不用ide如何打包

    java基础-不用ide如何打包 1. 建立目录 src存放源文件 classes存放编译文件 2. 建立类文件 主类 package test.ant; import test.ant.MyTool ...

  6. URL https://i.cnblogs.com/EditPosts.aspx?opt=1

    URL url = new URL("https://i.cnblogs.com");URL url1 = new URL(url, "EditPosts.aspx?op ...

  7. jsp篇 之 jsp页面中的路径问题

    jsp页面中的路径问题: 一般情况下,jsp中路径问题是和我们之前在servlet中讨论的html里面的路径问题是一 样的,但是在[jsp中可以动态获得该项目的url]. 如果在jsp页面的上面写了这 ...

  8. [模板] 动态树/LCT

    简介 LCT是一种数据结构, 可以维护树的动态加边, 删边, 维护链上信息(满足结合律), 单次操作时间复杂度 \(O(\log n)\).(不会证) 思想类似树链剖分, 因为splay可以换根, 用 ...

  9. Go语言嵌入类型

    一.什么是嵌入类型 先看如下代码: type user struct { name string email string } type admin struct { user // Embedded ...

  10. macOS 上编译 Dynamips

    Dynamips 是一个Cisco 路由器模拟软件. 安装过程: git clone git://github.com/GNS3/dynamips.git cd dynamips mkdir buil ...