【发布时间】:2015-10-16 01:16:41
【问题描述】:
使用 expressjs 和 morgan 中间件进行日志记录,我注意到服务器日志中有一些频繁且令人担忧的请求。
相关记录器代码
var app = express();
app.use(morgan(':remote-addr - [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'));
因此,日志的示例是
::ffff:(redacted) - [Fri, 24 Jul 2015 04:16:32 GMT] "GET / HTTP/1.1" 200 29294 "-" "-"
::ffff:(redacted) - [Fri, 24 Jul 2015 04:17:30 GMT] "GET http://example.com/path.php HTTP/1.1" 200 34523 "-" "-"
::ffff:(redacted) - [Fri, 24 Jul 2015 04:17:36 GMT] "GET /path HTTP/1.1" 200 29294 "-" "-"
不幸的是,我不知道如何重现这样的错误。这是一个潜在的漏洞吗?原木锻造?我在哪里可以找到更多信息?
具体来说,这一行的 url 是“GET http://example.com/path.php HTTP/1.1”,其中 example.com 不是我的域,我的服务器也没有设置为向这个 example.com 发出请求。通常这里只显示一个路径(即/example、/path、/)。此外,这些行通常作为来自外部 IP 的明显漏洞扫描的一部分出现,200 的响应让我担心。日志是否指示出站请求?有人以某种方式使用我的服务器作为代理吗?
【问题讨论】:
-
什么是潜在的漏洞?您究竟关心日志的哪一部分?
-
在我希望看到路径的地方显示 URL 的行。我已经相应地更新了问题
-
您是否尝试使用 curl 或类似工具向您自己的服务器执行相同的请求以查看它的响应?
-
@mscdex 是的!我尝试的第一件事,但我自己无法重现它。根据 morgan logger docs,:url 将是 express 的 request.originalUrl,否则,将是 http 模块的 request.url。问题可以简化为:在什么情况下,其中任何一个都是完整的 URL,而不仅仅是隐含的路径?或者:为什么我在“http://xxx.xxx.xxx”的服务器的request.url是“http://yyy.yyy.yyy?”