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è)頁面中存在sql注入漏洞,通過抓包修改host進(jìn)行注入,但由于修改了host,nginx無法正確處理此請(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是用來解決一個(gè)服務(wù)器擁有多個(gè)域名的問題,在HTTPS握手時(shí)提供Host,而無需請(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 流量控制以及訪問控制的實(shí)現(xiàn)
這篇文章主要介紹了nginx 流量控制以及訪問控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08使用Nginx做靜態(tài)文件服務(wù)器,如何進(jìn)行權(quán)限驗(yàn)證
這篇文章主要介紹了使用Nginx做靜態(tài)文件服務(wù)器,如何進(jìn)行權(quán)限驗(yàn)證問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06nginx簡(jiǎn)單配置多個(gè)server的方法
這篇文章主要介紹了nginx簡(jiǎn)單配置多個(gè)server的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11