Nginx常見的三個漏洞

目錄

$uri導致的CRLF注入漏洞

兩種常見場景

表示uri的三個變量

案例

目錄穿越漏洞

?案例

Http Header被覆蓋的問題

案例


$uri導致的CRLF注入漏洞

兩種常見場景

  1. 用戶訪問http://example.com/aabbcc,自動跳轉到https://example.com/aabbcc

  2. 用戶訪問http://example.com/aabbcc,自動跳轉到http://www.example.com/aabbcc

第二個場景主要是為了統一用戶訪問的域名,更加有益于SEO優化 ?

在跳轉的過程中,我們需要保證用戶訪問的頁面不變,所以需要從Nginx獲取用戶請求的文件路徑

表示uri的三個變量

  1. $uri

  2. $document_uri

  3. $request_uri

1和2表示的是解碼以后的請求路徑,不帶參數;3表示的是完整的URI(沒有解碼) ?

案例

????????如果運維配置了下列的代碼

location / {return 302 https://$host$uri;
}

?

解析:

????????因為$uri是解碼以后的請求路徑,所以可能就會包含換行符,也就造成了一個CRLF注入漏洞(換行符注入)

????????這個CRLF注入漏洞可以導致會話固定漏洞、設置Cookie引發的CSRF漏洞或者XSS漏洞。其中,我們通過注入兩個\r\n即可控制HTTP體進行XSS,但因為瀏覽器認為這是一個301跳轉,所以并不會顯示我們注入的內容

????????當我們正常訪問http://192.168.149.128:8080/時,nginx重定向后,會在http響應頭中出現Location字段

?????????當我們正常訪問http://192.168.149.128:8080/%0d%0atest=123?時會出現下一行中出現test=123

解析:

????????%0d%0a ---- \r\n,也就是換行符,所以在url中加入一個換行符即可將惡意數據寫入http響應頭

????????同理加兩個換行符可以將數據寫入響應體,就像訪問http://192.168.119.131:8080/%0d%0a%0d%0a<script>alert(1)</script>,則會響應

? 如何解決

location / {return 302 https://$host$request_uri;
}

目錄穿越漏洞

????????這個常見于Nginx做反向代理的情況,動態的部分被proxy_pass傳遞給后端端口,而靜態文件需要Nginx來處理

?案例

????????假設靜態文件存儲在/home/目錄下,而該目錄在url中名字為files,那么就需要用alias設置目錄的別名http://192.168.149.128:8081/files/

設置別名

location /files/{alias /home/;
}
www.192.168.149.128/files../location /files/ {alias /home/	
}

此時,訪問 http://192.168.149.128:8081/files/help.txt,就可以獲取/home/help.txt文件

解析

? ? ? ? url上/files沒有加后綴/,而alias設置/home/有后綴/,這個/就導致我們可以從/home/目錄穿越到他的上層目錄:進而我們獲得了一個任意文件下載漏洞

Http Header被覆蓋的問題

????????眾所周知,Nginx的配置文件分為Server、Location、If等一些配置塊,并且存在包含關系,和編程語言比較類似。如果在外層配置的一些選項,是可以被繼承到內層

? ? ? ? 這里的繼承也有一些特性,比如add_header,子塊中配置后將會覆蓋父塊中的add_header添加的所有HTTP頭,造成一些安全隱患

案例

Server塊添加了CSP頭,如下代碼:

server {...add_header Content-Security-Policy "default-src 'self'";add_header X-Frame-Options DENY;location = /test1 {rewrite ^(.*)$ /xss.html break;}location = /test2 {add_header X-Content-Type-Options nosniff;rewrite ^(.*)$ /xss.html break;}
}

但/test2的location中又添加了X-Content-Type-Options頭,導致父塊中的add_header全部失效

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40770.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[英語單詞] compat; compatibility;compact;entry_SYSENTER_compat

簡介 這個詞compat&#xff0c;馬上就會被簡寫形式所替代。所以一定不要和compact混淆。第一次看到還以為是個新詞來&#xff0c;后來發現是一個縮寫形式。就是兼容的意思&#xff0c;就如同兼容以往的就有事物。 syscall: 32bit: 兼容 entry_SYSENTER_compat 這個是32位程序…

MySQL存儲過程 、存儲函數、以及優缺點

存儲過程 VS 存儲函數&#xff08;函數&#xff09; | | 關鍵字 |調用語法 | 返回值 | 應用場景 | |-存儲過程-|-procedure-|-call 存儲過程()-|-理解為0個或多個-|-一般用于更新-| | 存儲函數 | function | select 函數() | 只能是一個 | 一般用于查詢結構為一個值并返回時| …

三、python Django ORM postgresql[數據定時備份、數據恢復]

一、數據定時備份 解釋&#xff1a;備份指定數據庫&#xff0c;能有效在發生錯誤時&#xff0c;預防錯誤&#xff0c;進行恢復 1.基本備份 #!/bin/bash sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup.dump # sudo -u postgres&…

訊飛星火、文心一言和通義千問同時編“貪吃蛇”游戲,誰會勝出?

同時向訊飛星火、文心一言和通義千問三個國產AI模型提個相同的問題&#xff1a; “python 寫一個貪吃蛇的游戲代碼” 看哪一家AI寫的程序直接能用&#xff0c;誰就勝出&#xff01; 訊飛星火 訊飛星火給出的代碼&#xff1a; import pygame import sys import random# 初…

Android 13 開啟關閉飛行模式

一.背景 由于客戶定制的Settings里面需要開啟和關閉飛行模式,所以需要實現此功能。 二.前提條件 首先應用肯定要是系統應用,并且導入framework.jar包,具體可以參考: Android 應用自動開啟輔助(無障礙)功能并使用輔助(無障礙)功能_android 自動開啟無障礙服務_龔禮鵬的博客…

步入React正殿 - React組件設計模式

目錄 擴展學習資料 高階組件 /src/components/hoc/withTooltip.js /src/components/hoc/itemA.jsx /src/components/hoc/itemB.jsx /src/App.js 函數作為子組件【Render pprops】 函數作為子組件 /src/components/rp/itemC.jsx【父組件】 /src/components/rp/withToo…

C#調用C++ DLL傳參byte[]數組字節值大于127時會變為0x3f的問題解決

最近做了一個網絡編程的DLL給C#調用&#xff0c;DLL中封裝了一個TCP Client的函數接口&#xff0c;如下所示 //C TCP報文發送接口 int TcpClient_send(unsigned char* buffSend, unsigned int nLen) {unsigned char buff[1024];int len StringToHex(buffSend, buff);int nRet…

stable diffusion安裝包和超火使用文檔,數字人制作網址

一&#xff1a;文生圖、圖生圖 1&#xff1a;stable diffusion&#xff1a;對喜歡二次元、美女小姐姐、大眼萌妹的人及其友好哈哈(o^^o) 1&#xff09;&#xff1a;秋葉大神安裝包和模型包&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/11_kguofh76gwhTBPUipepw 提…

機器學習 | Python實現GBDT梯度提升樹模型設計

機器學習 | Python實現GBDT梯度提升樹模型設計 目錄 機器學習 | Python實現GBDT梯度提升樹模型設計基本介紹模型描述模型使用參考資料基本介紹 機器學習 | Python實現GBDT梯度提升樹模型設計。梯度提升樹(Grandient Boosting)是提升樹(Boosting Tree)的一種改進算法,GBDT也…

Java System.arraycopy() 對比 C++ memcpy()

System.arraycopy() java.lang.System類為標準輸入和輸出、加載文件和庫或訪問外部定義的屬性提供了有用的方法。 java.lang.System.arraycopy&#xff08;&#xff09;方法將源數組從特定的起始位置復制到上述位置的目標數組。要復制的參數的數量由一個參數決定。 source_Pos…

前端文件下載通用方法

zip文件和xlsx文件 import axios from axios import { getToken } from /utils/authconst mimeMap {xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,zip: application/zip }const baseUrl process.env.VUE_APP_BASE_API // zip下載 export functi…

214、仿真-基于51單片機溫度甲醛一氧化碳(co)電機凈化報警Proteus仿真設計(程序+Proteus仿真+配套資料等)

畢設幫助、開題指導、技術解答(有償)見文未 目錄 一、硬件設計 二、設計功能 三、Proteus仿真圖 四、程序源碼 資料包括&#xff1a; 需要完整的資料可以點擊下面的名片加下我&#xff0c;找我要資源壓縮包的百度網盤下載地址及提取碼。 方案選擇 單片機的選擇 方案一&a…

It‘s likely that neither a Result Type nor a Result Map was specified.

問題&#xff1a; org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were 原因&#xff1a; 由于傳遞參數給 mapper 映射文件&#xff0c;所以必須要指定參數數據格式 如…

Qt+Pyhton實現麒麟V10系統下word文檔讀寫功能

目錄 前言1.C調用python1.1 安裝Python開發環境1.2 修改Qt工程配置1.3 初始化Python環境1.4 C 調用Python 函數1.5 常用的Python接口 2.python虛擬環境2.1Python虛擬環境簡介2.2 virtualenv 安裝及使用2.3 在C程序中配置virtualenv 虛擬環境 3.python-docx庫的應用4.總結 前言 …

神經網絡基礎-神經網絡補充概念-23-神經網絡的梯度下降法

概念 神經網絡的梯度下降法是訓練神經網絡的核心優化算法之一。它通過調整神經網絡的權重和偏差&#xff0c;以最小化損失函數&#xff0c;從而使神經網絡能夠逐漸逼近目標函數的最優值。 步驟 1損失函數&#xff08;Loss Function&#xff09;&#xff1a; 首先&#xff0c…

Springboot多路數據源

1、多路數據源配置 &#xff08;1&#xff09;SpringBootMyBatis-PlusOracle實現多數據源配置 https://blog.csdn.net/weixin_44812604/article/details/127386828 &#xff08;2&#xff09;SpringBootMybatis搭建Oracle多數據源配置簡述 https://blog.csdn.net/HJW_233/arti…

網絡安全 Day29-運維安全項目-iptables防火墻

iptables防火墻 1. 防火墻概述2. 防火墻2.1 防火墻種類及使用說明2.2 必須熟悉的名詞2.3 iptables 執行過程※※※※※2.4 表與鏈※※※※※2.4.1 簡介2.4.2 每個表說明2.4.2.1 filter表 :star::star::star::star::star:2.4.2.2 nat表 2.5 環境準備及命令2.6 案例01&#xff1a…

神經網絡基礎-神經網絡補充概念-31-參數與超參數

概念 參數&#xff08;Parameters&#xff09;&#xff1a; 參數是模型內部學習的變量&#xff0c;它們通過訓練過程自動調整以最小化損失函數。在神經網絡中&#xff0c;參數通常是連接權重&#xff08;weights&#xff09;和偏置&#xff08;biases&#xff09;&#xff0c;…

ChatGLM2-6B安裝部署(詳盡版)

1、環境部署 安裝Anaconda3 安裝GIT 安裝GUDA 11.8 安裝NVIDIA 圖形化驅動 522.25版本&#xff0c;如果電腦本身是更高版本則不用更新 1.1、檢查CUDA 運行cmd或者Anaconda&#xff0c;運行以下命令 nvidia-smi CUDA Version是版本信息&#xff0c;Dricer Version是圖形化…

LeetCode 160.相交鏈表

文章目錄 &#x1f4a1;題目分析&#x1f4a1;解題思路&#x1f6a9;步驟一&#xff1a;找尾節點&#x1f6a9;步驟二&#xff1a;判斷尾節點是否相等&#x1f6a9;步驟三&#xff1a;找交點&#x1f344;思路1&#x1f344;思路2 &#x1f514;接口源碼 題目鏈接&#x1f449;…