Java反序列化漏洞学习实践三-理解java的动态代理机制

0x0、基础

代理的使用场景:某程序员入职公司接手了一个项目,他读源码发现某些地方可以增强,比如在某些函数执行前应该打印日志。如果他直接在原始代码的基础上直接修改容易出错,他的做法是:自己实现一个类,和原始类实现相同的接口(或者继承相同的类),通过在方法中引用老程序的方法来实现自己的方法,从而实现在不改动源代码的基础上达到增强方法的目的。

代理模式:为其他对象提供一种代理以便控制对这个对象的访问(所谓控制,就是可以在其调用行为前后分别加入一些操作)。

代理模式分类:

  1. 静态代理,其实质是类的继承或接口的实现,比较容易理解,注意结合场景。
  2. 动态代理(Jdk动态代理),这是我们需要关注的重点,在反序列化漏洞的场景中需要用到!
  3. cglib动态代理

Java反序列化

Java反序列化

背景

Java反序列化漏洞最早是2015年年初AppSecCali会议上提出了漏洞利用思路,在2015年11月FoxGlove Security 安全团队才真实利用Java反序列化和Apache Commons Collections这一基础类库实现远程命令执行的,这个漏洞直接 可以攻击WebLogic、WebSphere、JBoss、Jenkins、OpenNMS的最新版,在当时被称为是”2015年最被低估的漏洞”。

Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有 力的数据结构类型并且实现了各种集合工具类。包括FileUpload、Betwixt、Commons Code、Commons Compress、 Commons CSV等开源工具(下面是JAVA COLLECTION 的介绍)。


HTTP请求走私漏洞分析

基础知识

HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议):一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动

HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

image-20200912191232407

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。


Linux下的字典生成工具Crunch,创造自己的专属字典

![password.jpg](Linux下的字典生成工具Crunch,创造自己的专属字典/15256173123056.jpg!small

Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。由其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。


Google hacking

  • Google hacking

    -ol4three

    第一章 搜索基础知识

    1.1Google搜索的黄金法则

    • Google限制搜索关键字最多为32个单词
    • Google查询是不区分大小写的: //or必须大写
    • Google的通配符 : *****
    • Google保留忽略查询关键字的权利:Google会忽略一个搜索中的某些常用单词、字母和一些单独的数字。指出这些词汇常称为“停用词”
    • 强制Google使用常见词汇的一种方法是把他们用引号引起来、或者在查询项之前加一个+号