首页 > 其他分享 >web安全各类原理简单汇总(一)

web安全各类原理简单汇总(一)

时间:2022-09-04 11:59:06浏览次数:107  
标签:web CVE 加密 协议 汇总 T3 原理 序列化

(1)jwt 是什么?

JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。(类似于cookie或是session的认证,漏洞利用方式是用于逻辑漏洞,伪造cookie越权操作别人的账号信息)

JWT主要包含三个部分之间用英语句号'.'隔开

  1. Header 头部
  2. Payload 负载
  3. Signature 签名
ewogICJhbGciOiAiSFMyNTYiLAogICJ0eXAiOiAiSldUIgp9ICA=.ewogICAgImlzcyI6ICJMZWZ0by5jb20iLAogICAgImlhdCI6IDE1MDAyMTgwNzcsCiAgICAiZXhwIjogMTUwMDIxODA3NywKICAgICJhdWQiOiAid3d3LmxlZnRzby5jb20iLAogICAgInN1YiI6ICJsZWZ0c29AcXEuY29tIiwKICAgICJ1c2VyX2lkIjogImRjMmM0ZWVmZTJkMTQxNDkwYjZjYTYxMmUyNTJmOTJlIiwKICAgICJ1c2VyX3Rva2VuIjogIjA5ZjdmMjVjZGIwMDM2OTljZWUwNTc1OWU3OTM0ZmIyIgp9.Njg2ODU1YzU3ODM2MmU3NjIyNDhmMjJlMmNjMTIxM2RjN2E2YWZmOGViZGE1MjI0Nzc4MGViNmI1YWU5MTg3Nw==

 

(2)weblogic 反序列化原理

weblogic反序列化主要有XMLDecoder和T3协议、IIOP反序列化。

T3协议原理简单总结:

T3协议:

WebLogic Server 中的 RMI 通信使用 T3 协议在WebLogic Server和其他 Java程序(包括客户端及其他 WebLogic Server 实例)间传输数据(序列化的类)。由于WebLogic的T3协议和Web协议共用同一个端口,因此只要能访问WebLogic就可利用T3协议实现payload和目标服务器的通信。

JRMP协议

RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP协议是专为Java的远程对象制定的协议。

其两者的区别与使用场景

RMI:RMI通信传输反序列化数据,接收数据后进行反序列化。正常RMI通信使用的是JRMP协议,而在Weblogic的RMI通信中使用的是T3协议。T3协议是Weblogic独有的一个协议,相比于JRMP协议多了一些特性(存在特征的二进制位)。

原理

T3协议刚才简单看了看,归纳总结一下就是需要利用一个链,将传入的明文的payload与链结合(利用ysoserial生成CommonsCollections1的payload)成t3协议内传输的数据格式,然后再加上t3协议固定的二进制头(反序列化标志位),使整体格式达成反序列的标准,这样就可以利用其中存在问题的函数或方法进行反序列化,如CVE-2015-4852漏洞中的resolveClass方法。(详细原理可以查看:https://xz.aliyun.com/t/10365),有一篇文章总结得很好,就是大部分的weblogic反序列化分析原理的文章都是用的这个方法,首先是搭建测试环境,然后使用wireshark进行抓包,分析以下数据的传输方式,然后从底层的报文传输的数据格式开始反向写payload进行验证,然后再定位到与其相关的漏洞函数进行进行一步的验证。也就是这个流程:payload服务端获取过程->payload一些传播处理(比如对payload字符串的切割)->payload最终到达触发函数触发漏洞。

 

IIOP反序列化原理简单总结:

和之前的T3协议所引发的一系列反序列化漏洞也很相似,都是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,并没有进行安全检查所导致的。通过bind方法中发送序列化对象到服务端,服务端在读取的时候进行反序列化操作,从而触发漏洞。

IIOP反序列化流程:

1、通过设置java.naming.provider.url(env.put("java.naming.provider.url", String.format("iiop://%s:%s", ip, port));)的值为iiop://127.0.0.1:7001获取到对应的InitialContext对象,然后再bind操作的时候会将被绑定的对象进行序列化并发送到IIOP服务端。

2、Weblogic服务端在获取到请求的字节流时候进行反序列化操作触发漏洞。(搜索readObject方法,对传入的数据进行反序列化)

 参考文章:https://www.anquanke.com/post/id/197605

 

XMLDecoder原理简单总结:

https://blog.csdn.net/weixin_39997194/article/details/111334100,看了该文章,总结一下,就是有一个可以反序列的方法xmlDecoder.readObject方法,该方法主要是读取了发送的payload包中的header内容来进行反序列化。比t3协议的更好理解一下,是使用xmlDecoder.readObject直接执行的命令,传入的xml数据从始至终都没有受到任何过滤,wls-wsat的类似剥洋葱的处理方式一层一层揭开最后直接反序列化,需要了解soap知识点.,SOAP message由Envelope,header, Body and fault四部分组成,主要的漏洞体现在:CVE-2017-3506 ,CVE-2017-10271 CVE-2019-2725这三个CVE,其实后面两个是最前面那个3506编号的绕过,从字符上限制,然后使用新的标签替换之后又限制了新的标签(new),然后再使用文件加载xml的方式直接绕过标签过滤,最后修复2725是直接禁用文件class加载了。

 漏洞总结:

1.直接通过T3协议发送恶意反序列化对象(CVE-2015-4582、CVE-2016-0638、CVE-2016-3510、CVE-2020-2555、CVE-2020-2883)
2.利用T3协议配合RMP或ND接口反向发送反序列化数据(CVE2017-3248、CVE2018-2628、CVE2018-2893、CVE2018-3245、CVE-2018-3191、CVE-2020-14644、CVE-2020-14645);还有利用IIOP协议的CVE-2020-2551

3.通过 javabean XMLDecoder方式发送反序列化数据。(CVE2017-3506->CVE-2017-10271->CVE2019-2725->CVE-2019-2729)

 

(3)shiro反序列原理

 之前有分享文章:https://www.cnblogs.com/cute-puli/p/13485294.html 里面提到了一些简单的原理总结: 总结参考原文:https://www.cnblogs.com/loong-hon/p/10619616.html Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化、AES加密、Base64编码操作。在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为: 获取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化
但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。  

(4)fastjson反序列原理

 之前有分享文章:https://www.cnblogs.com/cute-puli/p/13466362.html

里面提到了一些简单的原理总结:原理总结参考https://www.secpulse.com/archives/72391.html

fastjson版本:1.2.22-1.2.24。这些版本的fastjson未对@type中加载进的类进行过滤,导致的这一版漏洞。

主要由于利用templatesImlp这个类中的getTransletInstance方法,这个方法是newinstance的,new完之后直接调用exec执行外部命令了,但是在这之前,要先调用defineTransletClasses方法,这个方法中有一个_bytecodes字段,部分函数能够根据这个字段来生成类的实例,这个类的构造函数是我们可控的,就能rce。

 

(5)php反序列原理

首先需要了解一下什么是php反序列化:https://www.cnblogs.com/cute-puli/p/16653701.html

 

(6)RSA与AES算法原理

AES:aes是一种对称密码,加密与解密使用相同的密钥,为des的扩展,原理的话就是使用一种迭代方式将明文与密钥进行迭代分组,然后不断地加密明文。分为3类,128比特密钥+10轮加密,192比特密钥+12轮加密,256比特密钥+14轮加密,因为des是64比特的密钥+16轮加密的,所以会有这个区别,感兴趣的可以先了解des加密过程,涉及(s盒、e盒、压缩变换与扩展变化等)然后aes是存在填充方式的,比如for_ _ _ _ _还差的5位,需要往里面填充\0x05,这样变成16位的整数位,这个填充方式比较重要,称为pkcs5,当然还有其他的填充方式,只是大部分的填充都是用的这个方式,至少我挖漏洞遇到的基本都是这种填充方式。最后一个都是密码本的呈现,有两种呈现方式,一种是明文分组对应的加密,比较单一与简单,同样的明文对应同样的密文,优点是加密速度快,这种方式称为ecb密码本加密方式,还有一种cbc的比较复杂的加密方式,是将最开始的明文与iv异或,然后生成的密文作为下一轮的iv进行第二轮加密,然后这样不断地产生密文,这种密码本的方式也是实战中比较常见的,即:找到key与iv就能解密。然后aes在实战中遇到的比较多,目标就是想尽办法的去调试获取到key与iv即可。

 

RSA:基于大数分解难题原理。上次我有看到一个网站使用rsa加密,就是他是有在自己的站点放公钥本跟私钥本的,然后一般公钥都是公开的,就是说你即使只要了公钥是什么,你没有私钥就没法解开。所以rsa是典型的非对称加密,加密用的公钥,解密用的私钥。可惜当时没访问到私钥的txt文件,要是有了没准就能解密了。一般出现在ctf中比较多,记住公式即可:m的e次方模N就是密文c,c的d次方模N就是明文m,然后这个求明文肯定是比较多的,就是已知,N=p*q,e,与c,求明文m,先求d,d为e与(p-1)*(q-1)的乘法逆元,已知了d、e、p、q、N、c(相当于已知密文c,私钥d,公钥e,pq基于大数分解可以分解出来),就可以得到m,因为m是c的d次方模N。这些都是我看了3遍rsa的讲解总结出来的,因此要做到了解原理,至少得学3遍以上数论跟刷例题5-10道左右。

标签:web,CVE,加密,协议,汇总,T3,原理,序列化
From: https://www.cnblogs.com/cute-puli/p/16653301.html

相关文章

  • 初识WebSocket
    初识WebSocket一、WebSocket的用途参考:https://blog.csdn.net/qq_43842093/article/details/123158436https://cloud.tencent.com/developer/article/2028722大致可以......
  • Javaweb项目和Maven项目的相关导包
    Javaweb项目的学习大致需要一下几个导包:以上几个包需要导入到WEB-INF目录下的lib文件夹里面,主要操作如下:1、新建一个lib文件夹(在WEB-INF目录下)2、右键lib文件夹,选择其......
  • 16.web-简单功能分析-静态资源访问
    1、静态资源目录只要静态资源放在类路径下:called /static (or /public or /resources or /META-INF/resources访问:当前项目根路径/+静态资源名 原理:静......
  • 15.web开发-SpringMVC自动配置概览
    SpringBootprovidesauto-configurationforSpringMVCthatworkswellwithmostapplications.(大多场景我们都无需自定义配置)Theauto-configurationaddsthef......
  • DispatcherServlet工作原理,处理流程
    工作原理1.当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求。DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到处理程序中。处理程序......
  • 11.自动配置原理入门-自动配置流程-场景
    简单分析一下场景中的自动配置的流程就拿springboot-autoconfiguration中的web场景来简单分析进入web的servlet中的DispatcherServletAutoConfiguration    第......
  • Web 中的可访问性 (CSS)
    PhotobyKOBU代理商on不飞溅Web中的可访问性(CSS)这是我关于Web上的可访问性的第二篇文章。在里面上一篇文章,我在HTML中谈到了Web上的可访问性,而这一次,......
  • 笔记:sentinel配置链路时web-context-unify=false不生效
    @ConfigurationpublicclassdemoConfig{/***@NOTE在spring-cloud-alibabav2.1.1.RELEASE及前,sentinel1.7.0及后,关闭URLPATH聚合需要通过该方式,spring-clou......
  • UAC实现原理
    UAC实现原理:当用户登录系统成功后,系统会为用户生成一个accessToken。该用户调用的每一个进程都会有一个AccessTokencopy。当进程要访问某个securableobject时,系统会......
  • 小迪安全D4笔记:基础入门-web源码拓展
    title:小迪安全D4笔记:基础入门-web源码拓展author:TTdate:2022-09-02一、web源码目录结构后台目录模板目录数据库目录数据库配置文件二、web源码脚本类型ASP......