使用不带 PHP 的 Nginx 时访问日志错误“/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php”

Raj*_*net 3 php google-chrome nginx aws

我使用 Nginx 作为 Web 服务器,并且没有在机器上安装任何 PHP 和任何模块。当我分析访问日志时,我得到:

- - [26/Sep/2021:20:13:30 +0000] "POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 401 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
- - [26/Sep/2021:20:13:32 +0000] "GET /index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21 HTTP/1.1" 401 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
- - [26/Sep/2021:20:13:33 +0000] "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 401 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
- - [26/Sep/2021:20:13:34 +0000] "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 1298 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

上述内容在日志中多次出现。

有谁知道我为什么会得到这个?

Hen*_*eck 6

仅仅因为某些东西不存在,并不意味着人们无论如何都不能要求它;)

如果客户端(Web 浏览器或其他设备)向您的 Web 服务器请求某些内容,则该请求将记录在访问日志中 - 无论该请求是否已成功应答。

举例来说,您输入错误并请求https://www.some-site.tld/newes而不是https://www.some-site.tld/news。后面的服务器很可能some-site.tld会回复响应代码 404(意思是“未找到”),并会newes在其访问日志中记录您的请求。然后,该服务器的管理员将在其日志中看到newes,即使该路径可能在其服务器上不存在。

您的三个日志条目中有两个来自此类失败的请求:

[26/Sep/2021:20:13:32 +0000] "GET /index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21 HTTP/1.1" 401 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

表示 26/Sep/2021:20:13:32 +0000 有一个GET请求,要求/index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21. 您的服务器回复响应代码 401(意思是“未经授权”,或者通俗地说“您不允许去那里”)。

类似的

[26/Sep/2021:20:13:33 +0000] "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 401 19 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

在这里,有人于 26/Sep/2021:20:13:33 +0000 向您的服务器询问/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php. 您的服务器再次回复代码 401。

第三个请求

[26/Sep/2021:20:13:34 +0000] "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 1298 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

意味着有人在 26/Sep/2021:20:13:33 +0000 向您的服务器询问/?XDEBUG_SESSION_START=phpstorm. 与前两个请求相比,此请求已成功应答,您的服务器发送了代码 200(意思是“OK”)。

获得这样的请求本身并不一定是一个问题。攻击者使用自动化系统扫描互联网的大部分区域以查找可能的漏洞。例如,由于 WordPress 如此普遍,此类系统会尝试访问他们可以接触到的任何服务器上的内部 WordPress 路径 - 无论该服务器是否曾经安装过 WordPress。这就像一个潜在的窃贼沿着街道检查每栋房子是否有开着的窗户。只要你的窗户正确关闭,你可能就没事。

当你的窗户没有正确关闭时,这就会成为一个问题。因此,您仍然需要定期梳理日志,并检查服务器上是否确实存在对可能有问题的地址的请求。