我使用 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"
上述内容在日志中出现多次。
有人知道我为什么会得到这个吗?
答案1
即使某些东西不存在,也不意味着人们不能要求它;)
如果客户端(网络浏览器或其他程序)向您的网络服务器发出某些请求,则该请求将被记录在访问日志中 - 无论该请求是否得到成功答复。
例如,您错误地将 键入为 requesthttps://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"
表示在 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"
这里,有人于 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"
表示有人于 26/Sep/2021:20:13:33 +0000 向您的服务器请求/?XDEBUG_SESSION_START=phpstorm
。与前两个请求不同,此请求已成功答复,您的服务器发送了代码 200(表示“OK”)。
收到这样的请求本身并不一定是个问题。攻击者使用自动化系统扫描互联网的大部分内容以查找可能的漏洞。例如,由于 WordPress 非常普及,此类系统会尝试访问他们能接触到的任何服务器上的内部 WordPress 路径 - 无论该服务器是否曾见过 WordPress 安装。这就像一个潜在的窃贼沿着街道走来走去,检查每栋房子是否有打开的窗户。只要您的窗户关好,您可能就没事了。
当你的窗户不是正确关闭。因此,您仍然需要定期梳理日志,并检查是否有您实际收到的潜在问题地址的请求做在您的服务器上。