安全路透社
当前位置:安全路透社 > 网络转载 > 正文

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

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

0×00 前言

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

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

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

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

0×01正文

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

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

<!-- robots.txt -->

得到hint

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

题目结合提示,应该是 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 但是要输入密码

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

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

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

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

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

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

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

0×02总结

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

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

未经允许不得转载:安全路透社 » 2017 MIAC移动安全赛第三场WEB300 PokeMongo

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册