委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,主要分为三种: 1、非约束性委派 2、约束性委派 3、基于资源的约束性委派 这篇文章主要对这三种委派方式相关的攻击进行详解...域渗透之委派攻击详解 非约束委派攻击利用 用户 A 去访问服务B,服务 B 的服务账户开启了非约束委派,那么当用户 A 访问服务 B 的时候会将用户 A 的 TGT 发送给服务 B 并保存进内存,服务...约束委派攻击原理及利用 由于非约束委派的不安全性(配置了非约束委派的机器在 LSASS 中缓存了用户的 TGT 票据可模拟用户去访问域中任意服务),微软在 Windows Server 2003 中引入了约束委派...不同于允许委派所有服务的非约束委派,约束委派的目的是在模拟用户的同时,限制委派机器/帐户对特定服务的访问。 S4U2self: (1) 用户向 service1 发送请求。...基于资源的约束委派不需要域管理员权限去设置,而把设置属性的权限赋予给了机器自身。 基于资源的约束性委派允许资源配置受信任的帐户委派给他们。
委派是域中的一种安全设置,可以允许某个机器上的服务代表某个用户去执行某个操作,在域中只有机器帐户何服务帐户拥有委派属性,也就是说只有这两类帐户可以配置域委派,分为三种: 非约束委派 约束委派 基于资源的约束性委派...但是,Service 1 没有来自用户的可转发 TGT ,因此不能通过非约束委派中转发 TGT 的方式执行委派。...设置约束委派 设置域机器WIN7-PC约束委派,设置对DC的CIFS服务进行委派 设置委派的机器用户或者服务用户的userAccountControl属性会设置TRUSTED_TO_AUTH_FOR_DELEGATION...,msDS-AllowedToDelegateTo属性会设置成委派的服务(如cifs) 通过Adfind.exe查询域中配置约束委派的账户 # 查询域中配置约束委派的机器账户 AdFind.exe...ccc1.test 约束委派利用 约束委派利用的前提是需要知道委派用户的明文密码或者hash 通过rebeus.exe来申请WIN7-PC机器用户的TGT rubeus.exe asktgt /user
目录 一、前言 二、双亲委派 2.1、为什么需要双亲委派 2.2、双亲委派的实现 三、破坏双亲委派 3.1、为什么需要破坏双亲委派?...前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。...二、双亲委派 想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们先要了解一些概念: 对于任意一个类,都需要由加载它的类加载器和这个类本身来一同确立其在Java虚拟机中的唯一性。...3.1、为什么需要破坏双亲委派?...3.2、破坏双亲委派的实现 我们结合Driver来看一下在spi(Service Provider Inteface)中如何实现破坏双亲委派。
前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。...二、双亲委派 想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们先要了解一些概念: 对于任意一个类,都需要由加载它的类加载器和这个类本身来一同确立其在Java虚拟机中的唯一性。...2.2、双亲委派的实现 双亲委派的实现其实并不复杂,其实就是一个递归,我们一起来看一下ClassLoader里的代码: protected Class委派?...3.2、破坏双亲委派的实现 我们结合Driver来看一下在spi(Service Provider Inteface)中如何实现破坏双亲委派。
双亲委派机制 在加载类的时候,会一级一级向上委托,判断是否已经加载,从自定义类加载器-》应用类加载器-》扩展类加载器-》启动类加载器,如果到最后都没有加载这个类,则回去加载自己的类。...双亲委托有个弊端: 不能向下委派,不能不委派 怎么打破双亲委派机制:(也就是能向下委派和不委派) 自定义类加载器(不委派) spi机制(向下委派) 打破双亲委派 打破双亲委派的两种方式: 1.通过spi...由于双亲委派模型,父加载器是拿不到通过子加载器加载的类的。这个时候就需要启动类加载器来委托子类来加载Driver实现,从而破坏了双亲委派。...自定义类加载器 实现逻辑:自定义类继承classLoader,作为自定义类加载器,重写loadClass方法,不让它执行双亲委派逻辑,从而打破双亲委派。...,从而打破双亲委派 if (name.startsWith("com.chuan")){ c=findClass(
双亲委派模型(Parents Delegation Model) 类加载器 启动类加载器 拓展类加载器 应用程序类加载器 注意: 不是用继承,而是用组合去实现 参考 详谈双亲委派机制
约束委派 接上述的非约束委派,由于非约束委派的不安全性,微软在windows2003中发布了约束委派的功能。...win2016已经可以配置委派了。...为win2016用户配置约束委派,做win2 019机器的cifs服务的委派 图片 图片 此时应用设置后,已在域中完成了win2016用户对win2019机器的cifs服务的委派 发现约束委派...委派了win2019机器的cifs服务 在域中查找配置了约束委派主机 AdFind.exe -b "DC=vulntarget,DC=com" -f "(&(samAccountType=805306369...,委派了win2019机器的cifs服务 攻击利用: 域用户存在约束委派: kekeo.exe结合存在约束委派的域用户明文密码申请可转发的TGT票据 kekeo # tgt::ask /user:win2016
双亲委派 ClassLoader 传递性 使用调用者 Class 对象的ClassLoader加载。
继续再次加载Application ClassLoader 应用类加载器,即系统即在此,加载当前应用下的类 最后再次加载ClassLoader类 双亲委派模型 该模型是先检查指定名称的类是否已经加载过,
类加载器双亲委派模型图 双亲委派模型构成 启动类加载器 扩展类加载器 应用程序类加载器 自定义类加载器 双亲委派模型工作过程是 如果一个类加载器收到类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器完成...为什么需要双亲委派模型?...如果没有双亲委派,那么用户是不是可以自己定义一个java.lang.Object的同名类、java.lang.String的同名类,等等,并把它放到ClassPath中,那么类之间的比较结果及类的唯一性将无法保证...因此,双亲委派模型可以防止内存中出现多份同样的字节码。
redteam.red 靶场 委派攻击分类: 1、非约束性委派 2、约束性委派 3、基于资源的约束性委派 关于约束委派与非约束委派 委派(Delegation)是指将用户或计算机帐户的权限授予其他用户或计算机帐户...其中,Windows中的委派分为两种类型:非约束委派和约束委派。...意思就是被域控进行非约束委派的域成员主机获得全部权限,并且该可以同样的可以进非约束委派至其他域成员主机 约束委派(Constrained Delegation)是指将用户或计算机帐户的部分权限授予另一个用户或计算机帐户...这意味着该帐户无法将委派权限向下传递给其他服务,因此更加安全。 总的来说,如果需要在Windows环境中使用委派功能,建议使用约束委派而不是非约束委派,以提高系统和数据的安全性。...横向移动-原理利用-约束委派&非约束委派 非约束委派 原理: 机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中, 一起发送给机器B,机器B会把
为什么要搞双亲委派?...—— 主要是为了安全问题双亲委派模型源码,java.lang.ClassLoader 的核心方法 loadClass() 的实现:public abstract class ClassLoader {...> findLoadedClass0(String name); // 本地类}1.1、魔术.note委派机制的流程图:
最初看到这个“双亲委派”四个字的时候,我是接受的。当时也没什么多余想法,看到名词就感觉这大概就是最权威的。 但,最近我开始怀疑这样的翻译了。...双亲委派?你委派给谁?双亲?双亲又是什么?...“双亲委派”这个词估计也不是咱自己生造的,肯定也是从洋文中翻译来的。 让我们去找找洋文中一般是怎么叫这种机制的吧。...这个显然无法翻译成“双亲”啊,即使翻译也应该是 “父委托模型” 或 “父委派模型”。...还不如叫“啃老模型”,如果要正式一点,那建议是:“父委托模型”或“父委派模型”。
github地址:https://github.com/1711680493 点我进入github 如需了解更多设计模式,请进入我的设计模式专栏 委派模式 委派模式不是23设计模式中的一种....拥有以下三种角色 抽象任务角色 委派者角色 具体任务角色 委派模式,就是将任务发给委派者角色,委派者角色去委派具体任务角色 委派模式对外隐藏了具体实现,仅将委派者角色暴露给外部 委派模式和策略模式不同的是...,委派者角色和具体任务角色都要继承/实现抽象任务角色 Spring框架很多地方用到了委派模式,例如 Dispatcher(转发) 代码实现 /** * 委派模式 * @author Shendi QQ * @param name 委派名 */ void exec(String name...); } /** * 委派者 * @author Shendi <a href='tencent://AddContact/?
双亲委派模型的工作过程是(重点):如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中...双亲委派模型对于保证 Java程序的稳定运作很重要,但它的实现非常简单,实现双亲委派代码都集中在 java.lang.ClassLoader 的 loadClass() 方法中,如下,逻辑简单清晰,先检查是否已经被加载过...目前为止,双亲委派的具体逻辑就实现在 loadClass方法之中。...,已经违背了双亲委派模型,但这也是无可奈何的事情。...双亲委派模型的第三次“被破坏”是由于用户对程序的动态性的追求导致的,例如 OSGi的出现。在 OSGi环境下,类加载器不再是双亲委派模型中的树状结构,而是进一步发展为网状结构。
简介 委派 在域中如果出现A使用Kerberos身份验证访问域中的服务B,而B再利用A的身份去请求域中的服务C,这个过程就可以理解为委派 例: User访问主机S2上的HTTP服务,此时要想完整的使用...下面对非约束委派进行复现利用 非约束委派配置 setspn -U -A MSSQLvc/mssql.vulntarget.com:1433 win2016 当DC配置SPN给域用户Win2016时,在域内将可产生对域用户的委派...,我们可以看到,域管理员勾选win2016用户的委派-信任此用户作为任何服务的委派时,将会造成非约束委派的问题。...图片 图片 非约束委派其特征 当域用户或机器被设置了非约束委派时,其userAccountControl属性将会包含一个名为”TRUSTED_FOR_DELEGATION”的标志。...域用户的非约束委派攻击 倘若发现存在非约束委派的用户,这时,我们可以在域内所有可以登陆此用户的域内机器上尝试非约束委派攻击,获取其缓存的服务账号票据,并期望获得域控的票据。
33909752 sun.misc.Launcher.AppClassLoader@6d06d69c sun.misc.Launcher.ExtClassLoader@70dea4e 另一个有意思的问题 还记得双亲委派吗...好了,先记住双亲委派,然后来思考下面这种场景。 我们可以直接在B类里 new 一个 A类对象吗?可以的话,为什么可以? 其实这是一个考察Java基础知识的问题,可以用下面的方法来验证它。...为什么呢,这就是双亲委派。 B在构造A的时候,它会先从根ClassLoader里去找,从上往下,直到在 AppClassLoader 中找到。因此即使不在同一个目录下,也能正常的去用它。
1.双亲委派机制原理 Java虚拟机对 class 文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的 class 文件加载到内存中生成 class 对象。...而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行...如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器; 如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式...父类加载器一层一层往下分配任务,如果子类加载器能加载,则加载此类,如果将加载任务分配至系统类加载器也无法加载此类,则抛出异常 图片 2.双亲委派机制代码示例 举例一: 我们自己定义一个java.lang...3.双亲委派机制的优势 避免类的重复加载 保护程序安全,防止核心API被随意篡改 自定义类:java.lang.String 没有调用 自定义类:java.lang.ShkStart(报错:阻止创建
双亲委派模型(面试高频) 之所以这个东西面试出场概率高高,最大的原因就是它起的名字很好听 描述了查找 .class 文件的策略。...有一个指针(引用)parent,指向自己的“父”类加载器 双亲委派模型,就描述了上述类加载器之间是符合配合工作的 工作过程 双亲委派模型工作过程: 从 ApplicationClassLoader 作为入口
什么是打破双亲委派机制呢? 那么这里第一步, 我们需要知道什么是双亲委派机制? 前面已经说了什么是双亲委派机制了, 那打破是怎么回事呢?...根据双亲委派机制, 我们知道, 他一定是被应用程序类加载器AppClassLoader加载, 而不是我们自定义的类加载器, 为什么呢? 因为他要向上寻找, 向下委托....我们要打破双亲委派机制, 就是要让自定义类加载器来加载我们的User1.class, 而不是应用程序类加载器来加载 接下来分析, 如何打破双亲委派机制呢? 双亲委派机制是在哪里实现的?...里面实现了双亲委派机制 下面给DefinedClassLoaderTest.java增加一个loadClass方法, 拷贝上面的代码即可....删除掉中间实现双亲委派机制的部分 这里需要注意的是, com.lxl.jvm是自定义的类包, 只有我们自己定义的类才从这里加载. 如果是系统类, 依然使用双亲委派机制来加载.
领取专属 10元无门槛券
手把手带您无忧上云