国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

防御漏洞 強(qiáng)化Web服務(wù)器安全

2020-12-30 11:59河南劉建臣
網(wǎng)絡(luò)安全和信息化 2020年4期
關(guān)鍵詞:配置文件后綴漏洞

■ 河南 劉建臣

防范Apache的常見漏洞

Apache可謂是最常見的Web服務(wù)器軟件之一,它可以高效運(yùn)行在幾乎所有的主機(jī)平臺(tái)上,可以安全可靠的將Perl/Python等解釋器編譯到服務(wù)器中。但Apache本身并非無懈可擊,其依然存在可能被黑客惡意利用的漏洞。

例如,當(dāng)訪問諸如“https://www.xxx.com/hello.jpg.qqq”等網(wǎng)址時(shí),在數(shù)據(jù)包的Headers頭中的“Content-Type”欄中會(huì)顯示“image/jepg”信息,即Apache會(huì)根據(jù)訪問文件的后綴來查找對(duì)應(yīng)的MIME進(jìn)行解析。

Apache可以識(shí)別很多MIME類型,但它終究無法識(shí)別所有類型的文件,因此在Apache底層代碼中定義了默認(rèn)的規(guī)則,允許文件可以存在以點(diǎn)號(hào)分隔的多個(gè)后綴,當(dāng)右邊的后綴無法識(shí)別時(shí),可以繼續(xù)向左側(cè)識(shí)別,直到能夠找到可以識(shí)別的后綴為止。

例 如,請(qǐng) 求“getdata.php.ttt”文件時(shí),對(duì)于“.ttt”后綴是無法識(shí)別的,而向左則可以識(shí)別“.php”的后綴,因此該文件就會(huì)被Apache當(dāng)做PHP腳本來執(zhí)行。

有些開發(fā)人員可能不知曉該問題,在設(shè)計(jì)程序時(shí)雖然對(duì)文件后綴進(jìn)行上傳限制,不允許上傳諸如“.php”“asp”之類的文件,來防止黑客入侵。

但是黑客可能會(huì)上傳“opendoor.php.xxx”之 類的文件,來避開上述限制。由于Apache不知道后綴為“xxx”文件的類型,就會(huì)向左進(jìn)行識(shí)別,將其識(shí)別為“.php”文件來執(zhí)行。

解決的方法很簡(jiǎn)單,打開Apache的配置文件,在其中如果發(fā)現(xiàn)“AddHandler application/x-httpd-php.php”行,這表示PHP添加了處理器,就會(huì)導(dǎo)致該漏洞的發(fā)生,因此將其刪除即可杜絕該漏洞。

一些Apache服務(wù)器可能存在目錄遍歷漏洞,即對(duì)用戶輸入的文件名稱沒有進(jìn)行完善的安全性驗(yàn)證,使其可以利用一些特殊字符來避開服務(wù)器的安全性檢測(cè),進(jìn)而訪問任意的文件,甚至可以執(zhí)行各種系統(tǒng)命令。

默認(rèn)的Apache配置文件是存在該問題的。例如,安裝好Apache之后,直接在瀏覽器訪問其根目錄,是可以查看其中所有文件。為了防止該漏洞,可以打開“http.conf”文件,找到“Options+Indexes+FollowSymLinks+ExecCGI”行,將其修 改為“Options-Indexes+FollowSymLinks+ExecCGI”,就可以修改該漏洞。

防范Tomcat遠(yuǎn)程執(zhí)行漏洞

Tomcat是一個(gè)輕量級(jí)的免費(fèi)開放源代碼的Web應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問較小的場(chǎng)景中應(yīng)用較為廣泛。Tomcat雖然是Apache服務(wù)器的擴(kuò)展組件,但其實(shí)際作為一個(gè)與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。對(duì)于Tomcat 7.0.0-7.0.79(以及7.0.81)等版本來說,如果其運(yùn)行在Windows主機(jī)上,并且啟用了HTTP PUT請(qǐng)求方法,那么惡意用戶就可通過構(gòu)造請(qǐng)求信息,向服務(wù)器上傳包含任意代碼的JSP文件,造成任意代碼執(zhí)行,危害十分嚴(yán)重。

例如,打開Tomcat安裝目錄下的“confweb.xml”文件,其中“org.apache.catalina.servlets.DefaultServlet”欄中如果存在“readonly”和“false”行,說明開啟了HTTP PUT方法,黑客可能遠(yuǎn)程上傳木馬文件對(duì)服務(wù)器進(jìn)行非法控制。處理的方法是將Tomacat升級(jí)到最新版本,并清除上述配置項(xiàng)目,禁用HTTP PUT方法。

防御Tomcat的WAR部署漏洞

War包一般是在進(jìn)行Web開發(fā)時(shí),通常作為一個(gè)網(wǎng)站Project下所有源碼的集合,里面包含前臺(tái)HTML/CSS/JS的代碼,也包含Java的代碼。當(dāng)遠(yuǎn)程部署WAR包時(shí),可以采用多種方法實(shí)現(xiàn)。例如,使用XFTP工具遠(yuǎn)程復(fù)制,使用Apache Ant自動(dòng)部署等。

另外,可以使用Tomcat提供的Manager來部署War包。當(dāng)進(jìn)入Tomcat的后臺(tái)管理界面,可以顯示Tomcat的應(yīng)用程序列表,允許對(duì)目標(biāo)項(xiàng)目進(jìn)行管理、開啟、關(guān)閉、重新加載等操作,這樣在每次部署項(xiàng)目時(shí)無需重啟Tomcat。

在項(xiàng)目列表下部選擇“WAR file to deploy”項(xiàng),選擇合適的WAR文件,將其上傳部署到Tomcat的項(xiàng)目列表中。使用該方法雖然有利于項(xiàng)目的使用,不過也帶來了一定的安全隱患,如果登錄密碼過于簡(jiǎn)單,黑客就很容易登錄進(jìn)來,并將JSP木馬打包成WAR文件,利用上述部署方式將其上傳到服務(wù)器中,來對(duì)服務(wù)器進(jìn)行滲透攻擊。

為了避免上述問題,可以針對(duì)Tomcat創(chuàng)建低權(quán)限的用戶,并禁止其遠(yuǎn)程登錄。

例如,執(zhí)行“useradd tomcat_user”,創(chuàng)建名 為“tomcat_user”的用戶,它就會(huì)在“/home”目錄下生成一個(gè)“tomcat_user”的用戶目錄,并生成一個(gè)名為“tomcat_userr”的用戶組。執(zhí)行“passwd tomcat_user”命令,可以設(shè)置密碼。而執(zhí)行“chown test_tomcat var/tomcat/default”命令,可以將Tomcat擁有者更改為“tomcat_user”。

執(zhí)行“chgrp-R test_tomcat var/tomcat/default”命令,更改Tomcat的用戶組為“test_tomcat”。執(zhí)行“chmod -R g+w var/tomcat/default”命令,為目錄所屬組添加寫的權(quán)限。

此外,還可以增加對(duì)于本地和基于證書的身份驗(yàn)證,部署賬戶鎖定機(jī)制,并在“CATALINA_HOMEconfweb.xml”文件中設(shè)置鎖定機(jī)制和時(shí)間超時(shí)限制。針對(duì)manager-gui/managerstatus/manager-script等目錄頁面設(shè)置最小權(quán)限訪問限制。對(duì)于后臺(tái)管理頁面,可以設(shè)置復(fù)雜的密碼來防止黑客輕易破解。

防御Nginx的文件解析漏洞

利用Nginx這款Web服務(wù)器軟件,可以作為HTTP代理服務(wù)器和反向代理服務(wù)器,支持通過緩存加速訪問,可以完成簡(jiǎn)單的負(fù)載均衡和容錯(cuò),支持包過濾功能、支持SSL,可以進(jìn)行自定義配置,支持虛擬主機(jī)等功能。Nginx同樣存在不可忽視的文件解析漏洞,這其實(shí)是在Nginx解析文件后綴時(shí),由于內(nèi)部機(jī)制導(dǎo)致的問題。

例如,當(dāng)訪問諸如“http://www.xxx.com/fp.jpg/t.php”網(wǎng)址時(shí),Nginx對(duì)提交的文件信息進(jìn)行分析,發(fā)現(xiàn)存在PHP文件,就將其轉(zhuǎn)交給PHP模塊進(jìn)行處理,PHP模塊識(shí)別“fp.jpg/t.php”文件并不存在,便會(huì)刪除其中的“t.php”,發(fā)現(xiàn)“fp.jpg”存在,就將其作為執(zhí)行的文件,但這并不是PHP文件,就會(huì)返回“Access denied”的提示信息。對(duì)于“php.ini”配置文件來說,其中的“cgi.fix_pathinfo”的默認(rèn)值為1,該參數(shù)用來設(shè)置CGI模式下是否為PHP設(shè)置絕對(duì)路徑或者“PATH_PATH”信息,該值為1表示絕對(duì)路徑“PATH_TRANSLATED”的值為“SCRIPT_FILENAME”,并且設(shè)置“PATH_INFO”信息。

這樣,PHP模塊就會(huì)根據(jù)提交的文件路徑,按照上述方式進(jìn)行分析。PHP5-FRM的配置文件新增了名為“security.limit_extensions”的參數(shù),可以用來限制可執(zhí)行的文件后綴。

執(zhí)行“sudo find/ -name php-frm.conf”命令,來查找該配置文件,如果在其中的“security.limit_extensions”行中添 加“.jpg”等的話,那么PHP就會(huì)認(rèn)為JGP也是合法的文件。當(dāng)訪問“http://www.xxx.com/fp.jpg/t.php”地址時(shí),就會(huì)順利通過。為了防御上述可能存在的解析漏洞,可以將“php.ini”文件中的“cgi.fix_pathinfo”的值設(shè)置為0,禁止PHP獲取“PATH_INFO”的信息。

將“php-frm.conf”文件中的“security.limit_extensions=”欄中只保存“.php .php3 .php4 .php5.php7”等信息,讓PHP只能解析指定的文件擴(kuò)展名。圖片最好保存到圖片服務(wù)器上,使其和業(yè)務(wù)服務(wù)器分隔開。即使不能分隔,在處理上傳的圖片時(shí),則僅僅對(duì)圖片進(jìn)行處理而不要保存。也不要提供對(duì)原圖的訪問,所有圖片在處理時(shí)都要經(jīng)過程序處理,避免黑客利用圖片后綴執(zhí)行非法操作。

某些版本的Nginx會(huì)將諸如“http://www.xxx.com/1.jpg/w.php”“http://www.xxx.com/1.jpg%00w.php”之類的請(qǐng)求解析為PHP文件執(zhí)行。處理方法是將Nginx的版本號(hào)隱藏起來,打開“nginx.conf”配置文件,將其中的“server_tokens”的值設(shè)置為“off”即可。

防范Nginx的CRLF漏洞

在HTTP數(shù)據(jù)包中存在回車和換行符,如果黑客加以惡意利用,就會(huì)變成CRLF注入漏洞攻擊。CRLF就是“回車+換 行”(即“ ”)的簡(jiǎn)稱,其十六進(jìn)制編碼分別為0x0d和0x0a。在HTTP協(xié)議中,HTTP header與HTTP Body是使用兩個(gè)CRLF分隔的,瀏覽器根據(jù)這兩個(gè)CRLF來提取對(duì)應(yīng)的HTTP內(nèi)容并加以顯示。因此黑客如果能夠控制HTTP消息頭中的字符,并在其中注入一些惡意的換行,就可以注入惡意的會(huì)話Cookie或HTML代碼。

CRLF漏洞常出現(xiàn)在Location與Set-cookie消息頭中。例如,有些網(wǎng)站會(huì)在HTTP消息頭中的“Location”欄中添加“http://www.xxx.com”之類的地址,來實(shí)現(xiàn)頁面重定向跳轉(zhuǎn)操作。但如果在其中利用“%0a”字符添加了換行符,那么就會(huì)給訪問者設(shè)置了一個(gè)SESSION,造成一個(gè)固定會(huì)話漏洞。

更為嚴(yán)重的是,如果同時(shí)注入兩個(gè)CRLF就會(huì)造成反射型XSS攻擊。例如,對(duì)于“http://www.xxx.com/?url=xxx”,如果黑客利用該方法構(gòu)造成特殊語句,就可以形成在HTTP消息頭中嵌入非法的語句,當(dāng)通過瀏覽器進(jìn)行提交時(shí),就會(huì)造成XSS攻擊。

防御CRLF漏洞的方法并不復(fù)雜,只需在設(shè)計(jì)網(wǎng)站程序時(shí),對(duì)用戶提交的數(shù)據(jù)進(jìn)行過濾,將“" "”“" "”之類的特殊字符進(jìn)行清理即可。

防御Nginx的其他漏洞

Nginx同樣可能存在目錄遍歷漏洞,究其原因是配置不當(dāng)所導(dǎo)致的。它的產(chǎn)生和配置文件“nginx.conf”中的“autoindex”參數(shù)設(shè)置相關(guān),其默認(rèn)值為“off”,即目錄瀏覽功能處于關(guān)閉狀態(tài),進(jìn)入“/etc/nginx/sitesavailable/defauot”目錄,打開“nginx.conf”文件,如果發(fā)現(xiàn)其中的“autoindex”為“on”,就說明存在該漏洞,解決方法很簡(jiǎn)單,將其值設(shè)置為“off”即可。

因?yàn)镹ginx可以作為反向代理使用,對(duì)于動(dòng)態(tài)數(shù)據(jù)會(huì)被“proxy_pass”傳遞給后端端口,靜態(tài)數(shù)據(jù)存儲(chǔ)在“/home”目錄下,該目錄在URL中的名稱為“files”,這樣就需要設(shè)置目錄的別名。例如在配置文件中存在“l(fā)ocation/files {”“alias/home/;”“}”等內(nèi)容。當(dāng)訪問諸如“http://www.xxx.com/files/welcome.txt”之類的網(wǎng)址時(shí),就可以獲取“/home/welcome.txt”文 件。但是URL中的“/files”沒有添加“/”的后綴,在“alias”中的設(shè)置的“/home/”是存在該后綴的,這樣就導(dǎo)致了訪問者可以從“/home”跳轉(zhuǎn)到其上層目錄,造成可以下載任意文件漏洞。解決方法是在“l(fā)ocation”和“alias”中的值都不要添加“/”后綴,或者都添加該后綴即可。

SSRF(Server-Side Request Forgery,服務(wù)器端請(qǐng)求偽造)是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請(qǐng)求的安全漏洞,一般情況下,SSRF攻擊的目標(biāo)是從外網(wǎng)無法訪問的內(nèi)部系統(tǒng)。它是利用存在缺陷的Web應(yīng)用作為代理的遠(yuǎn)程和本地的服務(wù)器,來進(jìn)行滲透操作。代理服務(wù)器常常遭到此類攻擊,往往是利用服務(wù)器端發(fā)起。因此可以請(qǐng)求到與其相連而與外網(wǎng)隔絕的內(nèi)部系統(tǒng)。

例如,Nginx配置文件中就存在“proxy_pass http://IP”之類的信息,使其可以作為代理服務(wù)器使用。如果攻擊者可以操控該IP,并將其修改成內(nèi)網(wǎng)IP地址,即可造成服務(wù)端請(qǐng)求偽造漏洞。例如,對(duì)外網(wǎng)、內(nèi)網(wǎng)、本地進(jìn)行端口掃描,某些情況下端口的描述信息會(huì)顯示出來,攻擊者就可以借機(jī)對(duì)內(nèi)網(wǎng)進(jìn)行滲透。應(yīng)對(duì)此類攻擊的方法是對(duì)返回信息進(jìn)行過濾,驗(yàn)證遠(yuǎn)程服務(wù)器對(duì)請(qǐng)求的響應(yīng)是比較容易的方法。

如果Web應(yīng)用是去獲取某一種類型的文件,那么就必須在把返回結(jié)果展示給用戶之前,對(duì)其進(jìn)行驗(yàn)證處理,檢測(cè)其是否符合標(biāo)準(zhǔn)。另外,對(duì)相關(guān)的錯(cuò)誤信息進(jìn)行統(tǒng)一化處理,避免攻擊者根據(jù)錯(cuò)誤信息來判斷遠(yuǎn)端服務(wù)器的端口狀態(tài)。對(duì)用戶訪問的端口進(jìn)行限制,例如限制請(qǐng)求的端口為HTTP常用端口等。啟用內(nèi)網(wǎng)IP黑名單功能,避免Web應(yīng)用被用來非法獲取內(nèi)網(wǎng)數(shù)據(jù)。禁用不需要的網(wǎng)絡(luò)協(xié)議,例如僅僅允許HTTP和HTTPS請(qǐng)求,盡量降低安全風(fēng)險(xiǎn)。

在Nginx的Range Filter中存在整數(shù)溢出漏洞,攻擊者可以通過帶有特殊構(gòu)造的Range的HTTP頭的惡意請(qǐng)求引發(fā)這個(gè)整數(shù)溢出漏洞,并導(dǎo)致敏感信息泄露。HTTP的Range允許客戶端分批次請(qǐng)求資源的一部分,如果服務(wù)端資源較大,可以通過Range來并發(fā)下載。如果訪問資源時(shí)網(wǎng)絡(luò)中斷,可以斷點(diǎn)續(xù)傳。Range設(shè)置在HTTP請(qǐng)求頭中。

該漏洞原理上其實(shí)就是對(duì)整數(shù)溢出漏洞的惡意利用,從Cache文件中獲取Cache頭的信息。在某些配置的情況下,Cache頭中會(huì)存在IP地址信息,造成信息泄露。Nginx模塊及常用的第三方模塊本身無法通過這個(gè)整數(shù)溢出來對(duì)內(nèi)存進(jìn)行操作或遠(yuǎn)程執(zhí)行。防御該漏洞的方法是升級(jí)Nginx版本,如果不能升級(jí),可在Nginx配置文件中添加“max_ranges 1”行,禁用Multipart Range功能。

猜你喜歡
配置文件后綴漏洞
基于Docker的實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)配置文件管理軟件的設(shè)計(jì)與實(shí)現(xiàn)
漏洞
從Windows 10中刪除所有網(wǎng)絡(luò)配置文件
用軟件處理Windows沙盒配置文件
互不干涉混用Chromium Edge
基于selenium的SQL注入漏洞檢測(cè)方法
變階馬爾科夫模型算法實(shí)現(xiàn)①
倍增法之后綴數(shù)組解決重復(fù)子串的問題
漏洞在哪兒
兩種方法實(shí)現(xiàn)非常規(guī)文本替換