Mongodb注入
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注入的更多相关文章
- 2019-10-31:渗透测试,基础学习,mongodb注入学习
mongodb命令删除文档,db.集合名.remove({键:值})更新文档,db.集合名.update({被更新的对象},{$set:{要更新的内容}}),默认只更新检测到的第一条文档更新全部匹配到 ...
- 【转】MongoDB资料汇总专题
1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...
- MongoDB资料汇总专题[转发]
转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...
- MongoDB+php7搭建
0x00前言: 今天一位非计算机专业的朋友问我怎么打开.bson文件,我第一反应.bson文件是什么,网上查了下是mongodb的传输文件.也就是类似于mysql的.sql文件一样 之前看过mongo ...
- MongoDB资料汇总专题
原文地址:http://bbs.chinaunix.net/thread-3675396-1-1.html 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希 ...
- MongoDB资料汇总(转)
原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 ...
- MongoDB资料汇总专题(转)
原文地址:http://blog.nosqlfan.com/html/3548.html 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 Mo ...
- SQL注入 基础学习
SQL注入学习笔记 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有 ...
- nginx配合modsecurity实现WAF功能
一.准备工作 系统:centos 7.2 64位.nginx1.10.2, modsecurity2.9.1 owasp3.0 1.nginx:http://nginx.org/download/ng ...
随机推荐
- he
弄好这个网站---to thi tha think 好这个---, 很温馨 那时候我还在看. 前一段时候看yibenhaoshu,走出来的才是理性,所以现在才是理性的看待的. 回头再看看两年前的事情, ...
- DISK 100% BUSY,谁造成的?(ok)
iostat等命令看到的是系统级的统计,比如下例中我们看到/dev/sdb很忙,如果要追查是哪个进程导致的I/O繁忙,应该怎么办? # iostat -xd ... Device: rrqm/s wr ...
- Node、TS、Koa学习笔记
这样定义可以轻松拿到gender属性 这样定义,函数内显示没有gender 这种方法能得到gender但是函数内部没有gender 这种方式能到gender 但是在函数里施symbel属性,外部不能访 ...
- SQL AUTO INCREMENT 字段
Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto- ...
- Cordova入门系列(二)分析第一个helloworld项目
版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了如何创建一个cordova android项目,这章我们介绍一下创建的那个helloworld项目的代码,分析其运行. MainActiv ...
- 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll
关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...
- 双字节验证:vue输入框中英文字数长度验证
export default { data() { let validcodeName=(rule,value,callback)=>{ //替换双字节汉字,为aa,限制输入框长度: if(va ...
- string find()函数
链接 [https://www.cnblogs.com/wkfvawl/p/9429128.html]
- 一招明白URL和URI的区别
URL和URI的区别(示例): URL[统一资源定位器]: http://localhost:8080/api/account/queryAccountInfo URI[统一资源定位符]: /api/ ...
- golang 数组、切片、map
一.数组(类似python的list) 数组的长度一旦定义了就不能动态增长.并且存储的数据类型必须相同. 创建方法: var 数组名 [长度]数据类型 例如: package main import ...