nginx CRLF(換行回車)注入漏洞復現


nginx CRLF(換行回車)注入漏洞復現

一、漏洞描述

CRLF是”回車+換行”(\r\n)的簡稱,其十六進制編碼分別為0x0d和0x0a。在HTTP協議中,HTTP header與HTTP Body是用兩個CRLF分隔的,瀏覽器就是根據這兩個CRLF來取出HTTP內容並顯示出來。所以,一旦我們能夠控制HTTP消息頭中的字符,注入一些惡意的換行,這樣我們就能注入一些會話Cookie或者HTML代碼。CRLF漏洞常出現在Location與Set-cookie消息頭中。

二、漏洞原理

1、 修改nginx.conf,在如下圖位置添加如下配置,此配置實現了強制跳轉的功能,當用戶訪問nginx服務器時由於此配置的存在會被強制跳轉到以https協議訪問之前訪問的鏈接。

  

2、上面的配置的關鍵利用點由兩個:一是配置中的$url是我們可以控制的,這樣我們就可以在$url處填入CRLF,然后對服務器進行訪問實現頭部注入。二是服務器會返回一個302跳轉給用戶,所以我們注入的頭部參數又會返回到客戶這邊。

三、漏洞環境搭建和復現

1、 在ubuntu 16.04安裝nginx

1.1安裝nginx依賴庫

1.1.1安裝gcc g++的依賴庫

ubuntu平台可以使用如下命令:

apt-get install build-essential

apt-get install libtool

1.1.2安裝pcre依賴庫

apt-get install libpcre3 libpcre3-dev

1.1.3安裝zlib依賴庫

apt-get install zlib1g-dev

1.1.4安裝ssl依賴庫

apt-get install openssl

1.2安裝nginx

#下載最新版本:

wget http://nginx.org/download/nginx-1.11.3.tar.gz

#解壓:

tar -zxvf nginx-1.11.3.tar.gz

#進入解壓目錄:

cd nginx-1.11.3

#配置:

./configure --prefix=/usr/local/nginx

#編輯nginx:

Make

#安裝nginx:

make install

#啟動nginx:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

1.3瀏覽器訪問,測試nginx是否搭建成功

  

2、 修改/usr/local/nginx/conf/nginx.conf,在如下圖位置添加如下內容:

  

3、重啟nginx服務

./sbin/nginx -s reload

  

3、重啟nginx服務

./sbin/nginx -s reload

  

4、瀏覽器訪問http://192.168.10.137/,然后抓包,修改數據包,如下圖所示,成功實現了CRLF頭部注入

  

四、漏洞防御

1、刪除配置不當的配置

 

--------------------------------------------------------------------------------------------

參考資料: https://blog.csdn.net/liuhuaijin/article/details/77449579


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM