redis是一个高性能的key-value数据库,也经常被使用,今天来看看redis里面有什么好的利用方式,其一是利用redis写入shell,第二个就是写入ssh公钥进行登录。

FOfa语法

Redis简介

Redis(Remote Dictionary Server ),即远程字典服务,是个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis是个key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set —有序集合)和hash(哈希类型)。这些数据类型都支持 push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Ubuntu apt安装

Redis命令

redis分为服务器端和客户端,服务端上执行的是客户端发送过来的命令。Redis在安装完成之后会有redis-cli。

Redis配置文件

Redis的配置文件位于Redis安装目录下,文件名为redis.conf(Windows名为redis.windows.conf)。当然也可以通过指定配置文件来进行启动。列举些重要的配置项进行说明。

Redis漏洞利用

1)前置条件

将redis 绑定到 0.0.0.0 (般会通过ssrf gopher进行利用);

没有绑定redis到任何地址将protected-mode参数为no;

使用redis-server 启动redis服务 redis-cli 本地连接,启动成功。

将bind 改为 0.0.0.0

修改成功:

2)启动攻击机 kali 进行连接

Ubuntu(受害机) : 192.168.23.134

kali(攻击机) : 192.168.23.129

3)写入shell

成功写入。

4)写入SSH公钥

服务端的Redis连接存在未授权,在攻击机上能用redis-cli直接登陆连接,并未登陆验证。服务端存在.ssh目录并且有写入的权限。

在数据库中插入一条数据,将本机的公钥作为value,key无所谓,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件 authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成个授权的key,在kali的/root/.ssh目录里生成ssh公钥key。

将公钥导入key.txt文件,再把key.txt文件内容写入服务端Redis的缓冲里:

-x代表从标准输入读取数据作为该命令的最后个参数 :

使用kali连接服务端Redis,设置Redis的备份路径为/root/.ssh/和保存文件名为authorized_keys,并将数据保存在目标服务器上。

小结

可以看到,redis的两种利用方式,可以直接拿到shell,在内网中普遍使用。

举报/反馈

星云博创

19获赞 23粉丝
国内专业的安全产品和安全服务提供商
关注
0
0
收藏
分享