最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx漏洞復(fù)現(xiàn)的問題案例解析

 更新時間:2024年01月29日 11:09:51   作者:君衍.?  
這篇文章主要介紹了Nginx解析漏洞復(fù)現(xiàn),這個漏洞其實是由php.ini中cgi.fix pathinfo選項與php-fpm的配置一起導(dǎo)致的,防范的話,只需在php-fpm配置文件中設(shè)置security.limit_extensions=.php,重啟一下服務(wù)即可,本文講解的非常詳細(xì),需要的朋友可以參考下

Nginx 解析漏洞

一、搭建環(huán)境

環(huán)境需求:ubuntu虛擬機,docker環(huán)境,vulhub-master環(huán)境

這里我使用的Linux系統(tǒng)為Ubuntu22.04版本,已經(jīng)準(zhǔn)備完畢(比如換源,安裝docker等操作)

1、通過FTP將vulhub-master.zip環(huán)境包上傳并進(jìn)行解壓

這里我已將環(huán)境包上傳至root主目錄下,下面進(jìn)行解壓:

unzip vulhub-master.zip

2、進(jìn)入vulhub-master/nginx/nginx_parsing_vulnerability此目錄下制作鏡像

cd /root/vulhub-master/nginx/nginx_parsing_vulnerability
docker-compose up -d

這里我們可能會碰見幾種報錯,實則不難,網(wǎng)上查下便知。下面我羅列一種:
如果出現(xiàn)下圖這種情況:

這里其實是因為80端口被占用,沖突了,所以我們可以查下是哪個進(jìn)程占用導(dǎo)致的:

lsof -i :80systemctl stop nginx

我們可以看到是nginx占用了80端口,所以我停止了nginx的進(jìn)程并再次查看,可以看到已經(jīng)沒有了,下面我們繼續(xù)重新啟動容器。

到這里我們的環(huán)境也已經(jīng)搭建完畢。

二、復(fù)現(xiàn)過程

1、訪問http://your-ip/uploadfiles/nginx.png

這里我們可以看到是正確顯示的。

2、訪問http://your-ip/uploadfiles/nginx.png/.php來查看效果

這里我們可以看到被解析為PHP文件了。
這里其實原本一張圖片怎么會解析為php代碼呢,按理說就比如自己上傳一張圖片然后去查看并解析為php可以試下,即如下圖所示:

這里我們可以看到是報錯了,所以我們再來看看nginx這張圖片:

這里我們很明顯看到里面添加了一句話木馬。所以這里其實是執(zhí)行了這個一句話木馬,我們可以有一個思路便是自己創(chuàng)建圖片并加入一句話木馬去執(zhí)行,然后使用蟻劍連,所以這里肯定是存在上傳漏洞的。

三、漏洞原理及防范

這里我第一個想到的便是nginx的配置文件,如下圖所示:

root@zyan-virtual-machine:/etc/nginx/conf.d# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS             PORTS                                                                      NAMES
1da527cab3cc   nginx:1   "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx_parsing_vulnerability_nginx_1
556fe6cc6fda   php:fpm   "docker-php-entrypoi…"   About an hour ago   Up About an hour   9000/tcp                                                                   nginx_parsing_vulnerability_php_1
root@zyan-virtual-machine:/etc/nginx/conf.d# docker exec -it 1da527cab3cc /bin/bash
root@1da527cab3cc:/# cd /etc/nginx/conf.d/
root@1da527cab3cc:/etc/nginx/conf.d# ll
bash: ll: command not found
root@1da527cab3cc:/etc/nginx/conf.d# cat default.conf 
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /usr/share/nginx/html;
        index index.html index.php;
        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param  REDIRECT_STATUS    200;
                fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
                fastcgi_param  DOCUMENT_ROOT /var/www/html;
                fastcgi_pass php:9000;
        }
}root@1da527cab3cc:/etc/nginx/conf.d# 

其實這里我們可以看到是沒有問題的。~是匹配任意值,同目錄在/var/www/html上,同時監(jiān)聽PHP端口在9000上。雖然說這個漏洞我知道是由于配置不當(dāng)導(dǎo)致的,但是我在這里并沒有找到配置不當(dāng)?shù)牡胤健?br />下面我想到了php-fpm,php的支持環(huán)境嘛,這里我們可以看到它的配置文件:

我們進(jìn)去配置文件里面即可看到:

這里其實就是后綴安全限制為空的意思,同時php的解析過程其實是從最后一個php開始解析的,最后一個沒有,那么就解析上一級的,如下圖:

所以說如果我們在這里最后加上.php我們就會看到這里先解析最后一個,發(fā)現(xiàn)沒有,解析上一級,就會發(fā)現(xiàn)是png,然后就一解析了,也就不會造成這一樣的漏洞。說明這個配置文件是nginx解析漏洞造成的原因之一。
當(dāng)然啦,這個配置文件默認(rèn)其實是有.php的,這個肯定是有這樣的需求。
其實還有一個原因,那就是php主配置文件中的cgi.fix_pathinfo;選項,這里我們可以從下圖看到這個選項是打開的:

cgi.fix_pathinfo 是 PHP 主配置文件中的一個選項,用于處理 FastCGI 請求中的 PATHINFO 信息。PATHINFO 是在執(zhí)行 CGI 程序時從 URL 中提取的附加路徑信息,常用于通過 URL 傳遞參數(shù)。
具體而言,cgi.fix_pathinfo 的作用是控制是否修復(fù) FastCGI 請求中的 PATH_INFO。當(dāng)設(shè)置為 1 時,表示啟用修復(fù),當(dāng)設(shè)置為 0 時,表示禁用修復(fù)。

  • 當(dāng) cgi.fix_pathinfo 啟用(設(shè)置為 1)時:
    • 如果 PHP 接收到的 FastCGI 請求中沒有 PATHINFO 信息,它會嘗試根據(jù) SCRIPTNAME 和 REQUESTURI 推斷出 PATHINFO。
    • 這種情況下可以使得像 example.com/index.php/some/path 這樣的 URL 形式能夠正常工作,即使服務(wù)器沒有實際的文件或目錄存在。
  • 當(dāng) cgi.fix_pathinfo 禁用(設(shè)置為 0)時:
    • PHP 不會嘗試修復(fù) FastCGI 請求中的 PATH_INFO。
    • 如果 PATH_INFO 不存在,它將保持為空。

禁用 cgi.fix_pathinfo 可以提高安全性,因為啟用它可能導(dǎo)致一些安全隱患,尤其是在共享主機環(huán)境中。攻擊者可能嘗試通過構(gòu)造惡意請求來利用路徑信息。
在生產(chǎn)環(huán)境中,通常建議將 cgi.fix_pathinfo 設(shè)置為 0,以降低潛在的安全風(fēng)險。確保你的應(yīng)用程序不依賴于 PATH_INFO 的自動修復(fù),并且能夠正常處理 URL 中的路徑信息。
所以,就是如果開啟,那么php解析時候,就會按照從最后到上一級一級解析。

總結(jié)一下,這個漏洞其實是由php.ini中cgi.fix pathinfo選項與php-fpm的配置一起導(dǎo)致的,防范的話,只需在php-fpm配置文件中設(shè)置security.limit_extensions=.php,重啟一下服務(wù)即可。
該漏洞與nginx、php版本無關(guān),屬于用戶配置不當(dāng)造成的解析漏洞

到此這篇關(guān)于Nginx解析漏洞復(fù)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx漏洞復(fù)現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx獲取客戶端真實IP(real_ip_header)的實現(xiàn)

    Nginx獲取客戶端真實IP(real_ip_header)的實現(xiàn)

    在使用Nginx作為反向代理時,確保獲取客戶端真實IP是關(guān)鍵,通過配置real_ip_header和set_real_ip_from,Nginx可以正確解析X-Forwarded-For頭部信息,并更新$remote_addr為客戶端真實IP,下面就來具體介紹一下
    2024-10-10
  • nginx反向代理二級域名綁定方法及注意事項

    nginx反向代理二級域名綁定方法及注意事項

    本文介紹了利用nginx實現(xiàn)多域名和多站點的綁定的方法及相關(guān)注意事項,需要的朋友可以參考下
    2018-04-04
  • 服務(wù)器nginx配置ssl并http重定向到https方式

    服務(wù)器nginx配置ssl并http重定向到https方式

    這篇文章主要介紹了服務(wù)器nginx配置ssl并http重定向到https方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • CentOS 6.7下nginx SSL證書部署的方法

    CentOS 6.7下nginx SSL證書部署的方法

    這篇文章主要介紹了在CentOS 6.7下nginx SSL證書部署的方法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Nginx優(yōu)化設(shè)計方案小結(jié)

    Nginx優(yōu)化設(shè)計方案小結(jié)

    本文主要介紹了Nginx優(yōu)化設(shè)計方案小結(jié),幫助大家在nginx的使用和優(yōu)化中提供一個參考的方向,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 配置Nginx的防盜鏈的操作方法

    配置Nginx的防盜鏈的操作方法

    這篇文章主要介紹了配置Nginx的防盜鏈的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 一句簡單命令重啟nginx

    一句簡單命令重啟nginx

    最近我的多個VPS經(jīng)常出現(xiàn)502錯誤,經(jīng)常需要重啟nginx,但網(wǎng)上的很多教程都需要繁瑣的啟動腳本,遠(yuǎn)不如apache的重啟命令那么簡單。
    2010-03-03
  • nginx日志打印請求頭信息示例詳解

    nginx日志打印請求頭信息示例詳解

    這篇文章主要介紹了nginx日志打印請求頭信息的相關(guān)資料,文章介紹了如何在Nginx中打印請求頭中的自定義字段,并解決由于下劃線導(dǎo)致的字段無法正確打印的問題,需要的朋友可以參考下
    2024-11-11
  • nginx的重定向(rewrite)問題及解讀

    nginx的重定向(rewrite)問題及解讀

    文章主要介紹了Nginx中的location匹配、優(yōu)先級及其與rewrite的區(qū)別,詳細(xì)解釋了location和rewrite的使用場景、語法、優(yōu)先級、標(biāo)志位和執(zhí)行順序等內(nèi)容,并通過示例展示了基于域名和IP地址進(jìn)行跳轉(zhuǎn)的方法
    2026-05-05
  • 小白也可以完成的0基礎(chǔ)部署Nginx服務(wù)

    小白也可以完成的0基礎(chǔ)部署Nginx服務(wù)

    這篇文章主要為大家介紹了0基礎(chǔ)部署Nginx服務(wù)的實現(xiàn)方式,非常簡單詳細(xì)零基礎(chǔ)小白跟著做也可以完成,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03

最新評論

屏南县| 育儿| 古交市| 申扎县| 兴和县| 遂昌县| 启东市| 从化市| 明水县| 奉节县| 延吉市| 大丰市| 尼木县| 米林县| 庐江县| 威信县| 巴林左旗| 松阳县| 卫辉市| 普格县| 定边县| 汝阳县| 新沂市| 寿光市| 祁阳县| 麻阳| 开化县| 马尔康县| 伊宁市| 夏邑县| 揭阳市| 延安市| 临桂县| 土默特左旗| 海城市| 邳州市| 西宁市| 客服| 桂阳县| 元氏县| 盖州市|