一:禁止不被允许的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"/>

 

posted on 2019-07-12 15:11  chunxiaozhang  阅读(189)  评论(0编辑  收藏  举报