Vulhub漏洞系列:Couchdb漏洞(CVE-2017-12635、CVE-2017-12636)

Vulhub漏洞系列:Couchdb漏洞(CVE-2017-12635、CVE-2017-12636)

00.前言


这篇文章将对该漏洞进行简介并复现,同时简要说明Vulhub的使用方法,适合小白一起学习,大佬看看就好☺


01.Couchdb简介

CouchDB是一个利用JSON文件来存贮数据,javascript作为MapReduce查询,以及常规HTTP作为API的且面向文档的开源数据库管理系统。

02.漏洞描述

0x01:CVE-2017-12635:


该漏洞的原理是因为Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。

% Within couch_util:get_value

lists:keysearch(Key, 1, List).

点击查看keysearch原理(不带函数Pred的第14条)

对于给定的键,Eralang解析器将存储两个值,但是JavaScript只存储第二个值。但是在jiffy实现的时候,getter函数只返回第一个值

举个栗子:

Erlang:
jiffy:decode("{“a”:“1”, “a”:“2”}").
结果:{[{<<“a”>>,<<“1”>>}{<<“a”>>,<<“2”>>}]}

JavaScript> JSON.parse("{“a”:“1”, “a”: “2”}")
结果{a: “2”}


0x01:CVE-2017-12636:


该漏洞由于数据库自身设计原因,管理员身份可以通过HTTP(S)方式,配置数据库。在某些配置中,可设置可执行文件的路径,在数据库运行范围内执行。

CVE-2017-12635结合CVE-2017-12636可实现远程代码执行

03.漏洞复现

  首先,在vulhub-master中漏洞的相应位置打开终端,输入docker-compose up -d打开环境:

  docker-compose up -d

  然后输入docker ps查看环境是否打开成功:

  docker ps

1.访问搭建完成以后的couchdb(该环境为2.1.0版本)http://192.168.10.139:5984/_utils/#login:
在这里插入图片描述我们先尝试构建用户的数据包:
在这里插入图片描述可以看出我们是没有权限的,所以会报错forbidden。其中org.couchdb,user: $ name 与name: $ name是对应的,接下来我们开始利用漏洞原理进行攻击:

在这里插入图片描述发现返回200,攻击成功,账号和密码分别是ccooll,123456。用该账户进行登录:
在这里插入图片描述CVE-2017-12635漏洞复现成功!


接下来根据上面漏洞获得的管理员账号进行CVE-2017-12636漏洞的复现,因为该必须登录到管理员用户才能进行操作。我们先下载该漏洞的poc:https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py,然后将exp.py里的相应ip和couchdb版本号进行修改即可:
在这里插入图片描述

用攻击机开启监听443端口,然后在有python3的机子上运行exp.py:
在这里插入图片描述

这样攻击机便与建立了会话连接且是root权限:
在这里插入图片描述

成功反弹,CVE-2017-12636漏洞也复现成功。

最后复现完漏洞就可以关闭环境了:

  docker-compose down

参考:https://mp.weixin.qq.com/s/UZwE15VEjHjVkv9mC_uLLQ

结束语:这是抬锅整理出来的复现过程希望能对大家有帮助☺

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
root:$6$RMpgG8z.$GrGzDK0J1/uXc/Z2WIp6WgIYEB6Bi/Sw2aCc86U2E.BK80mszROf4K1ZB172DOQzgRb6U/2jGPh/8rwXQsbM3/:17277:0:99999:7::: daemon:*:17272:0:99999:7::: bin:*:17272:0:99999:7::: sys:*:17272:0:99999:7::: sync:*:17272:0:99999:7::: games:*:17272:0:99999:7::: man:*:17272:0:99999:7::: lp:*:17272:0:99999:7::: mail:*:17272:0:99999:7::: news:*:17272:0:99999:7::: uucp:*:17272:0:99999:7::: proxy:*:17272:0:99999:7::: www-data:*:17272:0:99999:7::: backup:*:17272:0:99999:7::: list:*:17272:0:99999:7::: irc:*:17272:0:99999:7::: gnats:*:17272:0:99999:7::: nobody:*:17272:0:99999:7::: systemd-timesync:*:17272:0:99999:7::: systemd-network:*:17272:0:99999:7::: systemd-resolve:*:17272:0:99999:7::: systemd-bus-proxy:*:17272:0:99999:7::: _apt:*:17272:0:99999:7::: mysql:!:17272:0:99999:7::: epmd:*:17272:0:99999:7::: Debian-exim:!:17272:0:99999:7::: uuidd:*:17272:0:99999:7::: rwhod:*:17272:0:99999:7::: redsocks:!:17272:0:99999:7::: usbmux:*:17272:0:99999:7::: miredo:*:17272:0:99999:7::: Debian-snmp:!:17272:0:99999:7::: ntp:*:17272:0:99999:7::: stunnel4:!:17272:0:99999:7::: sslh:!:17272:0:99999:7::: rtkit:*:17272:0:99999:7::: postgres:*:17272:0:99999:7::: dnsmasq:*:17272:0:99999:7::: messagebus:*:17272:0:99999:7::: iodine:*:17272:0:99999:7::: arpwatch:!:17272:0:99999:7::: couchdb:*:17272:0:99999:7::: avahi:*:17272:0:99999:7::: sshd:*:17272:0:99999:7::: colord:*:17272:0:99999:7::: saned:*:17272:0:99999:7::: speech-dispatcher:!:17272:0:99999:7::: pulse:*:17272:0:99999:7::: king-phisher:*:17272:0:99999:7::: Debian-gdm:*:17272:0:99999:7::: dradis:*:17272:0:99999:7::: beef-xss:*:17272:0:99999:7::: xrdp:!:17472:0:99999:7::: lightdm:*:17472:0:99999:7::: ctf:$6$d1Y17YhS$P1G.pKFO6VKvKx.y0H7nP5kXAHUAhj6hYroEA.ThT1/kErw37IhVclt.UWCFXrfq/sEZk1jhb52KlPWidJKpp0:17473:0:99999:7:::
07-13
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值