10.5 WebServer远程部署
支持远程部署的Web服务器有很多,例如,FTP,可以直接将源码上传至服务器,然后安装。但如果远程部署配置不当,攻击者就可以通过远程部署功能入侵服务器。
通过远程部署获取WebShell并不属于代码层次的漏洞,而是属于配置性错误漏洞。就像FTP入侵那样,FTP本身没有任何问题,只是由于管理员配置不当,导致攻击者可以通过FTP渗透。
10.5.1 Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Java Web应用服务器。几乎所有的Java Web开发人员都使用过Tomcat,Tomcat目前最新的版本是8.0。
安装Tomcat后,默认端口即为8080,访问"http://host:8080/",即可看到Tomcat默认的部署界面,如图10-30所示。
图10-30 Tomcat默认部署主界面
Tomcat安装后,一些默认配置并不安全,如果配置不当,攻击者可轻易获取到Web应用程序的WebShell。
在图10-30左侧可以看到有一个"Tomcat Manager"链接,在登录后可对Web应用程序动态部署,而且非常方便,管理员仅需要上传一个WAR格式的文件就可以发布到网站。
换个角度想:既然开发人员可以上传WAR文件部署网站,那么攻击者也可以上传WAR文件部署一个JSP的木马。
制作WAR格式的Shell程序时,可以使用JDK自带的JAR命令制作,JAR.exe存放在JDK安装目录下的bin目录中。比如,将C盘下的shell.jsp制作成WAR包,shell.jsp代码如下:
<%
out.println("Jsp Shell ... "); //假设这是一段脚本木马程序
%>
命令格式如下:
jar -cvf WAR文件名称 目标文件
可以使用如下命令:
jar -cvf shell.war shell.jsp //打包指定文件
jar -cvf shell.war * //打包当前目录下的所有文件
使用JAR命令打包,如图10-31所示。
图10-31 使用JAR命令制作WAR格式包
登录管理界面后,显示如图10-32所示。
图10-32 Tomcat管理界面
在Tomcat管理界面中可以看到"WAR file to deploy",也就是WAR文件部署,上传WAR文件后,Tomcat会自动部署,如图10-33所示,应用程序已经部署成功。
图10-33 WAR文件部署成功
好在使用这一功能需要密码验证,且用户必须要有manager权限,在Tomcat安装目录下的"/conf/tomcat-users.xml"文件中可以配置,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
如下用户配置就是两个存在安全隐患的配置。
① <user username="root" password="root" roles="manager"/>
使用弱口令,并且赋予manager权限。
② <user username="tomcat" password="tomcat" roles="tomcat,manager"/>
使用默认用户,并且赋予manager权限。
有一些攻击者极为狡猾,在入侵Tomcat服务器后,会偷偷地加一个管理用户,即使代码层次的漏洞不见了,攻击者依然可以通过Tomcat来部署WebShell。
经过上述剖析可知,如果你的Web Application还存在远程部署功能,就必须设定高强度密码。如果不使用远程部署功能,就应尽量删除它或者关闭它,以防被攻击者恶意利用。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。