前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Struts2漏洞总结

Struts2漏洞总结

作者头像
全栈程序员站长
发布2022-09-09 10:32:04
7990
发布2022-09-09 10:32:04
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

13年的网站,技术不成熟,坑坑洼洼,现在看当时的代码简直不忍直视。

14年Struts2报出Struts2的漏洞(2.0.0<=version<=2.3.15),

17年3月这次的S-045漏洞,被入侵者植入了后门程序,

1. Struts2的重定向漏洞

根据Apache给出的漏洞修复方案,只是升级了jar包版本2.3.16

升级完成后所有页面访问都出现了404,如下bug:

There is no Action mapped for namespace [/] and action name [XX!XX] associated with context path….

解决办法:当时好像使用了Dynamic Method Invocation 动态方法调用,然后Struts.xml文件都修改了通配符和占位符匹配。

2. Struts2 OGNL的高危漏洞S-045

Struts使用的Jakarta解析文件上传请求包不当,当远程攻击者构造恶意的Content-Type,可能导致远程命令执行。

针对此问题做出如下修改:

(1)根据Apache给出的漏洞修复方案,升级Struts2相关jar到2.3.32

(2)关于上传文件部分做出如下验证

<1>上传文件非空验证;

<2>上传文件格式验证;

<3>上传文件验证MimeType;

<4>文件是否可被修改高宽或裁剪(本次项目上传完文件为图片)

<5>文件保存路径重命名。

验证MimeType如下:

代码语言:javascript
复制
public enum FileType {
	JPEG("FFD8FF"), PNG("89504E47"), GIF("47494638"), TIFF("49492A00"), BMP(
			"424d"), DWG("41433130"), PSD("38425053"), XML("3C3F786D6C"), HTML(
			"68746C3E"), PDF("25044462D312E"), ZIP("504B0304"), RAR("52617221"), WAV(
			"57415645"), AVI("41564920");

	private String value = "";

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}

	private FileType(String value) {
		this.value = value;
	}
}

/**
	 * 验证图片的合法性
	 * @param file
	 * @return
	 * @throws IOException
	 */
	public static boolean isInMimeType(String fileUrl) throws IOException{
		boolean flag = false;
		String mtype = getMimeType(fileUrl);
		MimeType[] ts = MimeType.values();
		for (MimeType mt : ts) {
			if(mt.getValue().equals(mtype)){
				flag = true;
				break;
			}
		}
		return flag;
	}
	
	/**
	 * 获取图片MIME
	 * @param fileUrl
	 * @return
	 * @throws java.io.IOException
	 */
	public static String getMimeType(String fileUrl) throws java.io.IOException  {  
	     FileNameMap fileNameMap = URLConnection.getFileNameMap();  
	     String type = fileNameMap.getContentTypeFor(fileUrl);  
	     return type;  
	}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161705.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
脆弱性检测服务
脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档