您好,登錄后才能下訂單哦!
本篇內容介紹了“nginx host繞過的三種方式是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
CentOS7
Nginx1.23.3
MySQL8.0.32
PHP5.4.16
在一個LNMP架構下的注冊頁面中存在sql注入漏洞,通過抓包修改host進行注入,但由于修改了host,nginx無法正確處理此請求,以默認服務器處理,返回404,注入失敗。
由于Nginx在處理Host的時候,會將Host用冒號分割成hostname和port,port部分被丟棄。所以,我們可以設置Host的值為2023.mmrrj.com:aaa'"2023.mmrrj.com
,這樣就能訪問到目標Server塊。
可以看到已經觸發了注入報錯
Nginx與PHP-FPM對Host的處理不同,當我們傳入兩個Host頭的時候,Nginx將以第一個為準,而PHP-FPM將以第二個為準。
也就是說,如果我傳入:
Host: 2023.mmrrj.com Host: aaa'"@2023.mmrrj.com
Nginx將認為Host為2023.mmrrj.com
,并交給目標Server塊處理;但PHP中使用$_SERVER['HTTP_HOST']
取到的值卻是aaa'"@mmrrj.com
。這樣也可以繞過。
但很遺憾,在高版本的Nginx中已經修復了該漏洞,一旦識別到兩個Host,就會返回400錯誤(Bad Request)
如果遇到較低版本的nginx還是可以嘗試一下的
這個方法相對更高級,需要nginx支持SNI,網站也必須配置HTTPS。
SNI是用來解決一個服務器擁有多個域名的問題,在HTTPS握手時提供Host,而無需請求頭中的Host。
直接發送必然是404錯誤。
點擊右上角的鉛筆圖標,勾選“Use HTTPS”
確定后再次發送請求
sql注入報錯就又出現了,說明繞過成功。
“nginx host繞過的三種方式是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。