Puncte:1

Remediere de traversare a directorului pentru configurația nginx

drapel in

Am descoperit că site-ul meu are această problemă și nu am reușit să o rezolv. Am încercat mai multe lucruri, cum ar fi să verific dacă locațiile prefixate părinte pentru directivele alias Nginx se termină cu un separator de director, dar nu am avut noroc până acum. Merge_slashes on - este setarea implicită. Am citit despre AppArmour sau SELinux. Asta e calea de urmat? Am Ubuntu 18. Cu alte cuvinte, pot descărca acest fișier http://example.com///etc/passwd și vreau să evit asta. Orice ajutor este apreciat. Iată configurația mea:

         Server {
  asculta 80;
  numele serverului
    .example.com;

 returnează 301 https://example.com$request_uri;
}

Server {

numele serverului
  www.example.com;
    asculta 443 ssl http2;
    ssl_prefer_server_ciphers Activat;
    ssl_session_cache shared:SSL:10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers '......
    ssl_certificat /...crt;
    cheie_certificat_ssl /..key;

    returnează 301 https://example.com$request_uri;
}
Server {

numele serverului
  exemplu.com;
    asculta 443 ssl http2;
    ssl_prefer_server_ciphers Activat;
    ssl_session_cache shared:SSL:10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers '...
    ssl_certificat /...crt;
    cheie_certificat_ssl /.....cheie;

    add_header x-frame-options „SAMEORIGIN” întotdeauna;
    add_header x-xss-protection "1; mod=bloc" întotdeauna;
    add_header X-Content-Type-Options nosniff;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; $

    root /var/www/www.example.com;
    index index.php;

  client_max_body_size 10M;
  access_log /var/log/nginx/example.com.log;
  error_log /var/log/nginx/example.com.error.log eroare;

Locație / {
    try_files $uri $uri/ /index.php;
}

locație /cumpărături/ {
        index index.php index.html index.htm;
        rescrie ^/shop/wp-json/(.*?)$ /shopping/index.php?rest_route=/$1 ultimul;
        try_files $uri $uri/ /shop/index.php?q=$uri&$args;
}
locație ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expiră 24h;
        log_not_found off;
}

    locație ~ \.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;
    include fastcgi_params;

 }
locație ~\.(log|salvare|htaccess|json|csv|txt|xls)$ {
     nega totul;
     pagina_eroare 403 =404 / ;
 }
    locație ~* /(?:uploads|fișiere)/.*\.php$ {
        nega totul;
}
drapel jp
Problema dvs. este în aplicația dvs. PHP, nu în `nginx`.
Greg avatar
drapel in
Poti te rog sa detaliezi? Va fi mult apreciat!
drapel jp
Solicitarea către `//etc/passwd` se va potrivi cu `locația '/'` și, dacă nu aveți un fișier `/var/www/www.example.com/etc/passwd`, acesta va fi gestionat de `index.php` prin `fastcgi_pass`.
drapel cn
SELinux este conceput pentru a preveni exact acest lucru pe sistemele RHEL. Nu sunt la fel de familiarizat cu AppArmor. Efectiv SELinux permite doar unui proces să acceseze lucruri care se potrivesc cu contextul lor. Ar atenua această problemă, dar @AlexD are dreptate - problema este cu aplicația PHP.
Greg avatar
drapel in
Dintr-un motiv misterios, unele directoare au fost copiate în rădăcina site-ului web, provocând acest lucru /var/www/ www.example.com/etc/passwd Păcat că nu am descoperit asta mai devreme!
djdomi avatar
drapel za
în cazul în care ați rezolvat problema, vă rugăm să adăugați un răspuns și să-l acceptați mai târziu, altfel vom fi amintiți până când universul de pe el.
Puncte:0
drapel in

Nu a fost nimic în neregulă cu configurația nginx. Un dev a creat într-un mod misterios o copie a /ect/passw în /var/www/www.example.com/etc/passwd Deci, de aceea l-am putut răsfoi/descărca și de aceea scanerul meu PCI nu funcționa. Îmi pare rău că ți-am luat timpul!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.