本文針對(duì)綠盟科技掃描出的常見 WEB 應(yīng)用漏洞做具體的修復(fù),并包含了 Http 如何轉(zhuǎn) Https 的詳細(xì)解決方案朦前。
1 掃描路徑為 docs、examples、host-manager扳还、manager 之下的漏洞
修復(fù)方案:刪除 docs、examples橱夭、host-manager氨距、manager 文件夾(該方法可以修復(fù)掃描出來(lái)的大部分漏洞)
2 點(diǎn)擊劫持:X-Frame-Options 未配置
修復(fù)方案:配置過(guò)濾器,在過(guò)濾器中配置 X-Frame-Options 為 SAMEORIGIN棘劣。
response.setHeader("x-frame-options", "SAMEORIGIN");
示例:
- 新增過(guò)濾器類
ResponseFilter.java
:
public class ResponseFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//設(shè)置 x-frame-options
response.setHeader("x-frame-options", "SAMEORIGIN");
filterChain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
-
web.xml
中新增過(guò)濾器配置:
<!-- 設(shè)置響應(yīng) X-Frame-Options 頭 -->
<filter>
<filter-name>ResponseFilter</filter-name>
<filter-class>com.zpf.wisdom.common.filter.ResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完之后俏让,啟動(dòng)服務(wù)器,訪問(wèn)應(yīng)用呈础,打開瀏覽器控制臺(tái)舆驶,在 Response Headers 下面有 x-frame-options:SAMEORIGIN 項(xiàng)即為配置成功,如下圖:
3 檢測(cè)到錯(cuò)誤頁(yè)面web應(yīng)用服務(wù)器版本信息泄露
修復(fù)方案:刪除 tomcat/lib/catalina.jar 中 \org\apache\catalina\util 目錄下的 ServerInfo.properties
文件中的版本等信息而钞,具體操作如下:
- 進(jìn)入到 tomcat/lib 目錄下沙廉,用電腦自帶解壓軟件打 catalina.jar 進(jìn)入到 \org\apache\catalina\util 目錄下
- 編輯
ServerInfo.properties
文件,編輯最后三行臼节,去掉版本號(hào)等信息(可直接注釋或刪除) - 改完后自動(dòng)跳出提示撬陵,點(diǎn)擊“是”自動(dòng)更新 catalina.jar 重新打包珊皿。
4 可通過(guò) HTTP 獲取遠(yuǎn)端 WWW 服務(wù)信息
修復(fù)方案:在 server.xml
文件中的 Connector 元素上添加 server 屬性。如:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
server="Microsoft-IIS/8.5" />
5 檢測(cè)到基于 HTTP 的基本認(rèn)證
修復(fù)方案:http 轉(zhuǎn) https巨税。
5.1 安裝(購(gòu)買)證書
此處不做詳細(xì)說(shuō)明蟋定,請(qǐng)參考鏈接 https://blog.csdn.net/qq_16503045/article/details/90774917。
(僅參考鏈接文章前面證書部分草添,后面 tomcat 配置部分有點(diǎn)缺失)
5.2 拷貝證書到 tomcat
我們已經(jīng)獲得了證書和證書密碼驶兜,那么就將證書拷貝到 tomcat 的 conf 文件夾下。
5.3 配置使 https 可以訪問(wèn)應(yīng)用
https 默認(rèn)的端口是 443远寸,它和 8443 端口的關(guān)系就如同 http 的 80 端口和 8080 端口一樣抄淑。因此需要先在 server.xml
中配置該端口。
默認(rèn)情況下驰后,tomcat 的 8443 端口是注釋掉的肆资,那么去掉注釋,打開端口 8443 的配置灶芝,將 port 屬性值修改為 443郑原,并添加證書配置項(xiàng):
- keystoreFile="cert/200613478180598.pfx"
- keystoreType="PKCS12"
- keystorePass="證書密碼"
完整配置示例如下,以 tomcat 8.0 為例:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/dev/tomcat8/conf/2309789.pfx"
keystoreType="PKCS12"
keystorePass="GdyH4tiF"/>
注意:keystoreFile
和 keystorePass
兩項(xiàng)需要修改夜涕。其中 keystoreFile 為證書路徑犯犁,可以是絕對(duì)路徑或相對(duì)路徑,相對(duì)路徑是相對(duì)于環(huán)境變量中 tomcat 配置的路徑钠乏,上面示例中使用了絕對(duì)路徑栖秕。keystorePass 則為證書密碼。
配置完這些晓避,就可以啟動(dòng) tomcat 簇捍,使用 https 訪問(wèn)。此時(shí)俏拱,使用 http 和 https 都可以訪問(wèn)到應(yīng)用暑塑。
5.4 配置使 http 自動(dòng)轉(zhuǎn) https
如果想要輸入 http 訪問(wèn)時(shí)自動(dòng)轉(zhuǎn)為 https,還需要做以下配置:
-
修改 conf 文件夾下的
server.xml
中相應(yīng) redirectPort
將所有的 redirectPort="8443" 修改為 redirectPort="443"锅必,如:<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443" server="Microsoft-IIS/8.5"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443"/>
-
在 conf 文件夾下的
web.xml
文件的 <web-app></web-app> 中增加代碼段:<security-constraint> <web-resource-collection > <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
配置完這兩個(gè)文件事格,重啟 tomcat,使用 http 訪問(wèn)應(yīng)用搞隐,會(huì)發(fā)現(xiàn)成功跳轉(zhuǎn)為 https 訪問(wèn)驹愚。