CVE-2024-23328分析
CVE-2024-23328分析漏洞概述:DataEase是一款开源的数据可视化分析工具。DataEase数据源中存在一个反序列化漏洞,可以被利用来执行任意代码。漏洞代码位于core/core-backend/src/main/java/io/dataease/datasource/type/Mysql.java文件中。可以绕过mysql jdbc攻击的黑名单,攻击者可以进一步利用该漏洞进行反序列化执行或读取任意文件。该漏洞已在1.18.15和2.3.0版本中修复。
调试环境搭建去官网或github下载安装包和源代码,然后再linux部署,这里下载的是1.18.14版本的
下载完成后解压,然后编辑/detaease-vxxx/dataease/docker-compose.yml,添加调试端口5005
然后运行/detaease-vxxx/install.sh等待docker部署完成
docker部署后是有两个容器,进入detaease的容器编辑文件/deployments/run-java.sh ,添加调试参数
在debug_options()中添加:
echo "-ag ...
Xposed模块编写学习
Xposed模块编写学习Xposed原理Xposed是一款可以在不修改APK的情况下影响程序运行的框架,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在这个框架下,我们可以编写并加载自己编写的插件APP,实现对目标apk的注入拦截等。
用自己实现的app_process替换掉了系统原本提供的app_process,加载一个额外的jar包,入口从原来的: **com.android.internal.osZygoteInit.main()被替换成了: de.robv.android.xposed.XposedBridge.main()**,创建的Zygote进程就变成Hook的Zygote进程了,从而完成对zygote进程及其创建的Dalvik/ART虚拟机的劫持(zytoge注入)
从本质上来讲,Xposed 模块也是一个 Android 程序。但与普通程序不同的是,想要让写出的Android程序成为一个Xposed 模块,要额外多完成以下四个硬性任务:
1、让手机上的xposed框架知道我们安装的这个程序是个xposed模块。
2、模块里要包含有x ...
安卓逆向基础(一)
安卓逆向基础以下内容全部来自安卓逆向这档事
这里只是记录、学习
环境搭建视频:https://www.bilibili.com/video/BV1wT411N7sV/?spm_id_from=333.788&vd_source=f207ef8a90cd02e940572d9dc7c00d8b
(1)安卓模拟器安装
MUMU或雷电
这里使用的是雷电9
(2)模拟器配置
开启ROOT权限 、开启磁盘可写
(3)安装面具Magisk和LSPosed
Magisk Delta :https://huskydg.github.io/magisk-files/
LSPosed: https://github.com/LSPosed/LSPosed (zygisk)
(4)核心破解(软件)
CorePatch: https://github.com/LSPosed/CorePatch
核心破解是一款基于xposed模块开发的小工具。可以用来去除系统签名校验,直接安装修改过的未签名APK,禁用apk签名验证、覆盖安装不同签名应用的功能。
(5)算法助手
com.junge.algorithm ...
JetBrains TeamCity漏洞分析
JetBrains TeamCity漏洞分析前言文章首发于奇安信攻防社区
简介JetBrains TeamCity是一款由JetBrains开发的持续集成和持续交付(CI/CD)服务器。JetBrains TeamCity发布新版本(2023.11.4)修复了两个高危漏洞JetBrains TeamCity 身份验证绕过漏洞(CVE-2024-27198)与JetBrains TeamCity 路径遍历漏洞(CVE-2024-27199)。未经身份验证的远程攻击者利用CVE-2024-27198可以绕过系统身份验证,创建管理员账户,完全控制所有TeamCity项目、构建、代理和构件,为攻击者执行供应链攻击。远程攻击者利用该漏洞能够绕过身份认证在系统上执行任意代码。
环境搭建参考下面链接,使用docker搭建环境
https://github.com/W01fh4cker/CVE-2024-27198-RCE?tab=readme-ov-file
sudo docker pull jetbrains/teamcity-server:2023.11.3
sudo docker r ...
CodeQL小记
CodeQL小记前言这个文章是用来记录学习CodeQL过程中遇到的问题和一些常用的东西
创建数据库按照自己的理解,codeql创建java类的数据库是通过编译过程中获取AST
开源对于有开源的系统直接使用官方的就行
codeql database create <database> --language=<language-identifier>
指定build命令
codeql database create java-database --language=java --command="mvn clean install"
闭源对于闭源项目,首先考虑是否存在已知数据库,然后再自己构建
构建闭源项目的数据库,直接使用Gitbub上的开源项目,有时候需要自己修改一些东西,遇到问题解决问题
https://github.com/webraybtl/CodeQLpy
https://github.com/waderwu/extractor-java
单jar/war文件这种情况下,目前我只使用过CodeQLpy,
python ...
从CVE-2023-21839到CVE-2024-20931
从CVE-2023-21839到CVE-2024-20931前言某天刷手机看到微信公众号上发布的漏洞通告 “Oracle WebLogic Server JNDI注入漏洞(CVE-2024-20931)” 就联想到了WebLogic之前也存在过的JNDI注入漏洞,分别是CVE-2023-21839 和 CVE-2023-21931 。漏洞通告中说的是CVE-2023-21839的补丁绕过,于是就想看看绕过,学习学习,也回顾一下前面两个漏洞
远程绑定对象Weblogic t3/iiop协议支持远程绑定对象bind到服务端,并且可以通过lookup查看
// 创建远程对象
MyRemoteObject remoteObject = new MyRemoteObject();
// 获取上下文
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PRO ...
Struts2漏洞系列
Struts2漏洞系列前言春节假期结束,回来不知道该干些什么,就找点事情做。之前没有怎么接触和了解过Struts2这个框架,只知道它好多洞,于是就趁现在学习一下。下面调试的是几个可以rce的漏洞。
各个漏洞详情查看:https://cwiki.apache.org/confluence/display/WW/Security+Bulletins
Struts 2 概述Struts2是一个基于MVC(Models、View、Controller)设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 Struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的 ...
CodeQL挖掘fastjson漏洞
fastjson反序列化这个漏洞原理这里就不过多BB了,简单解释:
fastjson反序列化的触发点在 parse 或者 parseObject 方法,该方法一个参数会接受一个json字符串,然后将其反序列化为一个java对象并调用其 getXXX 或 setXXX 方法。攻击者可以精心构造一个json字符串,触发危险的 getXXX 或 setXXX 方法,导致产生危害严重的漏洞
参考:https://tttang.com/archive/1579/
Source按照Spring框架,这个Source一般定义为各种Controller的参数或者request.getParameter等
可能还有其他,具体问题具体分析
代码如下:
class AllControllerMethod extends Method{
AllControllerMethod(){
exists(RefType rt |
rt.getName().indexOf("Controller")>0 and
thi ...
CodeQL挖掘MyBatis框架的SQL注入
MyBatis的SQL注入MyBatis支持两种参数符号,一种是#,另一种是$。使用参数符号#的句子:
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
MyBatis会创建一个预编译语句,生成的代码类似于
// Similar JDBC code, NOT MyBatis…
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);
参数会在SQL语句中用占位符”?”来标识,然后使用prepareStatement来预编译这个SQL语句\
另一种使用参数符号$时,MyBa ...
XML-RPC反序列化漏洞
XML-RPC反序列化漏洞XML-RPCXml-RPC是一个远程过程调用(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。
CVE-2016-5003环境搭建:
起一个Maven项目导入下面依赖:
<dependencies>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-server</artifa ...