JNDI绕过高版本jdk限制2-JDBC
dbcp123456789101112131415161718192021222324252627282930313233343536373839404142434445import com.sun.jndi.rmi.registry.ReferenceWrapper;import com.sun.xml.internal.ws.api.ha.StickyFeature;import org.apache.naming.ResourceRef;import javax.naming.Reference;import javax.naming.StringRefAddr;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;public class ldapbypass { private static Reference dbcpByFactory(String factory){ Refe ...
JNDI绕过高版本jdk限制1
限制:123JDK 6u141、7u131、8u121之后:增加了com.sun.jndi.rmi.object.trustURLCodebase选项,默认为false,禁止RMI和CORBA协议使用远程codebase的选项,因此RMI和CORBA在以上的JDK版本上已经无法触发该漏洞,但依然可以通过指定URI为LDAP协议来进行JNDI注入攻击。JDK 6u211、7u201、8u191之后:增加了com.sun.jndi.ldap.object.trustURLCodebase选项,默认为false,禁止LDAP协议使用远程codebase的选项,把LDAP协议的攻击途径也给禁了。
绕过jdk8u121-jdk8u191: 就是把rmi协议改成ldap协议就行
jdk8u191之后:
本地类作为Reference Factory那些类的要求:
传入的 Factory 类必须实现 ObjectFactory 接口类,至少有一个getObjectInstance()方法
恶意类的只有一个参数,参数类型是String.class的可以执行危险函数
ELProcessorpoe.xm ...
fastjson篇2-漏洞复现和版本绕过
1.2.24基于TemplatesImpl的利用链这个链子和CC3有点像,Java动态加载字节码当时CC3是:1TemplatesImpl#newTransformer()->TemplatesImpl#getTransletInstance()->....但是getTransletInstance()不符合fastjson反序列化调用get方法的要求,它返回的是一个抽象类AbstractTranslet因此寻找谁调用的TemplatesImpl#newTransformer()找到getOutputProperties()`方法,符合要求12getOutputProperties() ---> newTransformer() ---> TransformerImpl(getTransletInstance(), _outputProperties, _indentNumber, _tfactory);
Evil.java123456789101112131415161718import com.sun.org.apache.xalan.internal ...
fastjson篇1-基础用法
Fastjson 是 Alibaba 开发的 Java 语言编写的高性能 JSON 库,用于将数据在 JSON 和 Java Object 之间互相转换。
两个接口:
JSON.toJSONString 将 Java 对象转换为 json 对象,序列化的过程。
JSON.parseObject/JSON.parse 将 json 对象重新变回 Java 对象;反序列化的过程
poe.xml12345678910<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version></dependency><dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> ...
2023 0CTF newdiary复现
app.js12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020 ...
DubheCTF2024 wp
ezPythonCheckin一个pyjail,过滤了一些危险函数,直接open读取即可1234567891011121314151617181920212223242526272829303132import base64black_list = [ "nosec", "import", "load", "''", '""', "[]", "{}", "().", "builtins", "dict", "dir", "locals", "base", "classes", "+", "mro", " ...
JAVA反序列化之CC1链分析
环境maven加依赖:1234567<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency></dependencies>jdk8u65:https://blog.lupf.cn/articles/2022/02/19/1645283454543.htmlsun包:http://hg.openjdk.org/jdk8u/jdk8u/jdk/archive/af660750b2f4.zip
需要将sun包下载的jdk的src/share/classes/sun拷贝到jdk8u65的src文件夹里IDEA的项目结构的SDKs将jdk8u65的SourcePath加上之前jdk8u ...
JAVA反序列化基础和URLDNS链
一些小基础HashMap类学习参考: https://www.cainiaojc.com/java/java-hashmap.htmlHashMap是以键值对存储的哈希表,包在java.util.HashMap
几个常见方法:
put():插入指定的键值对到map中
entrySet():返回一组所有键值对映射的map
keySet(): 返回map的所有键集合
values(): 返回map所有值的集合
get(): 返回指定键对应的值
remove(key): 返回并删除对应键的值
replace(key,value): 将key对应的值换成value
eg1234567891011121314151617181920212223import java.util.HashMap;class Main { public static void main(String[] args) { HashMap<String, Integer> numbers = new HashMap<>(); numbers. ...
攻防世界刷题1
ez_curl考点:
nodejs的parameterLimit1000个限制
RFC 7230,header字段可以通过在每一行前面至少加一个SP(空格)或HT(制表)来扩展到多行,node正好支持
12345678910111213141516const express = require('express');const app = express();const port = 3000;const flag = process.env.flag;app.get('/flag', (req, res) => { if(!req.query.admin.includes('false') && req.headers.admin.includes('true')){ res.send(flag); }else{ res.send('try hard'); } ...
CVE-2023-21839复现
简介Weblogic t3/iiop协议支持远程绑定对象bind到服务端,并且可以通过lookup查看,当远程对象继承自OpaqueReference时,lookup查看远程对象,服务端会调用远程对象的getReferent方法,weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference并且实现了getReferent方法,并且存在var5 = var4.lookup(this.remoteJNDIName);实现,故可以通过rmi/ldap远程协议进行远程命令执行。
影响版本:
12.2.1.3.0
12.2.1.4.0
14.1.1.0.0
环境搭建1docker pull vulhub/weblogic:12.2.1.3-2018
1docker run -d -p 7001:7001
ifconfig看一下虚拟机对外网的ip
物理机访问
复现Dnslog:
反弹shellJNDI工具:https://github.com/WhiteHSBG/JNDIExploit/releases/tag/v1 ...