JNDI注入
JNDI注入:前言:学习完CC链之后,主要作为扩展攻击面使用。
什么是JNDI:JNDI(Java Naming and Directory Interface)是一个应用程序设计的 API,一种标准的 Java 命名系统接口。JNDI 提供统一的客户端 API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将 JNDI API 映射为特定的命名服务和目录系统,使得 Java 应用程序可以和这些命名服务和目录服务之间进行交互。
简单来说,JNDI就是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用和统一的接口。
JNDI支持的服务:
RMI(JAVA远程方法调用)这个是Java中特有的远程调用框架,其余都是通用,可以脱离Java独立使用的
LDAP(轻量级目录访问协议)
CORBA(公共对象请求代理体系结构)
DNS(域名服务)
前三种都支持远程对象调用。
具体理解方式应该是:
Naming Service 命名服务:
命名服务将名称和对象进行关联,提供通过名称找到对象的操作,例如:DNS系统将计算机名和IP地址进行关联、文件 ...
CC链学习下
CC链学习下:前言:这次直接尝试一口气跟完链子,然后转进下一部分了。
CC链3:
jdk 1.7
commons-collections-3.1
还是从ysoserial的源码入手。
这里告诉我们是改变了CC1链子,通过InstantiateTransformer去替换了InvokerTransformer。
在这里,创建ChainedTransformer类的时候是随便添加的一个元素,后面会通过反射方式去重新换成Transformer[]数组
然后下方通过LazyMap的decorate()函数调用的时候,就是首先返回TrAXFilter.class,然后调用InstantiateTransformer#transform()。
看一下这个类的transform()函数。
这里重点很显然是else中的newInstance()。也就是通过反射的方式,创建了input参数对应类的实例。
if限制了我们传入的input参数,必须是Class类或是Class的子类。
当我们newInstance()之后,就会触发com.sun.org.apache.xalan.internal. ...
CC链学习中
CC链学习中:前言:P神的Java安全漫谈中给出的学习路线是先学CC6,因为CC6提供了一个CC1在高版本下的解决条件,但是为了加强自己的分析能力,我还是准备按着顺序来走一遍。
这里的整体思路和调用链,将会主要参考网络上的文章还有ysoserial中的调用链。
CC2:调用链:
Gadget chain: ObjectInputStream.readObject() PriorityQueue.readObject() … TransformingComparator.compare() InvokerTransformer.transform() Method.invoke() Runtime.exec()
可以看到这里多了几个类,首先了解一下这几个类:
PriorityQueue.class:
TransformingComparator.class:
分析:这里不难看出来,整条链子的触发点在PriorityQueue类中。
readObejct():这里 ...
CC链学习上
CC链学习上:CC1:这里主要还是学习的是P神的知识星球里面的Java安全漫谈。
Commons Collections的利用链也就是CC链,是Apache中的一个库,包括了Weblogic,JBoss,WebSphere,Jenkins等知名大型Java应用都使用了这个库。
这里的CC1指的是lazymap的那条链子,但是网上也有很多关于transformedmap的。
对于CC1的测试环境需要在Java 8u71之前,在此改动后,AnnotationInvocationHandler#readObject不再直接使用 反序列化得到的Map对象,而是直接新建了一个LinkedHashMap对象,并且将原来的键值添加进去。所以,后续对于Map的操作都是基于这个新的LinkedHashMap对象,而原来我们精心构造的Map不再会执行set或是put操作。
测试环境:
JDK 1.7
Commons Collections 3.1
这一处漏洞最后会导致RCE漏洞的产生。
漏洞原理:Apache Commons Collections中提供了一个Transformer的类,这个是个接口 ...
URLDNS与ysoserial简单使用
CC链1:前置知识:CC链,也就是Apache Commons Collections中的反序列化POP链。
Apache Commons是Apache开源的Java通用类项目在Java中项目中被广泛的使用,Apache Commons当中有一个组件叫做Apache Commons Collections,主要封装了Java的Collection(集合)相关类对象。
ysoserial:ysoserial是一个继承了Java反序列化各种利用链的工具。大部分时候是用来生成利用链的。
项目链接
这里简单讲一下ysoserial的安装配置问题。
首先,想要下载ysoserial有两种办法:
第一种是直接通过这个链接下载一个jar包。
https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
然后将下载下来的jar包直接用java命令进行使用就可以了。
这个谐音梗挺好玩的。
第二种方法就是直接去项目原来的地址下载源代码文件,然后通过maven打包,编译成j ...
Smartbi系列漏洞详解
Smartbi系列漏洞详解:前言:近期爆出的三个Smartbi产品的漏洞,其主要的漏洞产生原因都是因为没有对用户的访问做限制,或者是攻击者能够通过某些逻辑上的漏洞,绕过限制,对一些敏感的类,或是方法进行访问。
以下将对三个Smartbi中的漏洞进行分析,会首先给出POC,再根据POC给出分析过程和可利用的EXP。
1. /api/monitor/setEngineAddress 权限绕过漏洞漏洞分析:首先给出POC:
POST /smartbi/smartbix/api/monitor/setEngineAddress HTTP/1.1Host: 127.0.0.1:18080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-L ...
Laravel 5.4.*反序列化 —对冲__wakeup()的RCE链利用
Laravel 5.4.*反序列化 —对冲__wakeup()的RCE链利用:本次主要是对Laravel5.4.*的框架进行的代码审计,尝试挖掘其中可利用的POP链。
环境搭建:对于Laravel 5.4.*的环境搭建,这里我主要用到的是Composer,因为Laravel这个框架其实和Composer联系比较深,对于框架都可以用Composer直接一个命令拉出来。
composer create-project --prefer-dist laravel/laravel laravel5.4 "5.4.*"
或者是在github上面下载Releases也可以:
https://github.com/laravel/laravel
这里的laravel5.4是生成文件名,后面的5.4.*则是版本号。
然后进行一系列操作,参考如下博客:
https://blog.csdn.net/qq78442761/article/details/124537501+
接下来还是常规操作,对于路由进行配置:
routes/web.php
添加:
Route::get(&q ...
PHP伪协议进阶
php伪协议进阶总结:这里主要还是对php伪协议的使用和绕过做一个总结。免得后面忘记了。
绕过方式:Url%00截断:对于这种类型的代码:
<?php$filename = $_GET['name'];if(isset($filename)){ include($filename."No");}?>
可以使用url%00截断进行绕过。这里是因为在使用Include函数的时候,对于参数进行了拼接,如果我们直接传入会造成不能正确执行伪协议的文件读取。
这里可以通过%00来对传入的伪协议进行截断,形如:
php://filter/read=convert.base64-encode/resource=flag.php%00
可以达成绕过。
%00截断的根本原理和使用条件:原理是因为%00在url中会被后端理解为是十六进制格式的值,然后服务器会将其作为16进制的hex自动翻译成0x00,也就是空值。
在底层的C和汇编中,会将这个空值用来表示字符串结束,是一个特殊的标识符。当解析到这个标识符的时候,就会自动停止读取 ...
ThinkPHP-5.0.x POP链
ThinkPHP 5.0.X代码审计:前言:本次记录主要是对ThinkPHP 框架的 5.0.x版本进行代码审计,主要涉及的软件有:
PHPSTORM
Seay源代码审计系统
Phpstudy_pro
PHP版本使用7.3.4
关于PHPSTORM的Xdebug的搭建,我主要参考了暗月的教程
(说实话phpstudy_pro的配置文件真的太麻烦了)
ThinkPHP 5.0.24 链接
Seay自动审计:首先还是常规操作,使用Seay源代码审计系统来进行自动审计:
这边出了一堆。不过不是每个都有用的。
主要还是要审计POP链,然后RCE。
目录结构:首先是对ThinkPHP 5.0目录结构进行查看:
www WEB部署目录(或者子目录)├─application 应用目录│ ├─common 公共模块目录(可以更改)│ ├─module_name 模块目录│ │ ├─config.php 模块配置文件│ │ ├─common.php 模块函数文件│ │ ├─controller ...
初识XXE
XXEXXE漏洞概述:XXE(XML External Entity Injection)即XML外部实体注入。漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。 下面我们主要介绍PHP语言下的XXE攻击.
XML是一种非常流行的标记语言,在1990年代后期首次标准化,并被无数的软件项目所采用。它用于配置文件,文档格式(如OOXML,ODF,PDF,RSS,…),图像格式(SVG,EXIF标题)和网络协议(WebDAV,CalDAV,XMLRPC,SOAP,XMPP,SAML, XACML,…),他应用的如此的普遍以至于他出现的任何问题都会带来灾难性的结果。
在解析外部实体的过程中,XML解析器可以根据URL中指定的方案(协议)来查询各种网络协议和服务(DNS,FTP,HTTP,SMB等)。 外部实体对于在文档中创建动态引用非常有用,这样对引用资源所做的任何更改都会在文档中自动更新。 但是,在处理外部实体时,可以针对应用程序启动许多攻击。 这些攻击包括泄露本地系统文件,这些文件可能包含密码和私人用户数据等敏感数据,或利用各种方案的网络访问功能来操纵内部应用程序。 通过将这 ...