使用golang创建web应用易受mongodb的nosql注入攻击

aurhwmvo  于 2021-08-09  发布在  Java
关注(0)|答案(0)|浏览(317)

为了学习,我尝试使用golang和 httprouter 从https://github.com/julienschmidt/httprouter 它应该很容易受到通过mongodb注入nosql的攻击。据我所知,使用javascript执行这样的攻击应该相当容易,但我还没有找到任何关于golang的信息。
我可以用javascript编写web应用程序,但我不熟悉javascript,更喜欢使用golang。
据我所知,nosql注入可以使用诸如 $exists, $gt, $where 对我来说,攻击向量是使用嵌套查询对象,使用这些操作符。在服务器上对它进行硬编码还不会带来问题,为了让它完美地工作,json需要 bson ; 这就是问题的症结所在。我似乎找不到一种方法将用户的输入传递给 bson.M(unordered) 或者 bson.D (ordered) ,需要允许。查找运算符以接受嵌套的 bson .
希望我说的有道理,下面是两个例子,上面的一个从用户那里获取输入,下面的一个有一个嵌套的bson硬编码。

//Fetch user
name := p.ByName("name")
c := uc.session.DB("godb").C("users")
if err := c.Find(bson.M{"name": name}); err != nil {
    w.WriteHeader(404)
    return
}

d := uc.session.DB("godb").C("users")
if err := d.Find(bson.M{"name": bson.M{`$gt`: ""}}); err != nil {
    w.WriteHeader(404)
    return
}

最上面的代码返回一个空数组,因为用户的输入并没有作为 bson 正确地。第二个代码返回mongodb中的所有文档。在这件事上如有任何帮助,我将不胜感激

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题