一个MongoDB注入进犯事例剖析

访客5年前关于黑客接单566

在开端咱们的MongoDB“注入之旅”之前,咱们需求先知道和其他数据库比较,为什么咱们更乐意选MongoDB——由于MongoDB并不是SQL作为查询句子,所以人们可能会认为这样的数据库难以进行注入进犯?但是事实上并非如此。
myhack58百科:关于MongoDB
简略的说,MongoDB是个开源的NoSql数据库,其经过类似于 *** ON格局的数据存储,这使得它的结构就变得十分自在。经过MongoDB的查询句子就能够查询具体内容。
为什么运用MongoDB?
其实八成仅仅由于MongoDB能够快速查找出成果,它大约能够到达10亿/秒。当然MongoDB很盛行的别的一个原因是在许多使用场景下,联系型数据库是不适合的。例如,运用到非结构化,半自动化和多种状况的数据的使用,或许对数据可扩展性要求高的。
假如你想测验下你的开源程序,能够在以下网站中测验:
http://blog.securelayer7.net/securelayer7-gratis-pentest-summer-2019/
攻防事例
好了,咱们来看一个注入事例
之一个php比如,页面首要完成经过变量id获取到该id的username和password,
页面和源代码截图如下:
 


 
由上图源代码能够知道,后台数据库的姓名是security,调集名是users。u_id 是经过GET恳求传到后台,然后传入一个数组变量中。然后进入MongoDB的查询。接下来,咱们试试经过数组传入运算符号。

 
看看成果,回来了数据库中的一切内容。咱们剖析下咱们传入的数据:
http://localhost/mongo/show.php?u_id[$ne]=2
传入后的MongoDB查询句子如下:
$qry= array(“id” => array(“$ne” => 2))
所以,成果便是MongoDB回来了除了id=2的其他一切数据。
接下来咱们看看另一种状况,经过脚本完成相同的功用。所不同的是,咱们在后台用MongoDB中的findOne来查询成果。
咱们先来快速看下MongoDB中的findOne办法:
db.collection.findOne(query, projection)
回来的是一切满意查询条件的文档中的之一个文档。如下图,但咱们想要查询id=2的文档,输入以下句子:

 
然后,咱们看下php源代码:

 
在这里,最要害的便是损坏原有的查询句子,再从头履行一个查询句子。
能幻想到以下恳求会在MongoDB中履行怎样的操作吗?
http://localhost/mongo/inject.php?u_name=dummy’});return{something:1,something:2}}//&u_pass=dummy
在这里,咱们将原有的查询闭合了,然后回来了一个想要的参数,如下图:

 
留意:报错的信息中向咱们暴露了username和password这两个字段的存在,那么咱们就把刚刚的注入句子改上username和password 参数,这正是咱们想要的。

 
现在假如咱们想要知道数据库名。在MongoDB中,db.getName()办法能够查到数据库的姓名,所以咱们能够结构如下参数:

 
为了获取到数据库中的内容,咱们首要要知道数据库中一切调集名。经过db.getCollectionNames()就能知道数据库顶用的调集。

 
好了,目前为止,咱们获得了数据库名和调集名。现在需求做的便是获取到users调集中的数据,能够结构如下句子:
 

咱们能够用过改动数字来遍历整个调集,例如,改成 db.users.find()[2],如下图:

 
好了,现在或许咱们现已了解这种注入办法。那么,该怎么防护呢?
防护办法
咱们回想下,之一个比如中的遍历是传递给一个数组的(array)。防护这种注入的话,咱们总得先避免数组中的运算操作。因而,其间一种防护办法便是implode()办法,如下图:
 

[1] [2]  黑客接单网

相关文章

Web版勒索软件CTB-Locker PHP源码现身GitHub

勒索软件CTB-Locker呈现其Web演化版别,可感染网页站点。据剖析,其编码为选用PHP编写,现在源码已被保管至GitHub上。 Web版勒索软件CTB-Locker的初次呈现 就在本年西方情人节...

浅谈web安全之手艺检测sql注入以及取得信息

所谓SQL注入,便是经过把SQL指令刺进到Web表单递送或输入域名或页面恳求的查询字符串,终究到达诈骗服务器履行歹意的SQL指令。 查验是否可以注入 and 1=1 正常 and 1=2 犯错 h...

JSP运用过滤器避免SQL注入

 什么是SQL注入进犯?引证百度百科的解说: sql注入_百度百科: 所谓SQL注入,便是通过把SQL指令刺进到Web表单提交或输入域名或页面恳求的查询字符串,终究抵达诈骗服务器履行歹意的SQL指令。...

PHP自动化白盒审计技能与完成

国内揭露的PHP自动化审计技能资料较少,相比之下,国外现已呈现了比较优异的自动化审计完结,比方RIPS是依据token流为根底进行一系列的代码剖析。传统静态剖析技能如数据流剖析、污染传达剖析应用于PH...

鱼叉式网络钓鱼攻击——一份关于攻击动机、技术和预防方法的完整指南-黑客接单平台

每天都有不计其数的鱼叉式垂钓邮件发送给全世界的受害者。 进犯有许多不同的途径,不管怎样进犯,都会对您的网络形成损伤。 所以,精确的、有针对性的进行剖析和履行是至关重要的。 在本指南中,咱们将介绍鱼叉式...

小学生都会挖掘的JSON Hijacking实战利用

JSON Hijacking缝隙的具体使用,有点相似与CSRF,不过原理使用方法不同,在这边文章我侧重解说json跨域绑架的使用环境建立与方法。 0×01缝隙的发掘 一般发掘的过程中,burpsuit...