网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
一面技术问题
1. Burp插件原理
2. JavaWeb项目经验
3. CC1-7链原理(以CC6为例)
4. Fastjson与Jackson反序列化对比
5. BCEL类加载器
6. XStream反序列化漏洞
7. 反序列化基础原理
8. JEP290机制
9. RMI原理与漏洞
10. JdbcRowSetImpl JNDI注入
11. CC链四个Transformer区别
12. CVE/CNVD挖掘经验
13. 反序列化其他触发点
14. Spring RCE漏洞
15. IIOP/T3反序列化
16. PHP反序列化
二面综合问题
1. 安全从业年限
2. 未来规划
3. 实习成果
4. 工作地点要求
匿名[实习]安全工程师(安全厂商)
### 一面1. 讲讲你写的几个Burp插件原理 2. 做过什么JavaWeb项目吗 3. CC1-7找熟悉的讲一下原理 4. Fastjson和Jackson反序列化原理讲讲 5. BCEL可以用其他类加载器吗 6. XStream反序列化讲讲 7. 最基本的反序列化原理是什么 8. 了解JEP290的原理吗 9. 讲下RMI原理以及相关的漏洞 10. JdbcRowSetImpl如何触发的JNDI注入 11. CC链四个Transformer区别 12. 讲下你挖过的CVE和CNVD 13. 反序列化除了readObject还有什么触发点 14. 讲下Spring相关的RCE原理 15. 讲讲IIOP和T3反序列化原理 16. PHP等语言的反序列化讲讲### 二面1. 做了几年安全 2. 未来想做什么 3. 讲讲实习期间做的事 4. 工作地点要求.
一面技术问题
1. Burp插件原理
- 核心机制:Burp插件通过Java API或Python(通过Jython)扩展,主要操作包括:
- 请求/响应拦截:实现
IHttpListener
接口,在processHttpMessage()
中修改HTTP流量。- 主动扫描逻辑:通过
IScannerCheck
定义自定义漏洞检测规则。- UI集成:利用
ITab
或IContextMenu
添加自定义界面。- 典型场景:例如自动化CSRF Token替换插件,通过解析HTML提取Token并动态更新请求参数。
2. JavaWeb项目经验
- 技术栈:Spring Boot + MyBatis开发的后台管理系统,涉及:
- 安全实践:Shiro权限控制、SQL预编译防御注入、XSS过滤器(通过自定义HttpServletRequestWrapper)。
- 漏洞修复:修复过Fastjson 1.2.24反序列化漏洞,升级至2.x并启用SafeMode。
3. CC1-7链原理(以CC6为例)
- 关键类:
HashMap#readObject
触发TiedMapEntry#hashCode
,调用LazyMap#get()
触发动态代理(AnnotationInvocationHandler
)。- 绕过限制:CC6利用
HashSet
代替AnnotationInvocationHandler
,避免高版本JDK中对该类的内部校验。
4. Fastjson与Jackson反序列化对比
- Fastjson:
- 漏洞根源:
@type
字段指定任意类,通过DefaultJSONParser
解析时自动调用setter/getter。- 补丁绕过:1.2.48以下利用
AutoCloseable
接口类触发恶意代码。- Jackson:
- 触发条件:启用
enableDefaultTyping()
时,通过多态类型绑定(如Object
类型属性)实例化恶意类。- 利用类:如
org.apache.xbean.propertyeditor.JndiConverter
结合JNDI注入。
5. BCEL类加载器
- 限制与替代:
- BCEL原生使用
com.sun.org.apache.bcel.internal.util.ClassLoader
,但可被其他自定义类加载器(如URLClassLoader)加载,需手动调用loadClass()
并初始化。- 实战意义:部分WAF会拦截BCEL关键字,改用其他加载器(如Groovy ClassLoader)可绕过检测。
6. XStream反序列化漏洞
- 原理:XStream在解析XML时,通过
Converter
将标签映射为对象,攻击者构造包含EventHandler
或JdbcRowSetImpl
的XML触发RCE。- CVE-2021-21345:利用
javax.sql.rowset.BaseRowSet
的setDataSourceName
触发JNDI注入。
7. 反序列化基础原理
- 入口点:
ObjectInputStream#readObject()
反序列化二进制数据,若对象重写该方法且存在危险操作(如Runtime.exec ),则导致漏洞。- 扩展触发点:如
readResolve()
、readExternal()
等序列化接口方法。
8. JEP290机制
- 核心功能:JDK9引入的反序列化过滤器,通过
ObjectInputFilter
检查反序列化的类是否在白名单内。- 绕过方法:
- 利用未受JEP290保护的第三方库(如Groovy的
MethodClosure
)。- 嵌套序列化流绕过单层过滤(如CVE-2021-2045)。
9. RMI原理与漏洞
- 工作流程:
- 服务端注册对象到Registry(端口1099)。
- 客户端通过JNDI查找远程对象,通过动态类加载(codebase)下载恶意类。
- 历史漏洞:
- CVE-2017-3241:JRMP协议传输的序列化对象未校验,可注入CC链。
- JNDI注入:结合RMI的codebase特性,触发远程类加载(如Log4j漏洞)。
10. JdbcRowSetImpl JNDI注入
- 触发链路:调用
setDataSourceName()
设置JNDI地址,setAutoCommit(true)
触发connect()
,最终调用InitialContext.lookup()
加载恶意对象。
11. CC链四个Transformer区别
- 核心Transformer:
- ConstantTransformer:返回固定值,用于构造参数。
- InvokerTransformer:反射调用方法(如Runtime.exec )。
- ChainedTransformer:链式执行多个Transformer。
- InstantiateTransformer:实例化类并调用构造方法(如TemplatesImpl)。
12. CVE/CNVD挖掘经验
- 举例:某OA系统文件上传漏洞(CNVD-2023-XXXXX),未校验文件类型导致上传Webshell,结合权限绕过实现RCE。
13. 反序列化其他触发点
- JDBC反序列化:MySQL Connector/J的
SHOW SESSION STATUS
触发恶意类加载。- XML反序列化:XStream、Jackson XML格式解析漏洞。
- YAML/Properties解析:SnakeYAML加载恶意类。
14. Spring RCE漏洞
- CVE-2022-22965:通过参数绑定修改
Tomcat
的ClassLoader
属性,写入恶意JSP文件。- SpEL表达式注入:如
@PreAuthorize
注解中的表达式动态解析导致代码执行。
15. IIOP/T3反序列化
- IIOP:CORBA协议传输的序列化对象,WebLogic未过滤导致CC链注入。
- T3协议:WebLogic特有协议,漏洞利用需构造包含
FilterExtractor
的Payload。
16. PHP反序列化
- 魔术方法:
__wakeup()
、__destruct()
常被用于触发漏洞。- POP链构造:如利用Monolog库的
Processor
类执行系统命令。
二面综合问题
1. 安全从业年限
- 经历:3年渗透测试与漏洞研究,主导过金融、教育行业风险评估项目,熟悉红队武器化开发。
2. 未来规划
- 技术方向:深耕Java生态安全(如JVM沙盒逃逸、RASP对抗),探索云原生场景下的攻击面。
3. 实习成果
- 项目示例:某SRC平台漏洞自动化挖掘系统,集成动态污点追踪与静态代码分析,提升漏洞发现效率30%。
4. 工作地点要求
- 倾向:优先一线城市(如北京、上海),看重技术团队成熟度与业务场景复杂度,远程办公可接受。