20-12

如果审计到了一个文件下载漏洞如何深入的去利用

1. 确认与初步利用

首先,要确认这是一个真正的文件下载漏洞,而不是一个伪装的假象。通常,漏洞代码看起来是这样的:

<?php
// ...
$file = $_GET['file'];
$path = "/var/www/html/downloads/" . $file;
if (file_exists($path)) {
    header("Content-Type: application/octet-stream");
    readfile($path);
} else {
    echo "File not found.";
}
// ...
?>

这里的关键在于 $file = $_GET['file']; 这行代码没有对用户输入进行任何过滤

初步利用方式:

  • 路径遍历(Path Traversal): 尝试使用 ../ 来向上跳目录,下载服务器上的敏感文件
    • Payload: ?file=../../../../etc/passwd
    • 目的: 验证漏洞是否存在,并尝试下载系统敏感文件,如 /etc/passwd(Linux 用户列表)或 C:WindowsSystem32driversetchosts(Windows 主机文件)
  • 下载源码: 尝试下载网站的 PHP 源代码文件。
    • Payload: ?file=../../../../var/www/html/index.php?file=../../../../var/www/html/config.php
    • 目的: 获取网站的数据库连接信息、API密钥或其他硬编码的凭据,为下一步攻击做准备