dnlib使用
前言 看了老外的白皮书兴高采烈去挖洞了,然后发现人家挖洞是黑名单,我挖洞是白名单。需要自己找gadget,可是一个一个找构造函数、getter、setter是真的慢,干脆学一下 看能不能整个.net的tabby出来算求。
Category
前言 看了老外的白皮书兴高采烈去挖洞了,然后发现人家挖洞是黑名单,我挖洞是白名单。需要自己找gadget,可是一个一个找构造函数、getter、setter是真的慢,干脆学一下 看能不能整个.net的tabby出来算求。
这里可以调用任意类的一个string类型的有参公有构造函数,很容易想到ClassPathXmlApplicationContext。
@chudyPB在Hexacon 2023会议上发布了他的dotnet反序列化的研究白皮书,一个长达124页的pdf,这是我看过最强的一篇关于dotnet序列化漏洞的文章。
唯一作用就是从RequestInterceptors对象中拿到myPreHandlingDisabled字段值,然后移除掉//RPC2。
LG是一家专门搞LED的公司,旗下有一些产品,这次看的是zdi爆出来的LG Simple Editor,公网数量虽然不多,但是漏洞是未授权RCE。
根据公告来看 未授权,反序列化点在JavaSerializationCodec,漏洞比较特殊,可能是设计问题,找找吧。
随便找了个老版本的站试了试,确实root账号在user列表里不显示,算是后门账号。
关键是怎么利用呢?根据文档 用JcrUtils拿可以拿到Repository,给定http url拿到的是URLRemoteRepository。
抓包发现安装过程中有一个请求 其相应包中包含了setup-token 字段。
如果服务器以dev模式运行并且请求的url以/nuxtcomponenttest/开头,那么引入#build/test-component-wrapper.mjs。
本文分为两部分,前半部分主要是对VMSA-2022-0031的分析,后半部分是我挖的补丁绕过,官方公告是VMSA-2023-0012。
漏洞概述 由于7848端口采用hessian协议传输数据,反序列化未设置白名单导致存在RCE漏洞。
登录ssh 用admin用户登录只有一个cli程序,不是bash,需要挂载vmdk修改/etc/shadow文件,改掉user1用户的密码。
WFUser权限绕过+setcertificatesconfig文件上传+getWidgetPoolManager文件包含,很明显的组合拳。
前言 想做一个类似于java agent的效果出来,hook某些函数来留后门。搜了一下有很多解决方案,但是都不友好。以下是其中一种Harmony框架的动态patch方案,这种方案更倾向于热更新。
MessagePack-CSharp库对于动态类型的处理采用的是Typeless模式,对应的Resolver是TypelessContractlessStandardResolver。
python的site模块支持"Site-specific configuration hook"的功能,这个功能点本身是用来将特定路径加入模块搜索路径。该模块在初始化期间自动导入。
前言 这个漏洞是看了mrme的文章之后 顺手看了看vROPS,发现也存在这个漏洞,于是有此文,漏洞比较简单,下面简单写一下。这是一个授权后的RCE漏洞。
配置调试 修改/opt/vmware/etc/vmware-vcops-firewall.conf配置文件,修改加上自己的端口然后vmware-vcops-firewall restart开防火墙。
修改源码 一般情况下使用dnspy来改源码都是因为没有可编译的项目,你要是有可编译的项目那改项目就行了。
在集群部署中,MinIO返回所有环境变量,包括MINIOSECRETKEY和MINIOROOTPASSWORD,导致信息泄露。
创建ssl证书,并且绑定在BackupServerSslPort 9401端口上。
DongTai-agent-java 由agent.jar、dongtai-core.jar 、dongtai-inject.jar、dongtai-servlet.jar四部分构成,其中:。
Introduction 该漏洞是我在挖掘VMware vROPS产品中发现的反序列化漏洞,但是在VMware vROPS产品中并不能直接利用,因为该产品开启了ssl并且开启了双向认证,必须有ssl的证书才可以反序列化。这里先记录一下未开启ssl的反序列化RCE。
文章围绕《GoAnywhere 未授权反序列化RCE》展开,主要梳理复现、原理等内容。
思考很久,发现还是自己底子不扎实,于是学了很长一段时间的静态软件分析,看了很多的论文(折磨)和视频,其中包括南京大学谭添、李樾两位老师的课,北大熊英飞老师的课等等,今天就简单写一下谭添、李樾两位老师开发的tai-e指针分析框架的简单使用。
截取了部分代码,其实就是在这个StartupHookProvider类中进行加载程序集,然后反射调用Initialize函数,堆栈如下。
补丁要求用户名不能有空白字符,典型。我们需要看这个空白字符在哪用到了,以及对我们漏洞利用起了什么作用。
调试java需要编辑/usr/sbin/r1soft/conf/server.conf加一行。
看到zdi发了一堆洞,有反序列化、目录穿越、权限绕过等等,还是dotnet的,于是有了此文。
和pgsql一样可以用spring中的ClassPathXmlApplicationContext。
1.10.0修复在addDefaultStringLookups添加默认lookup时不再添加script、url、dns标签。
回顾fastjson历史漏洞 fastjson1.2.47是通过MiscCodec向白名单缓存中put任意类。
基本使用 doop仓库是一个gradle项目,./doop其实就是一个bash去调用gradle命令。
ByteCodeDL也是一款java字节码静态分析工具,它借助了soot-fact-generator + Souffle 两个工具实现了一款声明式的静态分析工具。
MickeyLiteUtil.getUserId()需要给一个正确的domainName才行,得看数据库AaaLogin表中有什么值。
所以要找一个触发tostring的,给的版本是dubbo-2.7.14.jar,这个版本有一个任意tostring调用CVE-2021-43297 见。
generateActivationToken为oauth2客户端生成激活码。
Petrus Viet在UrlRewriteFilter过滤器中找到了用RequestDispatcher绕过权限校验的点。
回顾 CVE-2020-9496 Apache Ofbiz XMLRPC RCE漏洞 漏洞由XmlRpcRequestParser解析xml时触发,由此我们用tabby来查询谁调用了XmlRpcRequestParser。
那么mysqldump可以拼接-w参数将内容写入文件,然后可以多次传递-r参数覆盖原有的-r文件路径值。
使用SerializationBinder 先来一个demo,用SerializationBinder限制一下反序列化的类型。
分析 这个洞用了两个点串起来成了一个rce,分别是xxe和一个readObject的点。
安装fmw12.2.1.3.0infrastructure.jar 下一步下一步就行。
分析 SSSvc.exe运行在50003端口上,默认监听0.0.0.0。
其中this.interceptors是拦截器,Confluence默认有28个。
补丁对比 HW-156875-Appliance-21.08.0.1/frontend-0.1.war中增加了一个HostHeaderFilter,匹配全路由。
前言 最近爆出来的bigip的CVE-2022-1388漏洞,涉及到一个知识点就是hop by hop,对这个东西没了解过,所以有了此文。
议题中讲到了jboss的4446端口反序列化rce,和一条jndi注入的gadget。
看路由是在catalog-portal app下,cd到/opt/vmware/horizon/workspace/webapps/catalog-portal,然后把jar包拖出来解压之后,grep -irn "console.log"。
用CBinaryServerFormatterSink新的反序列化类替换TypeFilterLevel.Full。
还有补丁包VeeamBackup&Replication11.0.1.126120220302.zip的下载地址。
这个normalizeProperties()是对filter的属性进行解析,会将filter的配置属性传入normalize中,最后进入getValue执行SPEL表达式造成SPEL表达式注入。
zabbix5.4的虚拟机 配置saml sso登录。文章进一步梳理环境搭建、漏洞分析、后利用等内容。
先说原理,enableuserdefinedfunctionsthreads为false时会隐式禁用security-manager,导致可以通过udf执行java代码。
前言 看到推特上有人发 PrinterLogic Web Stack unserialize RCE,但是poc打码了,所以自己下了一个分析一下。
handleLogin函数处理登录时会进行判断,如果authenticationResult.isSuccess()登录成功会返回getToken()。
前言 之前写了一些ysoserial.net工具中常见的gadget,文章放在了我的GitHub,这篇文章对其进行补充。
远程调试配置,修改 /home/admin/apache-kylin-4.0.0-bin-spark2/bin/kylin.sh。
文件名形如/opt/metersphere/data/body/plugin/490fb08a-eae3-4414-a991-09f16f5b8f5etest.jar。
修改 /home/ubuntu/apisix-docker/example/docker-compose.yml 文件,改一个老版本。
环境搭建 11303版本的才有ImportTechnicians action,11305版本没有,踩了个大坑。
漏洞描述 Orckestra C1 CMS 6.10存在 .net 反序列化漏洞,需要登录,成因是因为TypeNameHandling.Auto。
在spring-boot-actuator-logview 0.2.13版本之前,对文件路径参数过滤不严导致可以目录穿越读取任意文件。
CommVault这玩意是两种语言(.net和java)开发的,两掺挺有意思。
GHSL-2021-086: Unsafe Deserialization in Apache Storm supervisor - CVE-2021-40865 GHSL-2021-085:Apache Storm Nimbus 中的命令注入 - CVE-2021-38294。
前言 目前这篇文章中报的RCE,和作者沟通了一下发现只剩下CVE-2021–35218没有分析出来了,硬看实在看不出来,所以本文使用diff dll的形式进行比对,最终找到了漏洞点所在。
ysoserial.net生成payload可以直接打,需要注意只能用get请求发包,所以要用最小的payload。
继推特@testanull的研究文章,分析另一个RCE CVE-2021–35217。
原文讲的很清楚了,我这里大概记一下。看懂可能需要一些dotnet反序列化的基础知识,移步。
oracle在jdk8u121使用trustURLCodebase限制了rmi对于codebase的远程加载,但是可以使用ldap绕过,但是8u191之后ldap同样不能使用。由此本文展开对于8u191之后的jndi注入的利用。
前言 刷推特看到的,分析一下。Citrix的账号直接注册登录就行,可以下载试用。安装就不说了,server2016+iis+.netFramework48。
昨天在挖weblogic漏洞时发现ysoserial更新了一个新的gadget AspectJWeaver,今天分析一下。
10对应的是实现了ExternalizableLite接口的类。继续跟进readExternalizableLite(),其使用loadClass进行加载类,不受weblogic黑名单限制。
分析 consolejndi.portal中存在JNDIBindingPageGeneral jndi绑定的东西。
RouterHandler类是路由核心类,用于处理路由的整体交互走向。QueryStringDecoder类是自实现的解码类,在qsd.path()中首次进行url解码。
昨天晚上看了长亭的一篇Real Wolrd CTF 3rd Writeup | Old System 推文,觉得很有意思,自己研究下。
本文将要讲解的是通过Java agent拦截修改关键类的字节码,最大程度实现一套代码通用注入内存shell。
UniversalExtractor任意调用get、is方法导致JNDI注入。
首先判断非空和安全模式以及typename长度来决定是否进行autotype。
getTransletInstance()中将恶意字节码加载进来并且new实例,在实例化时rce。
参考 Spring-Cloud-Config-Server-任意文件读取分析。
关于JEP290 JEP290是Java底层为了缓解反序列化攻击提出的一种解决方案,主要做了以下几件事。
修改tomcat路径conf目录下的context.xml 在 标签内加入以下配置。
写在文前 在研究weblogic、fastjson、shiro反序列化漏洞时,多次遇到了回显问题,本文将从以下几种角度出发来分别探讨反序列化回显的问题,也感谢各位师傅们的反序列化回显研究。
禁用/启用EL表达式 全局禁用EL表达式,web.xml中进入如下配置:。
分析 首先要知道shiro是一个用来做身份验证的框架,其原理是基于servlet的filter进行的。在web.xml中定义了ShiroFilter,作用范围是当前目录下所有的url。
功能很简单,就是正则匹配API然后写入,主要的问题就出在正则身上,贪婪模式并且无/s单行,可以通过换行符绕过。看图:。
fastjson是阿里巴巴的一个json库,频频爆RCE。本文分析fastjson至今的一些RCE漏洞。
在logincheckcode.php中UID可控,当UID为1时,用户默认为admin管理员。
前言 Java中所有的类都被编译为class文件来运行,在编译完class文件之后,类不能再被显示修改,而Javassist就是用来处理编译后的class文件,它可以用来修改方法或者新增方法,并且不需要深入了解字节码,还可以生成一个新的类对象。
反序列化从PriorityQueue开始,进入PriorityQueue的readObject()。
简介 XMLDecoder是java自带的以SAX方式解析xml的类,其在反序列化经过特殊构造的数据时可执行任意命令。在Weblogic中由于多个包wls-wast、wls9asyncresponse war、async使用了该类进行反序列化操作,出现了了多个RCE漏洞。
攻击JNDI 作者水平有限,本文仅讲述以下几种攻击JNDI的方法。 JNDI 配合 RMI Remote Object(codebase) JNDI Reference 配合 RMI JNDI Reference 配合 LDAP。
简述代理模式 代理是英文(Proxy)翻译过来的,在我们的实际生活中,最常见的代理模式应该是朋友圈中的微商了。在起初的时候,厂商直接对标顾客,没有微商在中间赚差价,结构就是如图。
漏洞概述 2020/3/24日,陈师傅在推特上转发了一篇文章,在该文中Code White 公开了 Liferay Portal JSON反序列化RCE漏洞,攻击者可以发送payload到服务器造成远程代码执行,本文是对其的分析。
漏洞描述 在3月6日,@steventseeley 在twitter上发布了关于 Zoho 企业产品 Zoho ManageEngine Desktop Central 中的反序列化远程代码执行漏洞。
这里不传P参数就能绕过exit了,然后走到下面的includeonce进行文件包含造成RCE。
2020.03.06 早上4点,看到了清水川崎师傅推送了Weblogic CVE-2020-2555的通告,在推特上搜了一波,发现有详细的分析文章,遂有此文。
关于JNDI JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。
在Weblogic中,默认启用了IIOP,而IIOP的传输也是通过序列化和反序列化的形式来进行的。在Weblogic中RMI-IIOP模型可以借用奇安信观星实验室的一张图来说明。
JRMP在前文中提到了在传输过程中也会自动序列化和反序列化,那么我们可以构造一个gadgets,通过T3协议让weblogic自动请求我们的JRMPListener,然后JRMPListener返回给他一个恶意的gadgets对象,weblogic自动反序列化恶意对象,达到rce。
漏洞描述 Apache Dubbo支持多种协议,官方推荐使用Dubbo协议。
RMI简介 Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。
最近在研究weblogic,复现了几个CVE执行命令都没有回显,Google了一下,发现可以通过RMI来解决weblogic反序列化RCE没有命令执行结果回显,先看下基础知识。
可以看到是HashMap类的问题,而触发反序列化的⽅法是 readObject ,直奔 HashMap 类的 readObject ⽅法:。
成功执行命令,断点同样下在InvokerTransformer的transform(),堆栈如下。
后来集成为一个补丁 p219845891036Generic ,补丁下载需要Oracle的metalink账号也就是付费客户才可以下载,p219845891036Generic 补丁我在网上没找到,只能退而求其次用两个补丁的方式了。
common-collections导致的反序列化RCE,闲着也是闲着,分析下。
Java中执行命令有很多姿势,但是有时候带有|, 等符号的命令没办法正常执行。为什么呢?
在我的上篇关于 Java反序列化 的文章中,简单提到了反序列化的入口(readObject)和反射,本文我们根据上文的基础来学习 ysoserial CommonsCollections5 的反序列化流程。
在elseif语句中,如果传入的字段是数组,并且下标为0的值为exp,那么会执行 Db::raw()来进行表达式查询。
这是islogin()的定义,从session中取,0-未登录,大于0-当前登录用户ID。未登录时!islogin()为真。
框架引导start.php thinkphp为单程序入口,这是mvc框架的特征,程序的入口在public目录下的index.php。
thinkphp5最出名的就是rce,我先总结rce,rce有两个大版本的分别。
Thinkphp3 开发手册 Thinkphp3.2.3 安全开发须知 ThinkPHP中的常用方法汇总总结:M方法,D方法,U方法,I方法。
熟悉 thinkphp 的应该知道, upload() 函数不传参时为多文件上传,整个 $FILES 数组的文件都会上传保存。
java反序列化学习 序列化是将面向对象中的对象转化为文件的过程,通过在流中使用文件可以实现对象的持久存储。 和PHP一样,java中也有序列化和反序列化,先来看下最基本的反序列化代码。 反序列化demo。
跟汤姆表哥再搞创宇的年度任务🤒,昨天发了metinfo6.2.0的组合拳,今天看了看官网有最新版的7.0,就下下来看了看,发现两枚注入,而且昨天的组合拳虽然增加了后缀校验,绕不过去了,呜呜呜。
在@mochazz师傅的博客里看到了Laravel的反序列化pop链,记录一下。
zzzphp是一款php语言开发的免费建站系统,以简单易上手的标签、安全的系统内核、良好的用户体验为特点,是站长建站的最佳选择。
在php中,序列化函数是serialize(),我们先来写一个简单的序列化。
闲着无聊,看到cnvd上昨天爆出来一个scms的注入,今天分析一下。
source/class/discuz/discuzapplication.php 305行,发现是从cookie中拿到language的值。
源代码是这样的。其实刚拿到这个shell的时候我挺蒙的,不知道该怎么去利用,然后分析了一下,发现其实也还简单,下面我们一起来看下。
全局变量注册,本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。
@ershiyi发我一个网站,让我拿shell,看了下是oecmsv3.0的源码,并且二次开发过。有后台的账号和密码,关键在于怎么getshell,所以sql注入的点我没看。以下是审计结果。
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
前天找了点域渗透的环境和资料,都是百度云盘存储的,一个镜像十几个g,下不下来,发现网上有卖百度云VIP账号的,都是一些发卡网,刚好自己最近在学代码审计,就想着下载一套源码自己看看能不能审出漏洞。没想到还真看出来了点东西。
海洋cms是为解决站长核心需求而设计的视频内容管理系统,适用于各大视频站点,支持自定义模板和解析接口,是各大视频站长的不错选择之一。官方版本已经在2019年1月10日更新版本到v8.1,请尽快更新版本。
Niushop开源商城采用thinkphp5.0+MySQL开发语言开发,完全开源商城系统,可以用于企业,个人建立自己的网上免费商城,支持开源微信商城,开源小程序,开源新零售。
2018年12月7日,phpmyadmin官方发布公告修复了一个由Transformation特性引起的任意文件包含漏洞。
这个注入比较简单,首先需要注册登录拿到session,然后$Bsort无过滤直接从post中获取,虽然select查询用intval过滤了,但是后面的insert语句并没有过滤,构成注入。
phpcms2008老版本type.php存在代码注入可直接getshell。不过版本过低,使用人数较少,影响范围较小,当作拓展思路不错。
两周的Java实训结束了,学了一个servlet做接口,给前端提供数据支持,记下笔记,免得以后忘了。