博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Time-Based Blind NoSQL Injection
阅读量:2436 次
发布时间:2019-05-10

本文共 2733 字,大约阅读时间需要 9 分钟。

 
Time-Based Blind NoSQL Injection - Detecting server-side JavaScript injection vulnerabilitiesIn July 2011, Bryan Sullivan, a senior security researcher at Adobe Systems, demonstrated server-side JavaScript injection vulnerabilities in web applications using MongoDB and other NoSQL database engines. He demonstrated how they could be used to perform Denial of Service, File System, Remote Command Execution, and many other attacks, including the easy extraction of the entire contents of the NoSQL database -- a blind NoSQL injection attack (paper here at https://media.blackhat.com/bh-us-11/Sullivan/BH_US_11_Sullivan_Server_Side_WP.pdf). We not only confirmed the published data about the NoSQL injection vulnerabilities, but also discovered that the MongoDB shell supports a sleep() function which makes time-based detection possible of vulnerable web applications.It is also possible to inject a custom sleep code, a technique that may be used to spot injection vulnerabilities in web applications using server-side JavaScript execution. This is not restricted to MongoDB.Below you can find two examples of NoSQL injection vulnerabilities in PHP that could be spotted using these techniques.Example 1: NoSQL Injection Vulnerability in PHPThe following requests would make these (or similar) vulnerable web application sleep for 10 seconds:vulnerable.php?msg=1';sleep(10000);var%20foo='barThe MongoDB sleep() function works with milliseconds.Alternative technique using a custom sleep code:vulnerable.php?msg=1';var%20d%20=%20new%20Date();%20var%20cd%20=%20null;%20do%20{%20cd%20=%20new%20Date();%20}%20while(cd-d%20<%2010000);var%20foo='bar 
demo;$id = $_GET['id'];$js = "function() {var id = '$id';SOME CODE...}";$response = $db->execute($js);...?>Example 2: NoSQL Injection Vulnerability in PHP
demo;$year = $_GET['year'];$collection = $db->demo;$query = 'function() {var search_year = \'' .$year . '\';' .'return this.publicationYear == search_year || ' .' this.filmingYear == search_year || ' .' this.recordingYear == search_year;}';$cursor = $collection->find(array('$where' => $query));...?>Example 3: Sleep in JavaScriptvar date = new Date();var curDate = null;do { curDate = new Date(); }while(curDate-date < 10000); // delay time (ms)SolutionAlways validate user input used in server-side JavaScript commands.Article by Felipe Aragon. Originally published at http://www.syhunt.com/?n=Articles.NoSQLInjection---Copyright � 2010 Syhunt SecurityDisclaimer:The information in this article is provided "as is" withoutwarranty of any kind. Details provided are strictly foreducational and defensive purposes.Syhunt is not liable for any damages caused by direct orindirect use of the information provided by this article.

转载地址:http://mjhmb.baihongyu.com/

你可能感兴趣的文章
SMS基本概念和移动通信系统介绍(转)
查看>>
匿名FTP的安全设定(转)
查看>>
学习J2ME编程需要掌握的七种技术(转)
查看>>
DB2 UDB V8.1管理学习笔记(二)(转)
查看>>
IBM DB2 日常维护汇总(三)(转)
查看>>
怎样创建.NET Web Service(4)(转)
查看>>
Symbian OS 开发初级手册(转)
查看>>
限制只能中文输入的方法(转)
查看>>
MySQL进阶SELECT篇(转)
查看>>
SQL Server中死锁产生的原因及解决办法(转)
查看>>
南阳铁通推出宽带“网吧式”服务(转)
查看>>
共享池 shared pool
查看>>
一张图搞定Java面向对象
查看>>
DOORS需求管理工具的其他资料
查看>>
使用 Rational RequisitePro 进行需求管理的新技术
查看>>
最新解决方案助力Borland ALM亚太应用
查看>>
Borland ALM之需求定义和管理解决方案
查看>>
需求管理详解
查看>>
Verizon选择Borland控制开发流程并降低风险
查看>>
Borland 崭新的Caliber Define IT产品
查看>>