cc链5
环境准备和cc1一样 分析尾部的命令执行部分,和cc链1一样 123456789101112Class c = Runtime.class; Transformer[] T = { new ConstantTransformer(c), new InvokerTransformer("getDeclaredMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}), new InvokerTransformer("exec", new...
cc链3
环境准备我用的cc1的环境 分析cc链3主要使用的是任意类的加载作为尾部实现攻击,使用的是TemplatesImpl的defineTransletClasses方法中调用的defineClass(TransletClassLoader是Templates类的副类而它的父类正好就是ClassLoader),这边对defineClass的调用正好就是对父类defineclass的调用。 注意点: 这是一个全新的方法,不算重写(个人理解),后面的才是一个调用父类defineclass方法的函数。 然后找谁调用defineTransletClasses方法,是getTransletInstance这个方法,这个方法中有一个参数要控制一下 _name不能为空,_class必须要为空,在找谁调用了getTransletInstance,是newTransformer方法 这个属性要传参,就会报错出问题,怎么解决呢? 给它这个值即可。 然后是_bytecodes这个属性,是一个二维的,这里我们让一维byte等于恶意类的字节码,然后再以数组的形式套上一层。 12byte[] b = Fi...
WestWild
信息收集 扫描出靶机 扫描端口号 漏洞扫描 目录扫描 渗透过程我们在信息收集中对端口扫描时发现了445端口,开启了SMB协议。 可能存在共享目录,可以枚举用户和查找共享文件(工具:enum4linux) 1enum4linux 192.168.213.134 这里有一个共享文件,我们尝试访问 空密码 我们把文件get到本地查看 含有flag1和用户名与密码,上述信息收集中有22端口开放,尝试连接一下 权限不够,尝试提权 找具有写的权限的文件 发现可执行文件 又一组账号密码,登陆看看 爽遭了。 结束
cc链2
环境准备依赖 12345678910111213<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.22.0-GA</version> </dependency> </depende...
Me_and_My_girlfriend
环境准备https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 靶机下载,然后和Hackademic.RTB1一样就行 复现 扫一下,发现靶机 开放ssh 22端口 xff伪造一下,在bp里配置一下规则试每次发包都含有xff的伪造 在内置浏览器就可以访问了 随便注册一个然后进行登陆 可以测试一下 泄露了用户名和密码,我们猜测此用户名和密码和ssh远程登陆的用户名和密码有关 尝试登陆,id为5可以登陆成功 拿到flag1 然后进行信息收集 php提权, 进入root得到flag2
Hackademic.RTB1靶场复现
环境准备靶场地址,直接下来搭建就行 https://www.vulnhub.com/entry/hackademic-rtb1,17/ 然后用kali进行攻击 这边可以选择NAT,打开就行,不许要知道账号密码 复现扫描到这个靶场 信息收集找到 wordpress我们可以搜索一下有什么漏洞 这边有sql注入,我们可以测试一下 存在注入点,我们使用sqlmao去跑 账户和密码 扫一下目录 然后我们一个一个试一下 会发现admin是GeorgeMiller q1w2e3 然后我们可以更改上传文件后缀名,然后点更新,有一个上传口(注意左上角要点) 写个反弹shell的php文件,上传getshell 这里传的是shell1.php文件哈 信息收集发现权限低,在去找找漏洞看看有没有内核提权 下载到本地,开一个web服务 访问下载过来 编译成可执行文件 执行 提权成功
cc链6
环境准备因为cc链6和cc1的尾部相同只是触发的起点不同,所以我使用的是cc1的环境 分析这次我们从按着代码顺序来逐步分析 第一步123456789Class c = Runtime.class; Transformer[] t = new Transformer[]{ new ConstantTransformer(c), new InvokerTransformer("getDeclaredMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null})...
sql-未知列名的注入
参考https://www.jianshu.com/p/6eba3370cfab 未知列名查询1.正常下我们是查询到以下情况 2.当我们结合到union的方法时 1select 1,2,3 union select * from users; 3.然后我们就可以使用数字来对应列了,例如3对应表里的pass 1select `3` from (select 1,2,3 union select * from users)a; 这边解释一下为什么要加a,加上a类似于 1select `3` from (select 1,2,3 union select * from users) as a; 我们在查询时from后面要有一个名称,而我们上述的作用就是将()里的子查询命名为a,这样才可以查询到3的列。 4.当`被waf掉时,我们可以使用别名的方法绕过 1select b from (select 1,2,3 as b union select * from users) as a; 5.查询多个列时 1select group_concat(`2`,0x3a,`...
cc链1(2)
和第一条链子类似,只是这里使用了lazyMap类里的get方法来调用了transform,继续向上找谁调用了get方法,我们可以找到AnnotationInvocationHandler类里的invoke方法调用了get方法,而AnnotationInvocationHandler的接口是invocationHandler,所以在动态代理时可以调用到invoker所以我们可以实现一下。 实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162package com.ex1.www;import org.apache.commons.collections.Transformer;import org.apache.commons.collections.functors.ChainedTransformer;import org.apache.commons.collections.functors.C...
cc链1
环境准备1.下载jdku65 https://blog.lupf.cn/articles/2022/02/19/1645283454543.html 2,依赖配置 12345678<dependencies><!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency></dependencies> 3.将class文件转化为java文件 https://hg.openjdk.org/jdk8u/jdk8u/jdk/rev/af660750b2f4 点击zip,进行下载 然后解压j...
