nginx服務器的漏洞檢測方法和裝置的制造方法
【技術領域】
[0001]本發明涉及服務器檢測領域,具體而言,涉及一種nginx服務器的漏洞檢測方法和裝置。
【背景技術】
[0002]現有技術利用白盒測試檢測nginx服務器的配置文件,檢測配置文件中發有漏洞特征,如果有漏洞特征,則認為該nginx服務器具有漏洞。但是,在利用白盒測試可能檢測到錯誤的配置文件,造成漏檢或者錯檢,從而導致檢測到nginx服務器的漏洞不準確的問題。
[0003]針對現有技術中檢測nginx服務器漏洞不準確的問題,目前尚未提出有效的解決方案。
【發明內容】
[0004]本發明實施例提供了一種nginx服務器的漏洞檢測方法和裝置,以解決現有技術中檢測nginx服務器漏洞不準確的技術問題。
[0005]根據本發明實施例的一個方面,提供了一種nginx服務器的漏洞檢測方法,該nginx服務器的漏洞檢測方法包括:向nginx服務器發送第一網絡地址的訪問請求,并獲取所述nginx服務器響應所述第一網絡地址的訪問請求返回的第一內容類型;向所述nginx服務器發送第二網絡地址的訪問請求,并獲取所述nginx服務器響應所述第二網絡地址的訪問請求返回的第二內容類型,其中,所述第一網絡地址與所述第二網絡地址的內容類型相同;判斷所述第一內容類型和所述第二內容類型是否相同;以及如果判斷出所述第一內容類型和所述第二內容類型不相同,則確定所述nginx服務器有漏洞。
[0006]根據本發明實施例的另一方面,還提供了一種nginx服務器的漏洞檢測裝置,該nginx服務器的漏洞檢測裝置包括:第一請求單元,用于向nginx服務器發送第一網絡地址的訪問請求,并獲取所述nginx服務器響應所述第一網絡地址的訪問請求返回的第一內容類型;第二請求單元,用于向所述nginx服務器發送第二網絡地址的訪問請求,并獲取所述nginx服務器響應所述第二網絡地址的訪問請求返回的第二內容類型,其中,所述第一網絡地址與所述第二網絡地址的內容類型相同;第一判斷單元,用于判斷所述第一內容類型和所述第二內容類型是否相同;以及確定單元,用于在判斷出所述第一內容類型和所述第二內容類型不相同時,確定所述nginx服務器有漏洞。
[0007]在本發明實施例中,本發明實施例提供了一種nginx服務器的漏洞檢測方法,采用向nginx服務器發送第一網絡地址的訪問請求,并獲取nginx服務器響應第一網絡地址的訪問請求返回的第一內容類型;向nginx服務器發送第二網絡地址的訪問請求,并獲取nginx服務器響應第二網絡地址的訪問請求返回的第二內容類型,其中,第一網絡地址與第二網絡地址的內容類型相同;判斷第一內容類型和第二內容類型是否相同;以及如果判斷出第一內容類型和第二內容類型不相同,則確定nginx服務器有漏洞的方式,通過判斷第一內容類型和第二內容類型的不同,達到了檢測nginx服務器漏洞的目的,解決了現有技術中檢測nginx服務器漏洞不準確的問題,進而達到了提高檢測nginx服務器漏洞準確性的效果。
【附圖說明】
[0008]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0009]圖1是根據本發明實施例的nginx服務器的漏洞檢測方法的流程圖;
[0010]圖2是根據本發明實施例的nginx服務器的漏洞檢測裝置的示意圖;
[0011]圖3是根據本發明優選實施例的nginx服務器的漏洞檢測方法的流程圖;
[0012]圖4是根據本發明實施例的終端和nginx服務器進行交互的時序圖;以及
[0013]圖5是根據本發明實施例的一種終端的結構示意圖。
【具體實施方式】
[0014]為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0015]需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0016]漏洞介紹:nginx服務器是一款高性能的web服務器,使用非常廣泛,其不僅經常被用作反向代理,也可以非常好的支持PHP的運行。但是,該服務器中存在一個較為嚴重的安全問題,即默認情況下可能導致服務器錯誤的將任何類型的文件均以php的方式進行解析,使得惡意的攻擊者可能利用該漏洞以php的方式運行惡意文件,從而攻陷支持php的nginx服務器。
[0017]漏洞分析:nginx服務器默認以cgi的方式支持php的運行,譬如在配置文件當中可以按照如下方式對Php進行解析:
[0018]locat1n ?.php$ {
[0019]root html ;
[0020]fastcgi_passl27.0.0.1:9000 ;
[0021]fastcgi_index index, php ;
[0022]fastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name ;
[0023]include fastcgi_params ;
[0024]}
[0025]Nginx服務器中的locat1n對請求進行選擇的時候會使用通用資源標識符(Uniform Resource Identifier,簡稱URI)環境變量進行選擇,其中傳遞到后端Fastcgi的關鍵變量SCRIPT_FILENAME由nginx服務器生成的$fastcgi_script_name決定,而通過分析可以看到$fastcgi_script_name是直接由URI環境變量控制的,為了較好的支持PATH_INFO的提取,在php的配置選項里存在cg1.fix_pathinfo選項,其目的是為了從SCRIPT_FILENAME里取出真正的腳本名。
[0026]那么假設存在一個http://www.test, com/test, jpg,以如下的網址訪問:
[0027]http://www.test, com/test, jpg/test, php
[0028]將會得到一個URI 環境變量“/test, jpg/test, php”
[0029]經過locat1n指令,該請求將會交給后端的fastcgi處理,nginx服務器為其設置環境變量SCRIPT_FILENAME,內容為:
[0030]/scripts/test, jpg/test, php
[0031]后端的fastcgi在接收到該網址時,會根據fix_pathinfo配置決定是否對SCRIPT_FILENAME進行額外的處理,一般情況下如果不對fix_pathinfo進行開啟將影響使用PATH_INFO進行路由選擇的應用,所以一般將該配置開啟。php通過該選項之后將查找其中真正的腳本文件名字,查找的方式也是查看文件是否存在,這個時候將分離出SCRIPT_FILENAME和PATH_INF0分別為:
[0032]/scripts/test, jpg 和 test, php
[0033]最后,以/scripts/test, jpg作為此次請求需要執行的腳本,攻擊者就可以實現讓nginx服務器以php來解析任何類型的文件了。
[0034]訪問一個nginx服務器來支持php的站點,在一個任何資源的文件如robots, txt后面加上/test, php,這個時候你可以看到如下的區別:
[0035]訪問 http://www.test, com/robots, txt
[0036]HTTP/1.12000K
[0037]Server:nginx/0.6.32
[0038]Date: Thu, 20May201010:05:30GMT
[0039]Content-Type: text/plain
[0040]Content-Length:18
[0041]Last-Modified:Thu, 20May201006:26:34GMT
[0042]Connect1n:keep-alive
[0043]Keep-Alive: timeout = 20
[0044]Accept-Ranges: bytes
[0045]訪問 http://www.test, com/robots, txt/test, php
[0046]HTTP/1.12000K
[0047]Server:nginx/0.6.32
[0048]Date: Thu, 20May201010:06:49GMT
[0049]Content-Type:text/html
[0050]艮P訪問 http://www.sec.com/robots, txt 時的 content type 為 text/plain,訪問http://www.sec.com/robots, txt/test, php 時的 content type 為 text/html。
[0051]實施例1
[0052]根據本發明實施例,可以提供了一種可以用于實施本申請nginx服務器的漏洞檢測方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
[0053]根據本發明實施例,提供了一種nginx服務器