Рейтинг:1

Исправление обхода каталога для конфигурации nginx

флаг in

Я обнаружил, что на моем веб-сайте есть эта проблема, и я не смог ее исправить. Я попробовал несколько вещей, например, проверить, заканчиваются ли родительские префиксы для директив псевдонимов Nginx разделителем каталогов, но пока безуспешно. Merge_slashes on — настройка по умолчанию. Я читал об AppArmour или SELinux. Это путь? У меня Ubuntu 18. Другими словами, я могу скачать этот файл http://example.com///etc/passwd и я хочу избежать этого. Любая помощь приветствуется. Вот моя конфигурация:

         сервер {
  слушать 80;
  имя сервера
    .example.com;

 вернуть 301 https://example.com$request_uri;
}

сервер {

имя сервера
  www.example.com;
    слушать 443 ssl http2;
    ssl_prefer_server_ciphers включен;
    ssl_session_cache общий: SSL: 10 м;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers '......
    ssl_certificate /...crt;
    ssl_certificate_key /..ключ;

    вернуть 301 https://example.com$request_uri;
}
сервер {

имя сервера
  пример.com;
    слушать 443 ssl http2;
    ssl_prefer_server_ciphers включен;
    ssl_session_cache общий: SSL: 10 м;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers '...
    ssl_certificate /...crt;
    ssl_certificate_key /.....ключ;

    add_header x-frame-options «SAMEORIGIN» всегда;
    add_header x-xss-protection "1; режим=блокировка" всегда;
    add_header X-Content-Type-Options nosniff;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; $

    корень /var/www/www.example.com;
    индекс index.php;

  client_max_body_size 10M;
  журнал_доступа /var/log/nginx/example.com.log;
  error_log /var/log/nginx/example.com.error.log ошибка;

место расположения / {
    try_files $uri $uri//index.php;
}

местоположение /магазины/ {
        индекс index.php index.html index.htm;
        переписать ^/shop/wp-json/(.*?)$ /shopping/index.php?rest_route=/$1 последним;
        try_files $uri $uri/ /shop/index.php?q=$uri&$args;
}
расположение ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        истекает через 24 часа;
        log_not_found выключен;
}

    расположение ~ \.php$ {
    try_files $uri = 404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    включить fastcgi_params;

 }
расположение ~\.(журнал|сохранить|htaccess|json|csv|txt|xls)$ {
     отрицать все;
     error_page 403 =404 / ;
 }
    location ~* /(?:uploads|файлы)/.*\.php$ {
        отрицать все;
}
флаг jp
Ваша проблема в вашем PHP-приложении, а не в `nginx`.
Greg avatar
флаг in
Не могли бы вы уточнить? Это будет высоко оценено!
флаг jp
Запрос к `//etc/passwd` будет соответствовать `location '/'`, и если у вас нет файла `/var/www/www.example.com/etc/passwd`, он будет обработан `index.php` через `fastcgi_pass`.
флаг cn
SELinux предназначен для предотвращения именно этого в системах RHEL. Я не так хорошо знаком с AppArmor. По сути, SELinux позволяет процессу получать доступ только к тем вещам, которые соответствуют его контексту. Это смягчило бы эту проблему, но @AlexD прав - проблема связана с приложением PHP.
Greg avatar
флаг in
По какой-то загадочной причине некоторые каталоги были скопированы в корень веб-сайта, что привело к этому /var/www/ www.example.com/etc/passwd Плохо, что я не обнаружил этого раньше!
djdomi avatar
флаг za
если вы решили свою проблему, пожалуйста, добавьте ответ и примите его позже, иначе нас запомнят до тех пор, пока на нем не появится вселенная.
Рейтинг:0
флаг in

В конфигурации nginx не было ничего плохого. Какой-то разработчик таинственным образом создал копию /ect/пароль в /var/www/www.example.com/etc/passwd Вот почему я мог просмотреть/загрузить его, и поэтому мой PCI-сканер не работал. Извините, что отнял ваше время!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.