《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN
都要准备睡觉了,一个球友找过来让我帮忙选选offer,我只能说这行情真的是旱的旱死涝的涝死啊,下面是这位仁兄的三个offer:
1、深信服技术服务工程师,base 西安,月薪 14k 据说还有些异地补助
2、奇安信安全服务工程师,base 重庆,月薪 12k
3、绿盟科技的渗透工程师,base 武汉,月薪 10k
其实我们在我们星球的就业指南模块我介绍过各类公司应该如何选,各类公司的各类岗位的优劣。
但我还是帮他分析了下,目前这三个岗位其实差不多都是在二线,都是服务技术岗,虽然看薪资来说深信服最高,但是深信服毕应该也是最累,最卷的,并且他是有异地工作的要求的。
最终我给他推荐区绿盟,因为他家是在武汉的,学校也是在武汉的,毕竟圈子很重要,3年以后再回头来看身边应该很多同学都是做安全的,大家彼此互相照应,互相介绍点岗位,介绍点项目啥的。
顺便我问了问这几家公司都面了什么问题。
他说基本都是从top10开始问,逐步深入,但是主要都还是问了如何绕waf,还有shiro、fastjson框架漏洞,以及一些安全开发的问题。
1. 如何利用HTTP协议特性绕过WAF的SQL注入检测?
答案:
1. 分块传输(Chunked Encoding):通过Transfer-Encoding: chunked头将payload分割为多个块,干扰WAF的正则匹配
2. 参数污染(HPP):构造多个同名参数如?id=1&id=union/*&id=*/select 1
3. 注释符混淆:利用/*!MySQL特有语法*/或--%0a等特殊注释绕过模式匹配
4. 进阶方案:结合Range头部分请求(206状态码)分段获取响应
2. 在XSS防御场景中,如何绕过基于DOM的WAF检测?给出具体payload示例
答案:
利用JavaScript语法特性:
a) 动态构造:window['al'+'ert'](1)
b) Unicode编码:\u0061\u006c\u0065\u0072\u0074(1)
c) SVG标签:<svg><script>alert(1)</script>
防御方案:需实现上下文感知的AST解析
3. 如何通过TCP/IP层绕过云WAF防护?说明技术原理
答案:
1. 源IP伪造:利用云服务商IP段伪造可信来源
2. 慢速攻击:通过低速率HTTP请求规避流量分析
3. IP分段攻击:构造异常分片报文使WAF重组失败
4. 最新方案:利用QUIC协议(UDP)绕过传统HTTP WAF
4. 详细分析Shiro RememberMe反序列化漏洞(CVE-2016-4437)的利用条件及修复方案
答案:
漏洞链:
Cookie反序列化 -> AES解密 -> 硬编码密钥 -> 任意代码执行
利用条件:
1. 使用默认RememberMe功能
2. 服务端未更换默认AES密钥
3. 目标环境存在可利用的gadget链
修复方案:
1. 升级至1.2.6+版本
2. 配置shiro.xml中rememberMeManager的加密密钥
3. 添加SerializationFilter阻断恶意类
5. 如何检测Shiro框架的指纹特征?列举三种不同维度的检测方法
答案:
1. Cookie特征:rememberMe=deleteMe字段
2. 响应头特征:Set-Cookie包含JSESSIONID=且无Servlet容器标识
3. 错误页面特征:/login.jsp返回Shiro默认错误提示
4. 流量特征:请求包携带shiro_rememberMe参数
6. 分析Shiro权限绕过漏洞(CVE-2020-1957)的成因及利用方式
答案:
成因:
Spring与Shiro路径解析差异导致:
- Spring处理/admin/index时会标准化为/admin/index
- Shiro的AntPathMatcher将/admin/*匹配/admin/index/时会通过
Payload:
访问/admin/index/ 绕过/admin/*的权限校验
修复方案:
1. 使用pathMatcher配置严格匹配模式
2. 升级至1.5.3+版本
7. 解释FastJSON AutoType机制的安全问题及绕过方式
答案:
漏洞原理:
1. 默认开启AutoType反序列化任意类
2. 黑名单机制可通过特殊字符绕过
绕过方式:
a) 使用L开头;结尾的类名:Lcom.sun.rowset.JdbcRowSetImpl;
b) 继承类攻击:利用继承自黑名单类的子类
c) 最新绕过:Fastjson 1.2.68中利用expectClass机制
防御方案:
1. 关闭AutoType:ParserConfig.getGlobalInstance().setAutoTypeSupport(false)
2. 使用SafeMode(1.2.68+)