收到伪造请求后的预防措施

收到伪造请求后的预防措施

今天我注意到我们的日志中存在这个错误:

PHP 消息:PHP 致命错误:require_once():无法打开所需的‘/var/www/app_path/testp3_pospr_waw_pl/some_file.php’(include_path='.:...')在/var/www/path/to/script.php 第 36 行”同时从上游读取响应标头,客户端:offending.ip.address.33,服务器:api.example.com,请求:“GET http://testp3.pospr.waw.pl/testproxy.php HTTP/1.1”,上游:“fastcgi://unix:/var/run/php5-fpm.sock:”,主机:“testp3.pospr.waw.pl”

据我理解,这意味着一个 GET 请求最终到达了我们的服务器,不是 testp3.pospr.waw.pl。因此,有人将该域名设置为(本地)解析为我们的 IP(我不确定为什么)。

该域名被列为威胁。我已经修补了试图在我们的服务器上使用该脚本的代码require。但是,就这样吗?我应该采取额外的措施吗?

更新

根据@TeroKilkanen的评论,我正在添加配置文件。正如您所看到的,没有什么特别的:

主站点:

server {
    listen 127.0.0.1:80;
    server_name example.com;
    access_log off;
    error_log /var/www/path/to/error.log;
    root /var/www/path/to/app;
    index index.php index.html index.htm;
    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

API:

server {
        listen our.ip.goes.here;
        server_name api.example.com;
        access_log off;
        error_log /var/www/path/to/error.log;
        rewrite_log on;
        root /var/www/path/to/app/api;
        location / {
                try_files $uri $uri/ =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                rewrite "/(.*)" /server.php?path=$1 break;
        }
}

答案1

您应该有一个default_server带有选项的虚拟主机,它会对所有访问返回 404。

现在,发生的情况是,当您的 IP 地址收到 HTTP 请求(其中 HTTP Host 标头包含)时testp3.pospr.waw.pl,nginx 会选择您配置中的第一个虚拟主机来处理该请求。

当你配置一个时default_server,nginx 会将所有对未知虚拟主机的请求发送到该server块。

再次,您的软件中有些东西正在使用Hostheader 的值作为目录路径,这可能很危险。您也应该修复该问题。

相关内容