0x00 前言
还是黑名单的绕过,等这篇写完我也去混一个试试
可以先看:
或者直接看总结也可以:
小于2.9.10.7
0x01 调用链
主要是设计javax.swing.JTextPane
poc:{"object":["javax.swing.JTextPane",{"page":"http://"}]}
,或者直接用JEditorPane也可以,因为JTextPane中也是调用JEditorPane。
在setPage方法处,可以触发URL
getStream处会传入url
在此处进行访问连接:
0x02 如何发现这条调用链
1.思路1
首先是需要找到一个触发的点,这里是SSRF。
那么我们需要关注的点就是,有一个方法中,存在一个变量URL,并且调用openConnection,并且这个变量URL必须是从参数传入的。
根据这个要求,我们来构建规则,可以很成功的扫到这个方法。类名这些可以忽略,做测试用的
调整一下规则:找到的方法比如要有入参,并且跟踪源里。并且是setter或者getter方法,并且要求和String进行绑定,则最终的扫描结果如下:
2.思路2
只要是继承JEditorPane的类都可以通过setpage进行触发。当然肯定是以默认可以调用的内容优先。
补充知识
Jackson
Jackson是一个基于Java语言的开源库,提供了一系列处理JSON格式数据的工具方法。它可以将Java对象转换成JSON格式,也可以将JSON格式的数据转换成Java对象。Jackson的主要优点包括模块化、高性能、易扩展、简单易用等。
Jackson提供了三个主要的API:
-
Streaming API:使用流式的方式读写JSON数据,适用于大型JSON数据的处理。
-
Tree Model API:将JSON数据解析为树型结构,适用于小型JSON数据的处理。
-
Data Binding API:通过Java对象和JSON数据的相互转换,支持对象继承、多态等高级特性。
Jackson还提供了多种插件和扩展,例如支持XML格式数据的jackson-dataformat-xml插件,支持协议缓存的jackson-module-afterburner扩展等。
JEditorPane
JEditorPane是Java Swing中提供的一个组件,它可以用来显示和编辑多种文本格式,比如HTML、RTF和纯文本等。它提供了良好的可扩展性,可以通过设置不同的渲染器来支持不同的文本格式。
JEditorPane的功能非常强大,可以用来创建浏览器、文本编辑器等应用程序。它支持各种文本样式,包括字体、颜色、大小等,并且可以与其他Swing组件无缝集成,比如JScrollPane、JToolBar等。
使用JEditorPane,我们可以将HTML等文本格式轻松地嵌入到Swing应用程序中,并且可以通过设置HyperlinkListener来处理文本中的链接和点击事件。此外,JEditorPane还提供了一些常用的操作,比如复制、剪切、粘贴等。
JTextPane
JTextPane 是一个 Swing 组件,它允许用户在一个支持富文本编辑的文本区域中进行编辑。JTextPane 类似于 JTextField,但支持富文本格式,如字体、颜色、大小、样式等。它可以用于创建简单的文本编辑器、富文本阅读器、Web 浏览器等应用程序。
JTextPane 继承自 JEditorPane 类,它包含很多 JEditorPane 不具备的功能,例如向文本区域中插入图片、超链接、表格等。JTextPane 还支持撤销和重做操作,用户可以通过菜单或快捷键来使用这些功能。JTextPane 还支持文本选择、剪切/复制/粘贴、查找和替换等功能。
除了支持富文本格式,JTextPane 还支持多种文本类型,例如 HTML、RTF 和 plain text。它还可以通过组合实现多种功能,例如将文本区域分成几个区域,每个区域具有不同的文本样式和功能。
CVE-2021-20190
CVE-2021-20190 is a vulnerability that exists in versions 1.11.0 and earlier of the Apache Log4j 2 library. The vulnerability is caused by an improper input validation issue in the Log4j 2 XML configuration parser, which can be exploited by an attacker to remotely execute arbitrary code or cause denial of service (DoS) on the affected system.
The vulnerability can be exploited by sending a specially crafted XML file to an application that uses the Log4j 2 library. If the application parses the XML file using a vulnerable version of Log4j 2, the attacker can execute arbitrary code on the system with the same privileges as the user running the application.
The vulnerability has been assigned a CVSS score of 9.8 out of 10, which indicates that it is a critical vulnerability that requires immediate attention. Users are advised to upgrade to the latest version of Log4j 2 (1.12.0 or later) to mitigate the vulnerability. Additionally, users are also advised to review their applications for Log4j 2 usage and check for any vulnerable dependencies.