Ciscn初赛WP
字数 913 2025-08-06 12:20:59

利用软链接进行目录穿越攻击的技术分析

技术背景

本文档详细分析了一种通过构造特殊压缩包利用软链接(符号链接)实现目录穿越的攻击技术,该技术在CTF比赛(Ciscn初赛)中被用于解决Web题目。

核心原理

攻击者通过创建指向根目录的软链接,并将其打包成压缩文件,当目标系统解压该文件时,会遵循软链接的指向,导致文件被解压到非预期位置,实现目录穿越。

详细攻击步骤

1. 创建软链接

ln -s / .binbin

这条命令创建了一个名为.binbin的软链接,指向系统的根目录/

2. 打包软链接

zip --symlinks root.zip .binbin

使用zip命令打包软链接文件,--symlinks参数确保打包时保留符号链接属性而非链接指向的内容。

3. 构造恶意压缩包

攻击者需要构造一个压缩包,使其解压时:

  1. 首先创建.binbin软链接指向根目录
  2. 然后利用该软链接将文件解压到/var/www/html/目录下

4. 上传并利用

  1. 将构造好的压缩包上传到目标系统
  2. 目标系统解压时:
    • 首先创建.binbin -> /的软链接
    • 然后解压文件到.binbin/var/www/html/,由于.binbin指向/,实际文件会被解压到/var/www/html/

实际应用示例

假设攻击者想要将binbin.php文件写入目标系统的/var/www/html/目录:

  1. 创建目录结构:

    mkdir -p .binbin/var/www/html/
    cp binbin.php .binbin/var/www/html/
    ln -s / .binbin
    
  2. 打包:

    zip --symlinks malicious.zip .binbin
    
  3. 上传malicious.zip到目标系统并解压后,binbin.php会被写入/var/www/html/binbin.php

防御措施

  1. 解压前检查:在解压用户上传的压缩包前,检查其中是否包含符号链接
  2. 使用安全解压参数
    • unzip命令可使用-L参数将符号链接转换为普通文件
    • 或使用-P参数禁止处理符号链接
  3. 限制解压目录:使用-d参数指定解压目录,不跟随符号链接
  4. 文件系统隔离:在容器或沙箱环境中处理不可信压缩文件
  5. 权限控制:确保Web应用运行账户对系统关键目录没有写权限

总结

这种攻击利用了压缩工具处理符号链接时的特性,结合Web应用的文件上传和解压功能,实现了目录穿越和任意文件写入。防御的关键在于正确处理符号链接和限制解压行为。

利用软链接进行目录穿越攻击的技术分析 技术背景 本文档详细分析了一种通过构造特殊压缩包利用软链接(符号链接)实现目录穿越的攻击技术,该技术在CTF比赛(Ciscn初赛)中被用于解决Web题目。 核心原理 攻击者通过创建指向根目录的软链接,并将其打包成压缩文件,当目标系统解压该文件时,会遵循软链接的指向,导致文件被解压到非预期位置,实现目录穿越。 详细攻击步骤 1. 创建软链接 这条命令创建了一个名为 .binbin 的软链接,指向系统的根目录 / 。 2. 打包软链接 使用 zip 命令打包软链接文件, --symlinks 参数确保打包时保留符号链接属性而非链接指向的内容。 3. 构造恶意压缩包 攻击者需要构造一个压缩包,使其解压时: 首先创建 .binbin 软链接指向根目录 然后利用该软链接将文件解压到 /var/www/html/ 目录下 4. 上传并利用 将构造好的压缩包上传到目标系统 目标系统解压时: 首先创建 .binbin -> / 的软链接 然后解压文件到 .binbin/var/www/html/ ,由于 .binbin 指向 / ,实际文件会被解压到 /var/www/html/ 实际应用示例 假设攻击者想要将 binbin.php 文件写入目标系统的 /var/www/html/ 目录: 创建目录结构: 打包: 上传 malicious.zip 到目标系统并解压后, binbin.php 会被写入 /var/www/html/binbin.php 防御措施 解压前检查 :在解压用户上传的压缩包前,检查其中是否包含符号链接 使用安全解压参数 : unzip 命令可使用 -L 参数将符号链接转换为普通文件 或使用 -P 参数禁止处理符号链接 限制解压目录 :使用 -d 参数指定解压目录,不跟随符号链接 文件系统隔离 :在容器或沙箱环境中处理不可信压缩文件 权限控制 :确保Web应用运行账户对系统关键目录没有写权限 总结 这种攻击利用了压缩工具处理符号链接时的特性,结合Web应用的文件上传和解压功能,实现了目录穿越和任意文件写入。防御的关键在于正确处理符号链接和限制解压行为。