月薪 27K,年薪 40 的甲方网络安全负责人面试题(二面)上

二面相比于一面,比较偏向于技术方向,由于篇幅原因,预计会分 2 到 3 次发出。

Fastjson 反序列化漏洞是哪个版本,能说一下它的原理和修复方式吗,修复之后还有其他绕过方式吗?

我们常说的最经典的 FastJson 反序列化漏洞是1.2.22 - 1.2.24 版本的。

FastJson 它本身有一个叫做自省的功能,也叫 AutoType。

它本意是在反序列化的时候指定类型,从而方便后续的开发操作。

使用 AutoType 指定类型后,反序列化时就会通过该类型的 setXXX 方法来写入属性值。

恰好,java 的 jdbc 包里面存在一个 JdbcRowSetImpl 类,这个类有一个 dataSourceName 属性是用来指定 Jdbc 的远程连接地址的,它可以传入 rmi 或者 ldap 之类的服务,而这个 dataSourceName 的 set 方法中,又恰好是通过 setAutoCommit 方法去自动连接的。

所以,当反序列化的类指定 AutoType 为 JdbcRowSetImpl 并且 dataSourceName 属性指定一个 rmi 或者 ldap 的远程恶意类时,最终就会自动调用 setDataSourceName 方法内的 setAutoCommit 来连接 rmi 或者 ladp 从而执行恶意代码。

当然,JdbcRowSetImpl 只是众多利用链的其中一条,还有譬如 TemplatesImpl 也是一个比较常用的利用链,其原理都差不多。

在后来的 FastJson 1.2.25 版本,将 AutoType 的默认值设置为 False,并且加入了黑名单校验的方式来过滤掉一些利用链,也预留了白名单方式,但白名单默认是空的,以此来尝试修复反序列化漏洞。

但是,由于 AutoType 本身就是 FastJson 的特色功能,很多场景实际上是很有必要使用的,所以即使默认值设置为 False,但还是有很多场景会手动修改为 True。

并且1.2.25 是以 startWith 匹配黑名单的方式来过滤利用链的包名的,如 com.sun.rowset.JdbcRowSetImpl,但是忽略了一点,在 JNI 语法中,com.sun.rowset.JdbcRowSetImpl 这种写法反而是个简略写法,JNI 中规范的对象写法应该是用字母 L 开头,分号结尾来包裹,如:Lcom.sun.rowset.JdbcRowSetImpl;

也正是因为如此,所以完整的写法反而绕过了 startWith 匹配黑名单的检测方式。同样的,JNI 中的数组写法 [xxx] 也可以绕过 startWith 匹配黑名单检测,因为无论是 Lxxx 还是 [xxx 都不匹配 startWith(“com.xxx”) 这个条件。

直到 1.2.42 版本中,FastJson 对黑名单进行了优化,使用 substring 截断了第一个 L 字符与最后一个 ; 字符,并且将黑名单改进成了 Hash 匹配,从而来增加代码审计的难度。

但是由于 substring 只是简单的截断了头尾的字符,所以又可以使用双写绕过。

1.2.43 版本中,黑名单再次强化,这次,L 和 ;终于彻底被过滤了。

但是,数组写法的绕过方式依然存在。

1.2.44 版本,[ 符号也被加入了黑名单,数组的写法也被拉黑了。

结果,又被大佬们挖掘出新的利用链,好像是基于 MySQL 的某个版本的 jar 包。

再后来,又被大佬们陆续挖掘出 cache 缓存利用等多种方式。

不过 1.2.44 版本之后我就没有深入研究,就不是很了解了。

CC 利用链从 1 - 6 的区别

CC 1-3 是通过修改和扩展 InvokerTransformer 来执行任意 Java 方法的,区别是 Transformer 的组合方式。比如 CC1 只能使用单个 InvokerTransformer,CC3 可以链式调用 Transformer 来实现更复杂的调用。

CC4 是使用 ChainedTransformer 结合多个 Transformer 来执行 Java 方法的,可以绕过一些基础的检查机制。

CC5 是利用 InstantiateFactory 来实例化对象,同样也可以绕过一些检查。

CC6 是在 CC5 的基础上加入了 LazyMap,来延迟执行恶意代码,直到特定条件才触发

CC 链的源码没有做深入研究,回答的比较片面,后期有空的话我会把这一块源码仔细研究一下,专门写一篇。

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

网络安全资源分享

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

【点击免费领取】CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》

1.学习路线图

在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】

在这里插入图片描述

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】

在这里插入图片描述

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

在这里插入图片描述

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

在这里插入图片描述

👋全套《黑客&网络安全入门&进阶学习资源包》👇👇👇

这份完整版的学习资料已经上传CSDN,也可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值