博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat的安全问题
阅读量:5942 次
发布时间:2019-06-19

本文共 3526 字,大约阅读时间需要 11 分钟。

我一直认为jsp会安全一些,可是最近利用tomcat入侵整个局域网的事情发生在了自己身边,tomcat默认的是8080端口,在自己电脑上开发的时候为了方便一般都不设登入密码,直接输入admin就进去了,在本机还没有事,因为自己电脑上的8080端口是没有对外开放的,可是当放到客户机房的时候一切恶梦便开始了,客户的服务器开放了8080端口,当tomcat架设好后,一些不怀好意的人,用工具扫出了8080端口,直接用空密码登陆,进行tomcat后上传了一个jsp木马,以此为突破口,对整个局域网进行了一次大扫荡,获得了最高权限,多亏发现的及时,没有造成太大的损失,虽然这件不是发生在自己身上,但是却给自己敲了一个警钟,安全很重要啊,不管什么时候都不能掉以轻心,下面转一篇文章,主要是说明如何设置tomcat才能安全。

环境描述

OS:Windows Server 2003
IP:192.168.1.12
Tomcat:6.0.18
1、安全测试
(1).登录后台
在Windows Server 2003上部署Tomcat,一切保持默认。然后登录Tomcat后台,其默认的后台地址为:
。在浏览器中输入该地址,回车后弹出登录对话框,输入默认的用户名admin,默认的密码为空,成功登录后台。(图1)

 

(2).获得Webshell

在Tomcat的后台有个WAR file to deploy模块,通过其可以上传WAR文件。Tomcat可以解析WAR文件,能够将其解压并生成web文件。我们将一个jsp格式的webshell 用WinRar打包然后将其后缀改名为WAR(本例为gslw.war),这样;一个WAR包就生成了。最后将其上传到服务器,可以看到在Tomcat的后台中多了一个名为/gslw的目录,点击该目录打开该目录jsp木马就运行了,这样就获得了一个Webshell。(图2)

 

(3).测试操作

创建管理员
Tomcat服务默认是以system权限运行的,因此该jsp木马就继承了其权限,几乎可以对Web服务器进行所有的操作。比如启动服务、删除/创建/修改文件、创建用户。我们以创建管理员用户为例进行演示。运行jsp木马的“命令行”模块,分别输入命令net user test test168 /add和net localgroup administrators test /add,这样就创建了一个具有管理员权限的test用户,其密码为test168。(图3)

 

远程登录

我们还可以进一步地渗透,比如通过“远程桌面”登录Web服务器。输入命令netstat -ano查看该服务器的3389端口是关闭的。我们可以利用webshell上传一个工具,利用其开启Web服务器的远程桌面。最后,我们就可以成功登录系统,至此整个Web沦陷。(图4)

 

2、安全防范

通过上面的测试可以看到,默认配置下的Tomcat服务器的安全性是非常差的。如何来加固Tomcat服务器的安全性呢?我们从以下几个方面来加强。
(1).服务降权
默认安装时Tomcat是以系统服务权限运行的,因此缺省情况下几乎所有的Web服务器的管理员都具有Administrator权限这和IIS不同,存在极大的安全隐患,所以我们的首先从Tomcat服务降权开始。
首先创建一个普通用户,为其设置密码,将其密码策略设置为“密码永不过期”,比如我们创建的用户为Tomcat_lw。然后修改Tomcat安装文件夹的访问权限,为Tomcat_lw赋予Tomcat文件夹的读、写、执行的访问权限,赋予Tomcat_lw对WebApps文件夹的只读访问权限,如果某些Web应用程序需要写访问权限,单独为其授予对那个文件夹的写访问权限。(图5)

 

“开始→运行”,输入services.msc打开服务管理器,找到Apache Tomcat服务,双击打开该服务,在其实属性窗口中点击“登录”选项卡,在登录身份下选中“以此帐户”,然后在文本框中输入Tomcat_lw和密码,最后“确定”并重启服务器。这样Tomcat就以Tomcat_lw这个普通用户的权限运行。(图6)

 

有的时候,我们需要在命令行下运行Tomcat,这时候可以在命令下输入命令runas /user:tomcat_lw cmd.exe回车后并输入密码,这样就开启一个Tomcat_lw权限的命令行。最后定位到Tomcat的bin文件夹下,输入命令 tomcat6.exe即以Tomcat_lw在命令行下启动Tomcat。(图7)

 

这样普通用户Tomcat_lw运行的Tomcat其权限就大大地降低了,就算是攻击者获得了Webshell也不能进一步深入,从而威胁web服务器的安全。

(2).更改端口
Tomcat的默认端口是8080,攻击者可以据此运行扫描工具进行端口扫描,从而获取部署了Tomcat的Web服务器然后实施攻击。因此,为了安全期间我们可以修改此默认端口。在Tomcat的安装路径的conf目录下找到server.xml文件,用记事本打开然后搜索8080找到对应的字段,然后将8080自行修改为另外的数字。另外,需要说明的是connectionTimeout="20000"是连接超时,maxThreads="150"是最大线程类似这样的参数也可以根据需要进行修改。(图8)

 

(3).禁止列表

我们知道在IIS中如果设置不当,就会列出Web当前目录中的所有文件,在Tomcat也不例外。如果浏览者可以在客户端浏览Web目录,那将会存在较大的安全隐患,因此我们要确认Tomcat的设置中禁止列目录。设置文件是web.xml,也在conf目录下。用记事本打开该文件,搜索init-param在其附近找到类似如下字段:  
<init-param> 
<param-name>listings</param-name> 
<param-value>false</param-value> 
</init-param>   
确认是false而不是true。(图9)

 

(4).用户管理

Tomcat的后台管理员为admin并且默认为空密码,安全期间我们需要修改该默认的用户名并为其设置健壮的密码。其配置文件为tomcat-users.xml,用记事本打开该文件然后进行修改。其中role标签表示其权限,manager说明是管理员权限;user标签表示后台管理用户,可以看到用户名为admin,我们可以将其修改为一个陌生的用户;可以看到password后面为空密码,我们可以为其设置一个复杂的密码。最后修改配置完成的tomcat-users.xml文件为:  
<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
<role rolename="manager"/> 
<role rolename="admin"/> 
<user username="gslw" password="test168" roles="admin,manager"/> 
</tomcat-users> 
(图10)

 

(5).错误页面

Tomcat不像IIS提供了各种类型的错误页,如果Tomcat发生错误就会显示千篇一律的错误页面。其实我们可以通过修改其配置文件,从而自定义设置其错误页面的显示。打开web.xml文件,在最后一行的之前添加如下的语句:   
<error-page> 
<error-code>401</error-code> 
<location>/401.htm</location> 
</error-page> 
<error-page> 
<error-code>404</error-code> 
<location>/404.htm</location> 
</error-page> 
<error-page> 
<error-code>500</error-code> 
<location>/500.htm</location> 
</error-page> 
当然,仅仅设置这样的语句还不行,需要创建相应的401.htm、404.htm、500.htm这样的文件才行。另外,要把错误页面文件放到webapps\manager目录中,否则需要在web.xml中指定其路径,最后的效果如图11所示。(图11)

 

好了,就这么多了,希望这篇文章能够引大家的注意!

本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/408727,如需转载请自行联系原作者

你可能感兴趣的文章
微信小程序
查看>>
常用的正则表达式分享
查看>>
我的世界:一个村落(其一)
查看>>
SKChoosePopView 一个HUD风格的可定制化选项弹窗的快速解决方案
查看>>
(二十)java多线程之ScheduledThreadPoolExecutor
查看>>
【译】码农生涯十六条不要
查看>>
sublime快捷键
查看>>
认识jQuery及jQuery选择器
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
JavaScript标准库系列——RegExp对象(三)
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
js深度解析url地址
查看>>
web入门+书籍推荐
查看>>
[转]:xmake插件开发之色彩高亮显示
查看>>
OS X 下在代码中枚举所有进程的方法
查看>>
eventEmitter3源码分析与学习
查看>>
关于缓存命中率的几个关键问题!
查看>>
崛起的中国服务器市场迎来旺盛的SPEC测试需求
查看>>
视频转成flv格式
查看>>
客服运营三部曲
查看>>