44import com .thoughtworks .xstream .security .*;
55import io .swagger .annotations .Api ;
66import lombok .extern .slf4j .Slf4j ;
7+ import org .springframework .context .MessageSource ;
8+ import org .springframework .context .i18n .LocaleContextHolder ;
79import org .springframework .stereotype .Controller ;
810import org .springframework .web .bind .annotation .CrossOrigin ;
911import org .springframework .web .bind .annotation .RequestBody ;
2527@ CrossOrigin (origins = "*" )
2628@ RequestMapping ("/xstream" )
2729public class XstreamController {
30+ private final MessageSource messageSource ;
31+
32+ public XstreamController (MessageSource messageSource ) {
33+ this .messageSource = messageSource ;
34+ }
35+
2836 @ RequestMapping ("" )
2937 public String xstream () {
3038 return "vul/components/xstream" ;
@@ -51,10 +59,10 @@ public String vul(@RequestBody(required = false) String content) {
5159 Object result = xs .fromXML (content ); // 反序列化得到的对象
5260
5361 // 检查反序列化后的结果并返回相关信息
54- return "组件漏洞-Xstream Vul, 反序列化结果: \n " + result ;
62+ return msg ( "component.xstream.result.vul" , result ) ;
5563 } catch (Exception e ) {
5664 log .error ("XStream反序列化失败" , e );
57- return "组件漏洞-Xstream Vul 执行失败:" + e .getMessage ();
65+ return msg ( "component.xstream.result.vulFailed" , e .getMessage () );
5866 }
5967 }
6068
@@ -69,10 +77,10 @@ public String safe1(@RequestBody(required = false) String content) {
6977 // 黑名单示例:拒绝已知危险类型。
7078 xstream .denyPermission (new ExplicitTypePermission (new Class []{ImageIO .class }));
7179 Object result = xstream .fromXML (content );
72- return "组件漏洞-Xstream Safe-BlackList, 解析结果:" + result ;
80+ return msg ( "component.xstream.result.blacklist" , result ) ;
7381 } catch (Exception e ) {
7482 log .error ("XStream黑名单场景解析失败" , e );
75- return "组件漏洞-Xstream Safe-BlackList 执行失败:" + e .getMessage ();
83+ return msg ( "component.xstream.result.blacklistFailed" , e .getMessage () );
7684 }
7785 }
7886 @ RequestMapping ("/safe2" )
@@ -92,13 +100,17 @@ public String safe2(@RequestBody(required = false) String content) {
92100 // 添加自定义的类列表
93101 xstream .addPermission (new ExplicitTypePermission (new Class []{Date .class }));
94102 Object result = xstream .fromXML (content );
95- return "组件漏洞-Xstream Safe-WhiteList, 解析结果:" + result ;
103+ return msg ( "component.xstream.result.allowlist" , result ) ;
96104 } catch (Exception e ) {
97105 log .error ("XStream白名单场景解析失败" , e );
98- return "组件漏洞-Xstream Safe-WhiteList 执行失败:" + e .getMessage ();
106+ return msg ( "component.xstream.result.allowlistFailed" , e .getMessage () );
99107 }
100108 }
101109
110+ private String msg (String key , Object ... args ) {
111+ return messageSource .getMessage (key , args , LocaleContextHolder .getLocale ());
112+ }
113+
102114 // CVE-2020-26259 任意文件删除示例
103115 public static void main (String [] args ) {
104116 String xml_poc = "<map>\n " +
0 commit comments