您的位置:首页 > 数据库 > Redis

提权的魅力——redis未授权漏洞

2017-11-19 21:49 232 查看

0x00

靶场最后那个flag3在root目录下,是没有权限读的。

拿到flag2以后,下面有个那行redis是提示 ,

他给了redis远程登陆的密码 ,

可以用哪个东西提权以后再拿flag3

redis未授权访问的漏洞

0x01

redis是什么?

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。

0x02

未授权访问redis漏洞:

1. 漏洞概述(知道创宇)

Redis默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功在Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

默认redis启动的用户如果没有修改,会以root方式启动,这样就redis就可以在任意位置写入公钥文件,继而可以完成远程控制。

2. 漏洞利用原理

a. redis监听在外网的6379端口,且无密码访问(当我们知道密码时,相当于没密码!!!就也可以访问了)

b. 连接redis,可以指定redis的配置文件路径

c. 连接redis,将公钥以key值的方式写入redis,并且保存为authoried_keys

d. 远程ssh无密码连接

0x03

先要安装redis;

linux安装:http://blog.csdn.net/ldl22847/article/details/45171923

windos安装:http://www.mamicode.com/info-detail-1497325.html

下载



解压



make(编译)



redis-cli 登陆redis客户端

要启动Redis客户端,请打开终端并键入命令redis-cli。 这将连接到您的本地Redis服务器,现在可以运行任何的Redis命令了。

要在Redis远程服务器上运行命令,需要通过客户端redis-cli连接到服务器

语法

[yiibai@ubuntu:~]$ redis-cli -h host -p port -a password

Shell

示例

以下示例显示如何连接到Redis远程服务器,在主机(host)127.0.0.1,端口(port)6379上运行,并使用密码为 mypass。

[yiibai@ubuntu:~]$ redis-cli -h 127.0.0.1 -p 6379 -a "mypass"



一开始很多错误,不断尝试,总算是进去了(感觉自己是个智障)



本地生成ssh,RSA密钥



将我们的密码放到目标主机中:连接redis,将公钥以key值的方式写入redis,并且保存为authoried_keys,然后指定redis的配置文件的路径。





配置好路径,写入了authoried_key,之后就可以在我们的主机远程登陆目标机了!!!

而且是root权限,然后查看root下的一个文件flag3,小意思啦23333



0x04

总结:

我所理解的未授权访问redis漏洞,就是指纹解锁:首先,你可以登陆redis,但是redis里没有你的指纹,所以可以通过构造你的指纹(就是在自己的机器上弄一个指纹rsa)并且存入redis。就好像把你的指纹留在了别人的手机里。然后,你就可以远程登陆服务器了。就像在别人不允许的情况下,解锁别人的手机一样。
在实际做的时候,遇到了很多问题,不断尝试、请教大神和查找资料总算解决了。

0xff

原文链接:
https://bbs.ichunqiu.com/thread-7069-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CTF 漏洞 redis