2017 MIAC移动安全赛第三场WEB300 PokeMongo

黑客与极客 / 2018年02月21日 07:38

互联网+

*本文作者:小石,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

0×00 前言

WEB300 PokeMongo 这题主要考察的就是NoSQL的注入,附加上Bypass。

对于SQL注入攻击大家都耳熟能详了,但对于NoSQL就比较陌生了。

自MongoDB 2.4以后的版本采用V8引擎执行所有Java代码,允许同时运行多个Java操作,MongoDB提供了对Java的完整支持,如在Node.js、MongoDB服务器端和mongo shell里面都提供非常好的支持。

0×01正文

打开题目链接是一个登录框。

查看源代码,发现一行注释

得到hint

题目结合提示,应该是 MongoDB 用 JS 做查询,大概逻辑为

对于MongoDB JS可以看下这里

https://www.cnblogs.com/javaminer/p/3684695.html

this.username=='$username' && this.password=='$password'

用“逻辑或”绕过登录 这样表达式就变成了永真式

用户名admin 密码1′ || ’1 查询的逻辑大概就为

this.username=='admin' && this.password=='1' || '1'

登录之后提示要进行文件的读取 file/ReadMe.txt 但是要输入密码

于是返回 利用前面的逻辑表达式对 password 进行盲注 根据回显进行查询结果判断 算是个布尔盲注

1' || this.password[0]>'a

不嫌麻烦的手工..懒的就写脚本跑 得到密码后尝试读文件 文件内容说要在/etc目录下读文件

尝试读取 但是被过滤了 一阵fuzz 发现输入包含 ReadMe 且不以其开头 即可绕过

aaReadMe/../../../../../../../etc/passwd

又得到另一个提示 读取 /etc/init.d/apache2 即可拿到flag

0×02总结

对于SQL注入的攻击大家都已经非常重视,并且给出了许多防御的措施。但对于热度很高且流行的NoSQL注入攻击是容易被大家忽略的。

*本文作者:小石;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。返回搜狐,查看更多

责任编辑:

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。