一:禁止不被允许的HTTP方法
1.测试允许的http方法:
[weblogic@hkczjjapp ~]$ curl -v -X OPTIONS http://11.1.198.89:9001/maccs/1001/ma_user_getwebinfo.do-----完整的请求地址
[weblogic@hkczjjapp ~]$ curl -v -X OPTIONS http://11.1.198.89:9001/maccs/1001/ma_user_getwebinfo.do * About to connect() to 11.1.198.89 port 9001 (#0) * Trying 11.1.198.89... connected * Connected to 11.1.198.89 (11.1.198.89) port 9001 (#0) > OPTIONS /maccs/1001/ma_user_getwebinfo.do HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 > Host: 11.1.198.89:9001 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 12 Jul 2019 07:30:18 GMT < Content-Length: 0 < Allow: GET, HEAD, POST, TRACE, OPTIONS-----允许的http方法 < X-Powered-By: Servlet/2.5 JSP/2.1 < * Connection #0 to host 11.1.198.89 left intact * Closing connection #0
2.禁用分析
WebDAV(Web-based Distributed Authoring and Versioning)一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。 HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:
OPTIONS :返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
HEAD :向服务器索要与GET请求相一致的响应,响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET :向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT :向指定资源位置上传其最新内容。
DELETE :请求服务器删除Request-URI所标识的资源。
TRACE :回显服务器收到的请求,主要用于测试或诊断。
CONNECT :HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
注意点:使用OPTIONS方法列出服务器使用的HTTP方法。注意,不同目录中激活的方法可能各不相同。许多时候,被告知一些方法有效,但实际上它们并不能使用。有时,即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。手动测试每一个方法,确认其是否可用。
3.禁用不安全的HTTP方法(禁用webDAV)
1.web应用的禁用
-----通过修改应用的web.xml禁用不安全的http方法 <security-constraint> <web-resource-collection> <web-resource-name>fortune</web-resource-name> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint> </auth-constraint> </security-constraint>
-----为防止报错可添加web约束文件 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
2.tomat服务器禁用
通过上修改tomcat的web.xml文件.(修改tomcat的web.xml对此tomcat下所有服务有效,应用下支队此应用有效);
3.weblogic服务器禁用
二:会话session漏洞
1.漏洞分析:
Secure属性:
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输(ssl),即只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。
HttpOnly属性:
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
2.设置方法:
servlet2.5及以下:
response.setHeader("Set-Cookie", "JSESSIONID=" + req.getSession().getId() + ";Secure;HttpOnly");//设置Secure;HttpOnly
servlet3.0以后,web.xml配置:
<session-config> <cookie-config> <session-timeout>120</session-timeout> <http-only>true</http-only>-----httponly配置 <secure>true</secure>-----secure配置 </cookie-config> </session-config>
servlet3.0以后,tomcat也可设置,server.xml:
-----httponly设置 <Context useHttpOnly="true"> -----secure设置 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" secure="true"/>