天天看點

淺談nginx

    以nginx為例子,nginx現在企業都用,測試版本1.12.0

   example1:

    nginx.conf:

location /flag/ {
        deny all;
        return 403;
    }
    location /baidu/ {
        proxy_pass http://baidu.com;
    }
    
    location /qq {
        proxy_pass http://qq.com;
    }      

  重新開機生效:

  測試通路:

  http://119.45.227.86:8080/flag/

  

淺談nginx

 直接403攔截:

  輸入不存在目錄:

淺談nginx

  仍然顯示攔截,遇到這種情況,最好的解決方法就是不要遞歸爆破這個目錄了,大機率無用功,不要浪費時間在這裡.

  想要通路目錄,需要代理轉發到tomcat容器,那麼可以使用..;/

  例如這樣:

淺談nginx

  example2:

    

location /baidu/ {
        proxy_pass http://baidu.com;
    }
    
    location /qq {
                proxy_pass http://qq.com;
        }
    
    location /flag/read {
        proxy_pass http://119.45.227.86/readfile/test2.php;
    }      

  通路http://119.45.227.86:8080/flag/

  

淺談nginx

通路不存在的目錄:

淺談nginx

 這種情況就值得目錄爆破,目錄爆破極有可能存在東西:

淺談nginx

  假設已經被入侵,存在某個漏洞,但是暫時無法從代碼層修複,那麼需要緩解措施?

  緩解措施兩個保證(1)保證部分使用者能通路 (2)杜絕外部ip通路

  修改nginx.conf:

location /baidu/ {
        proxy_pass http://baidu.com;
    }
    
    location /qq {
                proxy_pass http://qq.com;
        }
    
    location /flag/read {
        proxy_pass http://119.45.227.86/readfile/test2.php;
        allow 外部信任ip;
        deny all;
    }       

  burp挂上外部代理通路:

淺談nginx
淺談nginx

使用信任ip通路,取消外部代理:  

淺談nginx
淺談nginx

 被信任的ip被通路到

  怎麼判斷是否是nginx:

  (1)安裝插件:

淺談nginx

  (2)通過http請求辨別符:

   

淺談nginx

   (3)全部隐藏了怎麼辦?

  通過網頁跳轉等手段:

  nginx大多數基于正規表達式:

  example:

location /baidu/ {
        proxy_pass http://baidu.com;
    }
    
    location /qq {
                proxy_pass http://qq.com;
        }
    
    location /flag/read {
        proxy_pass http://119.45.227.86/readfile/test2.php;
        allow 222.72.216.6;
        deny all;
    }          

  通路/qq:

淺談nginx

   qq後面跟任意字元串:

  如果仍然可以跳轉,說明是nginx,因為他基于規則比對到了qq,是以跳轉到了qq.com

淺談nginx

  其實nginx限制的手段有很多,有基于ip的,也有基于浏覽器的,需要額外關注,本人簡單記錄下,挺有意思的呵呵,對極端漏洞挖掘情況下,nginx的防護繞過,是有可行性的,有機會聊聊實戰案例

  參考文章:https://www.acunetix.com/blog/articles/a-fresh-look-on-reverse-proxy-related-attacks/

 

   

繼續閱讀