参考深入学习Java代码审计技巧—详细剖析某erp漏洞-先知社区
环境搭建https://github.com/jishenghua/jshERP/releases/tag/2.3
java版本为1.8
创建完数据库之后,在application.properties文件中修改相关的数据库数据
然后就可以启动了
下面为一位师傅的审计思路,个人觉得是非常的有道理
对于Java代码审计,主要的审计步骤如下:
确定项目技术框架、项目结构
环境搭建
配置文件的分析:如pom.xml、web.xml等,特别是pom.xml,可以从组件中寻找漏洞
Filter分析:Filter是重要的组成部分,提前分析有利于把握项目对请求的过滤,在后续漏洞利用时能够综合分析
路由分析:部分项目请求路径与对用的controller方法不对应,提前通过抓包调试分析,了解前端请求到后端方法的对应关系,便于在后续分析中更快定位代码
漏洞探测
探测之前可借用工具辅助分析,如codeql、fortify、Yakit、BP等
SQL注入分析、RCE分析可先从代码入手,通过关键API及特征关键字来进行逆向数据流分析,从s ...
java内存马
未读参考Java内存马Java-Agent篇
概念一个运行中的 Java 程序运行在一个 JVM(Java 虚拟机)实例中。
Java Agent可以在程序运行时动态地修改Java字节码,进而动态地修改已加载或未加载的类、属性和方法的技术。
对于 Agent(代理)来讲,其大致可以分为两种,一种是在 JVM 启动前加载的premain-Agent,另一种是 JVM 启动之后加载的agentmain-Agent。这里我们可以将其理解成一种特殊的Interceptor(拦截器),如下图:Premain-Agent
agentmain-Agent
Java Agent实例环境配置起一个默认的Maven环境。
在项目的/src/main/目录下创建resources目录,并往下创建META-INF目录,在该目录下创建MANIFEST.MF文件,目录结构如下图:
在pom.xml中添加如下代码:
1234567891011121314151617181920212223242526272829303132333435<build> <pl ...
代码审计
未读前言本文先发于先知社区:代码审计-Echo2.3-先知社区
项目介绍开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + … 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。3000+Star的项目还是比较不错的
项目地址:https://gitee.com/veal98/Echo
环境搭建123456JDK 1.8.0_65Maven 3.9.9redis 3.0.504zookeeper 3.6.4kafka 2.12-3.5.1Elasticsearch 6.4.3
redis的安装较为简单,这里就不介绍了
对于zookeeper和kafka来说,两个是配套使用的,并且kafka就已经内置了适配的zookeeper了,不需要我们自己再去单独下载安装,要不然你还要考虑两个版本适不适配(吃了大亏。。。)
这里直接贴链接:https://www.cnblogs.com/Marydon20170307 ...
基础知识Java内存马系列-01-基础内容学习
JSP在正式学习内存马之前,我们先来简单了解一下jsp
JSP环境搭建根据网上一位师傅的文章进行搭建的:Servlet 项目搭建
JSP的语法脚本程序脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。脚本程序的格式如下
1<% 代码片段 %>
其等价于下面的XML语句
123<jsp:scriptlet> 代码片段</jsp:scriptlet>
下面是使用示例
12345678910111213<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><!DOCTYPE html><html><head> <title>JSP - Hello World</title></head><body><h1><%= " ...
java反序列化
未读
首发于先知社区,原文作者:Sherlock,原文链接:https://xz.aliyun.com/news/17923
前言最近开始学习spring链子,看网上分析spring链子的文章不多,讲的也比较简单,还都是yso中的spring1的链子分析,特此出一篇文章来详细分析spring1和spring2链子
Spring1spring版本范围在3.0.0到4.1.4
依赖
12345678910111213<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframewo ...
Write-Up
未读前言该比赛笔者并未参加,只是赛后默默自己复现着做
感谢比赛方伟大的开源:https://github.com/ZeroDaysCTF/ZeroDaysCTF_2025_Public
JohnAndMarys最主要的文件便是app.py,里面着重看下面这个函数
1234567891011121314151617181920@app.route('/order', methods=['GET','POST'])def order(): if request.method != 'POST': return redirect("/") sess_id = session.get('session_id') whiskey_limit = session_data[sess_id].get('whiskey_limit') time.sleep(1) order = request.json order[ ...
引用https://blog.hackpax.top/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E5%B7%A5%E5%85%B7%E5%88%A9%E7%94%A8%E7%AF%8702-codeql/
CodeQL概念CodeQL是一个免费开源的代码语义分析引擎,其利用QL语言对代码、执行流程等进行“查询”,以此实现对代码的安全性白盒审计,进行漏洞挖掘。
简单来说,CodeQL是一个把需要审计的项目先转化成类似数据库的形式,并基于该database进行分析的工具。
搭建1.下载CodeQL引擎https://github.com/github/codeql-cli-binaries/releases/latest/download/codeql.zip
先把该引擎配到环境变量,方便执行CodeQL语句。CodeQL配置环境变量只要把其根目录配进去就完事了,结果如下即可:
2.下载SDK:https://codeload.github.com/github/codeql/zip/refs/heads/main
我们之后要在该SDK下面写ql语 ...
java反序列化
未读引用WebDog必学的JDBC反序列化
JDBC反序列化漏洞分析
小白看得懂的MySQL JDBC 反序列化漏洞分析
Java安全之JDBC Attacks学习记录
JDBC简介BC(Java DataBase Connectivity)是一种用于执行Sql语句的Java Api,即Java数据库连接,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,可以为多种关系数据库提供统一访问,提供了诸如查询和更新数据库中数据的方法,是Java访问数据库的标准规范。简单理解为链接数据库、对数据库操作都需要通过jdbc来实现
原理分析简单demo首先我们先在maven引入依赖
12345<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency>
我们试着用jdbc来查询一下我们自己本机上的表
12345678 ...
前言看着这题目jar包有接近40Mb的时候就直接决定先去学下tabby的简单使用,由于学业影响和自己配置过程中遭遇了许多莫名其妙的报错导致花了三天才结束
开始做题,解题过程中发现其实不需要tabby,心有点痛(虽说这工具早晚都要学。。。)
题解先自己本地根据jar包搭了个环境以便进行调试
大概过了一下比较重要的文件,首先就是backdoor.class文件,里面重要的点是给了我们一个/read路由
12345678910111213141516171819202122@RequestMapping({"/read"}) public String read(@RequestBody String body) { if (body != null) { try { byte[] data = Base64.getDecoder().decode(body); String temp = new String( ...
前言原本没想着这么早就开学tabby,但由于学长发了个java题目来锻炼锻炼我的能力,一开压缩包我了个豆40MB,自己审计不知道要审到猴年马月,做ctf讲究一个效率,所以毅然决然来开tabby
(没想到开了三天才结束。。。)
环境搭建tabby配置(截至到2025.3.24,tabby最新版本为v2.0.0)
tabby需要的java版本为17,所以请先把自己电脑里面系统环境变量中的java版本改为17
在项目地址:https://github.com/wh1t3p1g/tabby的release下载下最新的tabby,如果出问题了可以pull一份源码自己本地用gradle编译一下(注意gradle使用的jdk环境也得是至少17)
一个编译打包好的tabby目录结构应该如下:
1234567891011121314151617181920$ tree.├── cases # 用于放置待分析的项目,可以是单个文件,也可以是目录│ └── commons-collections-3.2.1.jar├── config # 用于放置配置文件│ ├── db.properties ...