Score:1

การแก้ไขการแวะผ่านไดเรกทอรีสำหรับการกำหนดค่า nginx

ธง in

ฉันพบว่าเว็บไซต์ของฉันมีปัญหานี้และฉันไม่สามารถแก้ไขได้ ฉันลองหลายสิ่งหลายอย่าง เช่น ตรวจสอบว่าตำแหน่งนำหน้าพาเรนต์สำหรับคำสั่งนามแฝงของ Nginx ลงท้ายด้วยตัวคั่นไดเร็กทอรีหรือไม่ แต่ก็ยังไม่มีโชค Merge_slashes เปิด - เป็นการตั้งค่าเริ่มต้น ฉันได้อ่านเกี่ยวกับ 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:10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers '......
    ssl_certificate /...crt;
    ssl_certificate_key /..key;

    ส่งคืน 301 https://example.com$request_uri;
}
เซิร์ฟเวอร์ {

ชื่อเซิร์ฟเวอร์
  ตัวอย่าง.com;
    ฟัง 443 ssl http2;
    ssl_prefer_server_ciphers เปิด;
    ssl_session_cache ที่ใช้ร่วมกัน: SSL:10m;
    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; mode=block" เสมอ;
    add_header X-Content-Type-Options nosniff;
    add_header เข้มงวดการขนส่งความปลอดภัย "อายุสูงสุด = 63072000; includeSubdomains; $

    รูท /var/www/www.example.com;
    ดัชนี index.php;

  client_max_body_size 10M;
  access_log /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 ยูนิกซ์:/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 / ;
 }
    ตำแหน่ง ~* /(?:uploads|files)/.*\.php$ {
        ปฏิเสธทั้งหมด
}
jp flag
ปัญหาของคุณอยู่ในแอปพลิเคชัน PHP ไม่ใช่ใน `nginx`
Greg avatar
in flag
คุณช่วยอธิบายเพิ่มเติมได้ไหม จะได้รับการชื่นชมมาก!
jp flag
คำขอ `//etc/passwd` จะตรงกับ `ตำแหน่ง '/'` และถ้าคุณไม่มีไฟล์ `/var/www/www.example.com/etc/passwd` จะถูกจัดการโดย `index.php` ผ่าน `fastcgi_pass`
cn flag
SELinux ได้รับการออกแบบมาเพื่อป้องกันสิ่งนี้ในระบบ RHEL ฉันไม่คุ้นเคยกับ AppArmor SELinux อย่างมีประสิทธิภาพอนุญาตให้กระบวนการเข้าถึงสิ่งที่ตรงกับบริบทเท่านั้น มันจะบรรเทาปัญหานี้ แต่ @AlexD นั้นถูกต้อง - ปัญหาอยู่ที่แอพ PHP
Greg avatar
in flag
ด้วยเหตุผลลึกลับบางอย่าง บางไดเร็กทอรีถูกคัดลอกไปยังรูทของเว็บไซต์ทำให้เกิดสิ่งนี้ /var/www/ www.example.com/etc/passwd ฉันแย่ที่ฉันไม่ได้ค้นพบสิ่งนี้ก่อนหน้านี้!
djdomi avatar
za flag
ในกรณีที่คุณแก้ไขปัญหาของคุณได้ โปรดเพิ่มคำตอบและยอมรับในภายหลัง มิฉะนั้น เราจะจดจำไปจนชั่วฟ้าดินสลาย
Score:0
ธง in

ไม่มีอะไรผิดปกติกับการกำหนดค่า nginx นักพัฒนาบางคนสร้างสำเนาของวิธีลึกลับ /ect/รหัสผ่าน เข้าไปข้างใน /var/www/www.example.com/etc/passwd นั่นเป็นเหตุผลที่ฉันสามารถเรียกดู/ดาวน์โหลดได้ และนั่นเป็นสาเหตุที่สแกนเนอร์ PCI ของฉันล้มเหลว ขอโทษที่สละเวลา!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา