nginx?host繞過的三種方式
實(shí)驗(yàn)環(huán)境
- CentOS7
- Nginx1.23.3
- MySQL8.0.32
- PHP5.4.16
實(shí)驗(yàn)背景
在一個(gè)LNMP架構(gòu)下的注冊(cè)頁(yè)面中存在sql注入漏洞,通過抓包修改host進(jìn)行注入,但由于修改了host,nginx無(wú)法正確處理此請(qǐng)求,以默認(rèn)服務(wù)器處理,返回404,注入失敗。

繞過方式1
由于Nginx在處理Host的時(shí)候,會(huì)將Host用冒號(hào)分割成hostname和port,port部分被丟棄。所以,我們可以設(shè)置Host的值為2023.mmrrj.com:aaa'"2023.mmrrj.com,這樣就能訪問到目標(biāo)Server塊。

可以看到已經(jīng)觸發(fā)了注入報(bào)錯(cuò)
繞過方式2(高版本失效)
Nginx與PHP-FPM對(duì)Host的處理不同,當(dāng)我們傳入兩個(gè)Host頭的時(shí)候,Nginx將以第一個(gè)為準(zhǔn),而PHP-FPM將以第二個(gè)為準(zhǔn)。
也就是說,如果我傳入:
Host: 2023.mmrrj.com Host: aaa'"@2023.mmrrj.com
Nginx將認(rèn)為Host為2023.mmrrj.com,并交給目標(biāo)Server塊處理;但PHP中使用$_SERVER['HTTP_HOST']取到的值卻是aaa'"@mmrrj.com。這樣也可以繞過。
但很遺憾,在高版本的Nginx中已經(jīng)修復(fù)了該漏洞,一旦識(shí)別到兩個(gè)Host,就會(huì)返回400錯(cuò)誤(Bad Request)

如果遇到較低版本的nginx還是可以嘗試一下的
繞過方法3
這個(gè)方法相對(duì)更高級(jí),需要nginx支持SNI,網(wǎng)站也必須配置HTTPS。
SNI是用來(lái)解決一個(gè)服務(wù)器擁有多個(gè)域名的問題,在HTTPS握手時(shí)提供Host,而無(wú)需請(qǐng)求頭中的Host。
直接發(fā)送必然是404錯(cuò)誤。

點(diǎn)擊右上角的鉛筆圖標(biāo),勾選“Use HTTPS”

確定后再次發(fā)送請(qǐng)求

sql注入報(bào)錯(cuò)就又出現(xiàn)了,說明繞過成功。
到此這篇關(guān)于nginx host繞過的三種方式的文章就介紹到這了,更多相關(guān)nginx host繞過內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解nginx的請(qǐng)求限制(連接限制和請(qǐng)求限制)
這篇文章主要介紹了詳解nginx的請(qǐng)求限制(連接限制和請(qǐng)求限制),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-07-07
nginx做代理時(shí)如何修改querystring方法詳解
這篇文章主要介紹了nginx做代理時(shí)如何修改querystring的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
在nginx中實(shí)現(xiàn)單位時(shí)間內(nèi)限制訪問頻率的教程
這篇文章主要介紹了在nginx中實(shí)現(xiàn)單位時(shí)間內(nèi)限制訪問頻率的教程,并非針對(duì)IP而是全局的訪問量限制,需要的朋友可以參考下2015-04-04

