alexpdh's blog

portal 常见漏洞与解决方法(基于 Tomcat8.5)

portal_serverity

看着这么多需要修复的感觉整个人都不好了[捂脸]。借着一次修复过程,总结下常见的基于 Tomcat 容器的 Web 应用的优化和漏洞防护。

添加 httponly=true 和 Secure=true

  • httponly 能有效防止 XXS 攻击。
  • Secure 设置是否只能通过https来传递此条 cookie 。

打开 tomcat/conf/web.xml ,找到 sesion-config节点配置cooker-config

1
2
3
4
5
6
7
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>

注意,设置 Secure=true 需要应用的访问协议是https。

修改tomcat默认端口

修改默认启动端口

打开 tomcat/conf/server.xml,找到

1
2
3
4
5
6
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>

将 port 改为其他值。

禁用8005端口

telnet ip 8005 然后输入 SHUTDOWN 就可以关闭 Tomcat,应该禁用,在 tomcat/conf/server.xml中找到

1
<Server port="8005" shutdown="SHUTDOWN">

修改为:

1
<Server port="-1" shutdown="SHUTDOWN">

防止 Slow HTTP POST

Slow HTTP Denial of Service Attack漏洞是利用HTTP POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,让这个连接不断开。这样当客户端连接多了后,占用了webserver的所有可用连接,从而导致一种慢速DOS,属于一种拒绝服务攻击。

打开 tomcat/conf/server.xml,找到

1
2
3
4
5
6
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>

修改为

1
2
3
4
5
6
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="8000"
redirectPort="8443"
/>

防止 Clickjacking - Framable Page

Clickjacking(点击劫持) 在web端一般是iframe嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。 X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。

打开 tomcat/conf/web.xml,添加拦截器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

参数说明

  • DENY:不能被嵌入到任何iframe或frame中。
  • SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
  • ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

隐藏 Tomcat 版本号

在 /home/portal/data/tomcat/tomcatCas/lib/ 下新建目录 org/apache/catalina/util

1
mkdir /tomcat/lib/org/apache/catalina/util

创建一个 ServerInfo.properties 文件,保存为空文件

1
2
cd /tomcat/lib/org/apache/catalina/util
vim ServerInfo.properties

删除 Tomcat 目录中没用的目录

  • 删除 tomcat/webapps 目录下的 docs、examples、host-manager、manager目录。
  • 删除 ROOT 下没用的文件。
alexpdh wechat
欢迎扫一扫关注 程序猿pdh 公众号!