Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用spring boot和自定义java类复制jackson漏洞CVE-2017-7525_Java_Spring Boot_Jackson_Deserialization - Fatal编程技术网

使用spring boot和自定义java类复制jackson漏洞CVE-2017-7525

使用spring boot和自定义java类复制jackson漏洞CVE-2017-7525,java,spring-boot,jackson,deserialization,Java,Spring Boot,Jackson,Deserialization,如前所述,我了解到正在进行的jackson漏洞(CVE-2017-7525),该漏洞允许远程代码执行。 我对该页面上给出的示例类做了一些修改,并编写了如下内容: import java.io.*; 导入java.net。*; 公开类攻击扩展了com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet{ 私有静态字符串urlString=”https://sv443.net/jokeapi/category/any?blackl

如前所述,我了解到正在进行的jackson漏洞(CVE-2017-7525),该漏洞允许远程代码执行。 我对该页面上给出的示例类做了一些修改,并编写了如下内容:

import java.io.*;
导入java.net。*;
公开类攻击扩展了com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet{
私有静态字符串urlString=”https://sv443.net/jokeapi/category/any?blacklistFlags=nsfwreligiouspolitical";
公共漏洞()引发异常{
StringBuilder结果=新建StringBuilder();
URL=新URL(URL字符串);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod(“GET”);
BufferedReader rd=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
弦线;
而((line=rd.readLine())!=null){
结果。追加(行);
}
rd.close();
//让我们看看日志里的笑话
系统输出打印项次(结果);
}
@凌驾
public void转换(com.sun.org.apache.xalan.internal.xsltc.DOM文档,com.sun.org.apache.xml.internal.dtm.dtmaxiiterator迭代器,com.sun.org.apache.xml.internal.serializer.SerializationHandler){
}
@凌驾
public void转换(com.sun.org.apache.xalan.internal.xsltc.DOM文档,com.sun.org.apache.xml.internal.serializer.SerializationHandler[]handler){
}
}
编译.java文件并打开生成的.class文件,并将其内容作为提供的示例api请求体的一部分进行传递,但是看起来自定义代码可能尚未执行(或者我认为是这样),我希望在应用程序日志中看到一些内容,打印请求的输出。然而,我没有看到任何正在打印的内容。 是否有人有一个简单的示例,通过使用假jackson的api调用,使用spring boot和jackson展示此漏洞

我知道这是一个不寻常的问题,但我正在研究这个有趣的话题,希望有人已经认识到需要演示这个问题


简而言之,我希望在使用spring boot jackson时演示此java反序列化漏洞,方法是调用api并传递包含要执行的编译java代码的Json文档。

您是否检查了jackson的版本,如他所述,jackson已经将一些类列入黑名单,如
com.sun.org.apache.xalan.internal.xsltc.trax.templatesiml
,他还指出
要利用这个问题,库的用户必须启用默认类型(mapper.enableDefaultTyping),如果没有这样做,那么这里的利用就不起作用,由于您无法创建任意对象。
因此您必须在jackson上手动启用此功能,因此漏洞攻击无法立即利用。您是否在有效负载中对类进行base64编码?这取决于您使用的
jackson
版本。一些错误已经修复:,我忘记了编码,也忘记了降低版本。让我尝试进行编码,降低版本并启用默认键入。