目錄
一、nginx環境搭建
1.1搭建步驟
?二、docker復現Nginx配置漏洞
?2.1安裝docker
?2.2復現過程
2.1CRLF(carriage return/line feed)注入漏洞
?2.2.目錄穿越
一、nginx環境搭建
1.1搭建步驟
1.先創建Nginx
的目錄并進入(命令如下)
mkdir /soft && mkdir /soft/nginx/
cd /soft/nginx/
2.下載Nginx
的安裝包,可以通過FTP
工具上傳離線環境包,也可通過wget
命令在線獲取安裝包:(命令如下)
wget https://nginx.org/download/nginx-1.21.6.tar.gz
3.解壓Nginx
的壓縮包:(命令如下)
tar -xvzf nginx-1.21.6.tar.gz
4.下載并安裝Nginx
所需的依賴庫和包:(命令如下)
yum install --downloadonly --downloaddir=/soft/nginx/ gcc-c++
yum install --downloadonly --downloaddir=/soft/nginx/ pcre pcre-devel4
yum install --downloadonly --downloaddir=/soft/nginx/ zlib zlib-devel
yum install --downloadonly --downloaddir=/soft/nginx/ openssl openssl-devel
??
?5.通過rpm
命令安裝所有依賴包:
rpm -ivh --nodeps *.rpm
??
?6.進入解壓后的nginx
目錄,安裝其他依賴庫,然后執行Nginx
的配置腳本,為后續的安裝提前配置好環境,默認位于/usr/local/nginx/
目錄下(可自定義目錄):
cd nginx-1.21.6
yum install pcre-devel
yum install zlib-devel
./configure --prefix=/soft/nginx/
?7.編譯并安裝Nginx
:
make && make install
8.修改安裝后生成的conf
目錄下的nginx.conf
配置文件:(使用vim命令編輯)
server_name改成自己的ip???
?二、docker復現Nginx配置漏洞
?2.1安裝docker
?1.這里以centos7為例
先更新一下?yum 包(這個命令不是必須執行的,看個人情況,后面出現不兼容的情況的話就必須update了)
注意?
yum -y update:升級所有包同時也升級軟件和系統內核;?
yum -y upgrade:只升級所有包,不升級軟件和系統內核
2.安裝需要的軟件包, yum-util 提供yum-config-manager功能,另兩個是devicemapper驅動依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
3.設置 yum 源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央倉庫)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里倉庫)
4.選擇docker版本并安裝
(1)查看可用版本有哪些
yum list docker-ce --showduplicates | sort -r
(2)選擇一個版本并安裝即可:yum install docker-ce-版本號
?2.2復現過程
2.1CRLF(carriage return/line feed)注入漏洞
這個漏洞產生的原因是請求重定向的錯誤配置,導致在url中輸入回車換行符可以控制http響應頭部
比如:
location / {return 302 https://$host$uri;
}
原本的目的是為了讓http的請求跳轉到https上,但是$uri參數是不包含查詢參數的,于是當我們在url中輸入%0d%0a時,$uri參數不會將回車換行符傳入,這就導致用戶可以控制http響應頭部訪問http://ip:8080,使用bp抓包,構造反射性xss
%0d%0a%0d%0a<img src=1 onerror=alert(1)>
?
?修復方法:把$url改為$request-uri,這個參數會傳入完整的原始url請求,也就是說用戶輸入的所有內容都會被當做參數傳入Location字段
?
?2.2.目錄穿越
?這個漏洞產生的原因是alias別名配置錯誤,導致在url中拼接目錄獲取敏感數據
location /files {alias /home/;}
?原本的目的是想用戶輸入/files會跳轉到/home目錄下,但是/files并沒有以"/"結尾,所以我們可以輸入/files../,此時/files匹配上了,替換為/home/..,造成目錄穿越
?修復方法:將/files改為/files/,這樣就算輸入/files../也不會匹配上/files/
?再次嘗試訪問就不會出現上面的情況
?