政府采購網(wǎng)上商城網(wǎng)站成都專門做網(wǎng)站的公司
1.Nginx環(huán)境搭建
選擇centos7來進行安裝
1.1 創(chuàng)建Nginx
的目錄并進入
mkdir /soft && mkdir /soft/nginx/
cd /soft/nginx/
1.2 下載Nginx的安裝包,可以通過FTP
工具上傳離線環(huán)境包,或者通過wget
命令在線獲取安裝包
wget https://nginx.org/download/nginx-1.21.6.tar.gz
1.3 解壓Nginx
的壓縮包
tar -xvzf nginx-1.21.6.tar.gz
1.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
通過rpm
命令安裝所有依賴包
rpm -ivh --nodeps *.rpm
1.5?進入解壓后的nginx
目錄,安裝其他依賴庫,然后執(zhí)行Nginx
的配置腳本,為后續(xù)的安裝提前配置好環(huán)境
cd nginx-1.21.6
yum install pcre-devel
yum install zlib-devel
./configure --prefix=/soft/nginx/
1.6?編譯并安裝Nginx
make && make install
1.7?修改安裝后生成的conf
目錄下的nginx.conf
配置文件
1.8?制定配置文件并啟動Nginx
?
sbin/nginx -c conf/nginx.conf
2.docker環(huán)境搭建
2.1?安裝docker
Debian:
apt-get update
apt-get install docker.io
Redhat:
yum install docker.io
2.2 下載并解壓docker環(huán)境Nginx配置漏洞安裝包
unzip vulhub-master.zip
cd /root/vulhub-master/nginx/insecure-configuration
docker-compose up -d
注:沒有docker-compose命令,新版本的docker自帶compose,沒有的可以apt或者yum下載
apt-get install docker-compose
可能會報與官方鏡像源連接超時的問題
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
? "registry-mirrors": ["https://t6mxxtn9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安裝好之后,用docker ps -a查看容器運行情況
root@localhost:~/vulhub-master/nginx/insecure-configuration# docker ps -a
CONTAINER ID ? IMAGE ? ? ? ? ? ?COMMAND ? ? ? ? ? ? ? ? ?CREATED ? ? ? ? ?STATUS ? ? ? ? ?PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES
797f6975a01e ? vulhub/nginx:1 ? "nginx -g 'daemon of…" ? 59 minutes ago ? Up 59 minutes ? 80/tcp, 0.0.0.0:8080-8082->8080-8082/tcp, :::8080-8082->8080-8082/tcp ? insecure-configuration_nginx_1
3.復現(xiàn)過程
3.1?CRLF注入漏洞
location / {
? ? return 302 https://$host$uri;
}
原本是為了讓http的請求跳轉到https上,但是$uri參數(shù)是不包含查詢參數(shù)的,于是當我們在url中輸入%0d%0a時,$uri參數(shù)不會將回車換行符傳入,這就導致用戶可以控制http響應頭部
訪問http://ip:8080,使用bp抓包,構造反射性xss
%0d%0a%0d%0a<img src=1 οnerrοr=alert(1)>
修復方法:把$url改為$request-uri,這個參數(shù)會傳入完整的原始url請求?
3.2?目錄穿越?
location /files {
? ? ? ? alias /home/;
? ? }
目的是想用戶輸入/files會跳轉到/home目錄下,但是/files并沒有以"/"結尾,所以輸入/files../,此時/files匹配上了,替換為/home/..,造成目錄穿越
?修復方法:將/files改成/files/
3.3?add_header覆蓋
? ? add_header Content-Security-Policy "default-src 'self'";
? ? #這個頭部用于配置瀏覽器加載和執(zhí)行內容的安全策略。在這里,設置為 "default-src 'self'" 表示只 ? ? ? ?
? ? #允許從同源(即當前域名)加載內容,其他來源的內容被禁止加載。
? ? add_header X-Frame-Options DENY;
? ? #防止頁面被嵌入到 <frame>、<iframe> 或其他框架中。設置為 DENY 表示不允許任何形式的嵌入。
? ? ? ? location = /test1 {
? ? ? ? ? ? ? ? rewrite ^(.*)$ /xss.html break;
? ? ? ? }
?
? ? location = /test2 {
? ? ? ? add_header X-Content-Type-Options nosniff;
? ? ? ? #該頭部防止瀏覽器嘗試嗅探未知 MIME 類型的響應內容
? ? ? ? rewrite ^(.*)$ /xss.html break;
? ? }
在子塊中再添加一個參數(shù),結果覆蓋父塊,導致父塊參數(shù)全部失效。bp抓包發(fā)現(xiàn)父塊添加的參數(shù)消失,只有子塊里的參數(shù)
?修復方法:刪除子塊中的add_header參數(shù),或者添加到父塊中?
?