freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课
FreeBuf+小程序

FreeBuf+小程序

官方公众号企业安全新浪微博

国内领先的互联网安全新媒体,同时也是爱好者们交流与分享安全技术的社区

2017 MIAC移动安全赛第三场WEB300 PokeMongo 金币
2017-11-20 08:30:22

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

0x00 前言

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

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

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

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

0x01正文

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

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

<!-- 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

0x02总结

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

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

本文作者:, 转载请注明来自FreeBuf.COM

# 2017MIAC移动安全赛 # WEB300 PokeMongo
被以下专栏收录,发现更多精彩内容
+ 收入我的专栏
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦