目录
java反序列化漏洞的产生原理是什么?如何挖掘Java反序列化漏洞?
如何识别网站使用了Shiro?Shiro反序列化漏洞的产生原理是什么?
Shiro 550和721漏洞有什么区别?在实际应用中,如何有效地防范Shiro反序列化漏洞?
Weblogic常见漏洞有哪些?Weblogic反序列化漏洞产生的原理是什么?
前言
蓝队中级:主要考察你对中间件、相对应的漏洞等流量特征,是否了解过内存马以及应急响应和溯源能力
流量特征是面蓝中的硬性要求,应急响应和溯源能力,应急能力决定了你是否能评上中级,溯源能力决定了你是否能评上中+。
当然有甚至,蓝中会问你一些内网渗透相关的问题,更有甚者,会问你一些域渗透,云安全相关的问题,说到这儿大家可能会感觉到离谱, 我的天哪~ 我是不是只能当一个监控猴子呢?
圈内有句话说的好, 未知攻,焉知防? 怎么攻击的你都不知道,原理都没搞清,当然也就不知道怎么防守了
面试题
-
java反序列化漏洞的产生原理是什么?如何挖掘Java反序列化漏洞?
-
原理:
- 当Java应用程序对来自外部输入的不可信数据进行反序列化处理时,就形成了反序列化漏洞。
-
挖掘方法:
- 1、寻找一个类,通过构造一个对象,十七在被反序列化时能执行到危险(sink)方法。
- 2、寻找一个类,存在可能的执行路径,从反序列化入口(source)方法执行到危险(sink)方法自动化搜索。
- 3、构造这个对象,使危险(sink)方法参数可控。(手工打造)
-
-
如何识别网站使用了Shiro?Shiro反序列化漏洞的产生原理是什么?
-
识别方法:
- 1、返回包中包含rememberMe字段
- 2、cookie中含有remeberMe字段
- 3、URL中含有Shiro字段
-
原理:
- 在反序列化时,不会对其进行过滤,所以如果传入恶意代码将会造成安全问题
-
-
Shiro 550和721漏洞有什么区别?在实际应用中,如何有效地防范Shiro反序列化漏洞?
-
区别
- Shiro 550使用一直密钥碰撞,只要有足够密钥库,不需要Remember Cookie
- Shiro 721的ase加密的key基本猜不到,系统随机生成,可使用登录后rememberMe去爆破正确的key值,即利用有效的RememberME Cookie作为padding Oracle Attack的前缀,然后精心构造RememberME Cookie值来实现反序列化漏洞攻击,难度高。
- 550是反序列化,721是加密解密,550不需要rememberMe Cookie解密,721需要来rememberMe Cookie解密;
-
防范方法:
- 1、验证数据源
- 2、过滤数据
- 3、使用安全的数据源
- 4、限制反序列化的类
- 5、使用自定义的反序列化
- 6、更新Shiro版本
- 7、防止反序列化漏洞的检测工具
-
-
Weblogic常见漏洞有哪些?Weblogic反序列化漏洞产生的原理是什么?
-
常见漏洞
- 任意文件上传漏洞(CVE-2018-2894)
- XMLDecoder反序列化漏洞(CVE-2017-10271)
- 反序列化漏洞(CVE-2018-2628)
- 未授权命令执行漏洞(CVE-2020-14882)
-
反序列漏洞产生原理
- T3协议缺陷实现了Java虚拟机的远程方法调用(RMI),能够在本地虚拟机上调用远端代码。
- Weblogic控制台7001端口默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Conponents中 存在反序列化漏洞,攻击者可以构发送来获取目标服务器权限。
-
-
什么是Fastjson?fastjson常见漏洞有哪些?
-
原理
- 1、是一种Java JSON解析库
- Fastjson是一个Java序列化和反序列化框架,能将Java对象转化为JSON格式的字符串,并将JSON字符串转换为Java对象;
-
常见漏洞
- 2、反序列化漏洞、反序列化导致任意命令执行漏洞
-
-
菜刀流量特征是什么?
- “eval”,eval函数用于执行传递的攻击payload,这是必不可少的;
- (base64_decode($POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行base64解码,因为菜刀默认是使用Base64编码,以避免被检测;
- &z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文。
-
蚁剑流量特征是什么?
- 蚁剑的正文内容进行URL解码后,流量中最明显的特征位@ini_set("display_errors","0"),@set_time_limit(0),后面也会有base64等字符;同时蚁剑也有eval这种明显得特征。
- payload中,php中使用assert,eval函数执行,在jsp中使用java类(ClassLoader)加载,也会带有base64加密解密特征;
-
冰蝎流量特征是什么?
- 数据包中总是伴随着大量得content-type: 、application,无论GET还是POST
- 冰蝎3.0内置的默认内置16个ua(user-agent)头
- content-length 请求长度,对于上传文件,命令执行来讲,加密的参数不定长
- 冰蝎3.0采用自定义的二进制协议进行通信,冰蝎4.0采用HTTP协议进行通信;
- 冰鞋3.0使用DES加密算法,冰蝎4.0使用RC4加密算法;
-
哥斯拉流量特征是什么?
- 1、发送一段固定代码(payload),http响应为空
- 2、发送一段固定代码(test),执行结果为固定内容
- 3、发送一段固定代码(getBacisInfo)
-
CobaltStrike流量特征什么?
- 固定的user-agent头
- 特殊的请求特征,使用Cobalt Strike下达指令时,会出现POST请求/sumbit.php?id=xxx的特征。
- 魔改后的特征:遗留了GET /cx 和POST /q.cgi 等两个特征。
- 被控端会发送心跳包。
- 解密算法check sum8(92L,93L)。
-
MetasploitFramework流量特征是什么?
- 使用默认的4444端口作为反向连接端口;
- 数据包中包含metepreter,revshell等特定字符;
-
不出网Fastjson反序列化漏洞如何利用?
- 基于JNDI注入
- 基于ClassLoader
- 基于Templateslmpl
{ "@type":"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", "_bytecodes":["yv66vgAAADM ··· 省略 ··· CAB0="], '_name':'a.b', '_tfactory':{ }, "_outputProperties":{ } }
-
利用redis服务Getshell的方式有哪些?
- 1、通过向Web目录中写Webshell的方式进行getshell
- 2、通过写SSH key的方式进行getshell
- 3、通过写corntab的方式进行getshell
-
log4j反序列化漏洞的产生原理是什么?
- JNDI注入:可以通过日志文件配置中的特定字段来配置JNDI资源,JNDI是用来访问命名和目录服务的API;
- JNDI服务利用:攻击者构造恶意的日志文件,在日志配置文件中使用特定的字段,指定一个远程的JNDI服务地址,当Log4j尝试解析并获取JNDI资源时,会向远程地址发起请求;
- JNDI远程代码执行:攻击者在远程JNDI服务上搭建一个恶意的RMI服务,该服务会返回一个恶意的代码,当Log4j尝试获取JNDI资源时,他会从远程JNDI服务获取到恶意代码,并在应用程序执行,从而导致远程代码执行漏洞;
- 恶意代码执行:当成功利用Log4j漏洞,攻击者可以在受影响的应用程序中执行任意恶意代码,包括远程命令执行,代码执行,服务器接管等
-
内存马分为哪些类型?各自的原理是什么?
-
传统Web应用型内存马
- 使用基本 Servlet-API 实现的动态注册内存马,此种类型的内存马最经典,已经被扩展至适应各个中间件。
-
框架型内存马
- 除了传统的 Servlet 项目,使用 Spring 全家桶进行开发的项目越来越多,而 Spring-MVC 则是自实现了相关路由注册查找逻辑,以及使用拦截器来进行过滤,思想上与 Servlet-Filter 的设计类似。
-
中间件型内存马
- 在中间件的很多功能实现上,因为采用了类似 Filter-FilterChain 的职责链模式,可以被用来做内存马,由于行业对 Tomcat 的研究较多,因此大多数的技术实现和探究是针对 Tomcat 的,但其他中间件也有相当多的探究空间。
-
其他内存马
- 还有一些其他非常规的利用思路,可以用在内存马的实现上,例如 WebSocket 协议等。
-
Agent型内存马
- 利用 Java Agent 技术进行植入内存马逻辑的实现方式。
-
- 如何检测与查杀内存马?
- 检测
- 先查看检查服务器web日志,查看是否有可疑的web访问日志,比如说filter或者listener类型的内存马,会有大量url请求路径相同参数不同的,或者页面不存在但是返回200的请求。
- 如在web日志中并未发现异常,可以排查是否为中间件漏洞导致代码执行注入内存马,排查中间件的error.log日志查看是否有可疑的报错,根据注入时间和方法根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
- 查看是否有类似哥斯拉、冰蝎特征的url请求,哥斯拉和冰蝎的内存马注入流量特征与普通webshell的流量特征基本吻合。
- 通过查找返回200的url路径对比web目录下是否真实存在文件,如不存在大概率为内存马。
- 查杀
- 重启php服务器,(service apache2 restart)·
- 强行kill 后台进程 ps aux | grep www-data | awk '{print $2}' | xargs kill -9
- while循环写脚本 while : ;do rm -rf xxx; done
- 建立一个和不死马相同名字的文件或者目录,不断竞争写入一个和不死马同名的文件
- 检测
- SQL注入时,Waf 过滤了逗号,如何绕过?
- 使用from关键字绕过
- 使用join关键字绕过
- 使用like关键字绕过
- 使用offset关键字绕过