Apache Commons Jxpath

Apache Commons Jxpath RCE

Xpath是一门在XML文档中查找信息的语言,JXpath是Xpath的Java实现

由官方文档可知JXpath不仅提供了XPath解析XML文档,还实现了JavaBean、Collections、Map转XML。还有一点类似EL表达式的功能。

image-20230423085220284

JXpath除了XPath函数,还支持联通Java的扩展函数

  • 构造器调用

  • 静态方法调用

  • 普通方法调用

下面看一下JXPath是怎么解析并调用函数的

org.apache.commons.jxpath.ri.compiler.ExtensionFunction#computeValue

image-20230423090955881

name包括全类名和方法名,再加上参数类型,就能定位到类方法

image-20230423092315233

根据方法名返回ConstructorFunctionMethodFunction

image-20230423092641007

接着调用构造函数或静态函数 function.invoke(context, parameters);image-20230423091403475

构造器利用

Spring当中有两个类的构造函数远程加载配置,可以构成RCE

image-20230423093401834

静态方法利用

  • javax.naming.InitialContext#doLookup

image-20230423094150798
  • java.sql.DriverManager#getConnection

image-20230423095613752
  • com.alibaba.fastjson.JSON#parseObject

注意这里外边传参要用单引号,json字符串和外边传参都用双引号会解析错误

image-20230423102805538

普通方法利用

DASCTF Apr.2023 X SU战队2023开局之战

ezjxpath

WAF禁用了一些危险类

  • BCEL绕过

官方wp:

其他一些想法:

Reference

Last updated

Was this helpful?