首页 > 其他分享 >月薪 27K,年薪 40 的甲方网络安全负责人面试题(二面)上

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

时间:2024-08-06 11:56:29浏览次数:10  
标签:网络安全 面试题 1.2 27K 黑名单 40 JdbcRowSetImpl 序列化 写法

二面相比于一面,比较偏向于技术方向,由于篇幅原因,预计会分 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…

在这里插入图片描述

标签:网络安全,面试题,1.2,27K,黑名单,40,JdbcRowSetImpl,序列化,写法
From: https://blog.csdn.net/wananxuexihu/article/details/140951954

相关文章

  • 面试题 .NET Core 开发工程师
    在面试.NETCore高级开发工程师时,通常会涉及多个方面的问题,以评估候选人在不同领域的深度和广度。以下是一些常见的面试题目分类及示例问题:###基础知识1.**.NETCore与.NETFramework的区别?**-请解释.NETCore和.NETFramework的主要区别,以及在什么情况下选择使用......
  • 2024大模型秋招LLM相关面试题整理
    0一些基础术语大模型:一般指1亿以上参数的模型,但是这个标准一直在升级,目前万亿参数以上的模型也有了。大语言模型(LargeLanguageModel,LLM)是针对语言的大模型。175B、60B、540B等:这些一般指参数的个数,B是Billion/十亿的意思,175B是1750亿参数,这是ChatGPT大约的参数规模。强......
  • DASCTF 2023 & 0X401七月暑期挑战赛 MyPicDisk
    打开题目是个登录框这里是XXE盲注boogipop师傅的盲注脚本importrequestsimporttimeurl='http://6562827c-cc7e-4a5e-818d-97f9064dfce0.node4.buuoj.cn:81/index.php'strs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'flag=''......
  • [20240804]关于kitty设置与linux LANG环境设置问题.txt
    [20240804]关于kitty设置与linuxLANG环境设置问题.txt--//更正我以前理解的一个混沌的地方:--//我以前个人的工作习惯:LANG=en_US,kittyRemotecharacterset选择Usefontencoding.--//目前这样的设置存在一些问题:--//kitty设置LANG=en_US.UTF-8的情况下,kittywindow->Trans......
  • WindowsUpdate 更新错误 0x80244018
     更新windows的时候遇到了下载进度始终0%的问题,在网上检索了好多办法,最后在这个回答下(WindowsUpdate更新错误0x80244018-MicrosoftCommunity)解决了这次问题。   当提醒重启计算机的时候,重启,同时会显示正在更新。开机后我的电脑显示已经更新到最新版本。 ......
  • 【技术前沿】3.3KW高功率密度新突破!基于Infineon XMC1400搭配CoolSiC™ Mosfet 的PFC
    随着社会经济发展、能源结构变革,近几年全球对家用储能系统的需求量一直保持相当程度的增长。2023年,全球家用储能系统市场销售额达到了87.4亿美元,预计2029年将达到498.6亿美元,年复合增长率(CAGR)为33.68%(2023-2029);便携储能市场经过了一轮爆发式增长的狂欢后,现在也迎来了稳定增长期......
  • 40个高阶ChatGPT学术论文指令集(附GPT使用链接)
    ​我精心挑选的40个顶尖ChatGPT学术论文指令集,无疑将成为你撰写论文和开展研究的珍贵资源,极力推荐你珍藏起来!这些建议极具实用价值,能有效提高你的研究工作效率,使得论文撰写过程轻松许多。在开始前,提示词使用建议选择目前最强的模型,不同模型对指令的follow能力有极大的差距,纵......
  • 20240803进制、BCD码
    比特、字节、进制之间的关系​ 每一个二进制位就是一个比特,即一个字节是八个二进制位。​ 例如:十六进制的60转成对应的二进制:0110000001100000每一位是一个bit,不能再拆分了​ 以下是问ai关于某进制数占用字节空间的问题:​ 问:一个十六进制数,占几个字节?​ 答:一个十六进制......
  • Flask 应用程序的 POST 请求出现 405 method not allowed 错误
    我有一个简单的Web应用程序,可以使用以下代码向选定的受访者发送消息(使用TwilioAPI):app.pyclient=Client(account_sid,auth_token)@app.route('/')defindex():returnrender_template('index.html')@app.route('/send_sms',methods=['POST......
  • Java面试题4题(持续更新)
    Java面试题1.JVM、JRE、JDK之间的关系JVM:(1)JAVA虚拟机(2)功能:使Java一次编写到处运行。(3)功能:使Java可移植性好。JRE:(1)是Java运行环境。(2)不能创建程序。(3)包括JVM的。JDK:(1)Java开发工具包。(2)功能最齐全,包括编译器和各种工具。(3)作用:用来写代码。(4)包含JRE的。总......