没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
CVE-2020-9496 ofbiz反序列化漏洞分析
0x00 apache ofbiz介绍
OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规
范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB
应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工
具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。
0x01 漏洞影响版本
< 17.12.04版本
0x02 漏洞环境搭建
https://github.com/dwisiswant0/CVE-2020-9496
参考上述文章,搭建漏洞环境:
在IDEA中载入整个项目:
使用Gradle进行debug调试,配置如下:
debug启动程序后,访问 https://localhost:8443/myportal/control/main 。
wget http://archive.apache.org/dist/ofbiz/apache-ofbiz-17.12.01.zip
▶ unzip apache-ofbiz-17.12.01.zip
▶ cd apache-ofbiz-17.12.01
▶ sh gradle/init-gradle-wrapper.sh
▶ ./gradlew cleanAll loadDefault
▶ ./gradlew "ofbiz --load-data readers=seed,seed-initial,ext"
▶ ./gradlew ofbiz # Start OFBiz
注:如果遇到 java.lang.UnsupportedClassVersionError:
com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0 错误,
把 at.bxm.gradleplugins:gradle-svntools-plugin:xxx 这处的xxx改成2.2.1。
0x03 POC
id: CVE-2020-9496
info:
name: Apache OFBiz XML-RPC Java Deserialization
author: dwisiswant0
severity: medium
# This temaplte detects a Java deserialization vulnerability in Apache
# OFBiz's unauthenticated XML-RPC endpoint /webtools/control/xmlrpc for
# versions prior to 17.12.04.
# --
# References:
# - https://securitylab.github.com/advisories/GHSL-2020-069-apache_ofbiz
requests:
- raw:
- |
POST /webtools/control/xmlrpc HTTP/1.1
Host: {{Hostname}}
Content-Type: application/xml
<?xml version="1.0"?><methodCall>
<methodName>ProjectDiscovery</methodName><params><param>
<value>dwisiswant0</value></param></params></methodCall>
matchers-condition: and
matchers:
- type: word
words:
- "faultString"
- "No such service [ProjectDiscovery]"
- "methodResponse"
condition: and
part: body
- type: word
words:
根据这个yaml,可以了解到,当post一个xml的poc过去后,如果返回包里同时存在 faultString , No
such service [ProjectDiscovery] , methodResponse 证明有漏洞存在。
0x04 漏洞分析
根据 /webtools/control/xmlrpc 可知,我们去看webtools下的源码,来到webapp目录下的web.xml
查看路由情况。
通过代码可知道,我们control下面的uri都是转发到ControlServlet控制器当中。跳转到
org.apache.ofbiz.webapp.control.ControlServlet 的源码,在doPost里打下断点。
根据经验,下面这段代码才是路由器功能具体细分的代码,在这之前是对一些列的环境变量进行复制。
- "Content-Type: text/xml"
part: header
- type: status
status:
- 200
<servlet>
<description>Main Control Servlet</description>
<display-name>ControlServlet</display-name>
<servlet-name>ControlServlet</servlet-name>
<servlet-class>org.apache.ofbiz.webapp.control.ControlServlet</servlet-
class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>/control/*</url-pattern>
</servlet-mapping>
剩余13页未读,继续阅读
查理捡钢镚
- 粉丝: 17
- 资源: 317
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0