1
1
package org .joychou .controller ;
2
2
3
-
4
3
import org .dom4j .io .SAXReader ;
5
4
import org .springframework .web .bind .annotation .*;
6
5
import javax .servlet .http .HttpServletRequest ;
6
+
7
7
import org .w3c .dom .Document ;
8
8
import org .w3c .dom .Node ;
9
9
import org .w3c .dom .NodeList ;
@@ -37,7 +37,7 @@ public String xxe_xmlReader(HttpServletRequest request) {
37
37
String xml_con = Tools .getRequestBody (request );
38
38
System .out .println (xml_con );
39
39
XMLReader xmlReader = XMLReaderFactory .createXMLReader ();
40
- xmlReader .parse ( new InputSource (new StringReader (xml_con )) ); // parse xml
40
+ xmlReader .parse (new InputSource (new StringReader (xml_con ))); // parse xml
41
41
return "ok" ;
42
42
} catch (Exception e ) {
43
43
System .out .println (e );
@@ -47,7 +47,7 @@ public String xxe_xmlReader(HttpServletRequest request) {
47
47
48
48
49
49
@ RequestMapping (value = "/xmlReader_fix" , method = RequestMethod .POST )
50
- public String xxe_xmlReader_fix (HttpServletRequest request ) {
50
+ public String xxe_xmlReader_fix (HttpServletRequest request ) {
51
51
try {
52
52
String xml_con = Tools .getRequestBody (request );
53
53
System .out .println (xml_con );
@@ -58,7 +58,7 @@ public String xxe_xmlReader_fix(HttpServletRequest request) {
58
58
xmlReader .setFeature ("http://xml.org/sax/features/external-general-entities" , false );
59
59
xmlReader .setFeature ("http://xml.org/sax/features/external-parameter-entities" , false );
60
60
//fix code end
61
- xmlReader .parse ( new InputSource (new StringReader (xml_con )) ); // parse xml
61
+ xmlReader .parse (new InputSource (new StringReader (xml_con ))); // parse xml
62
62
63
63
return "ok" ;
64
64
} catch (Exception e ) {
@@ -69,13 +69,13 @@ public String xxe_xmlReader_fix(HttpServletRequest request) {
69
69
70
70
71
71
@ RequestMapping (value = "/SAXBuilder" , method = RequestMethod .POST )
72
- public String xxe_SAXBuilder (HttpServletRequest request ) {
72
+ public String xxe_SAXBuilder (HttpServletRequest request ) {
73
73
try {
74
74
String xml_con = Tools .getRequestBody (request );
75
75
System .out .println (xml_con );
76
76
77
77
SAXBuilder builder = new SAXBuilder ();
78
- org .jdom2 .Document document = builder .build ( new InputSource (new StringReader (xml_con )) ); // cause xxe
78
+ org .jdom2 .Document document = builder .build (new InputSource (new StringReader (xml_con ))); // cause xxe
79
79
return "ok" ;
80
80
} catch (Exception e ) {
81
81
System .out .println (e );
@@ -84,7 +84,7 @@ public String xxe_SAXBuilder(HttpServletRequest request) {
84
84
}
85
85
86
86
@ RequestMapping (value = "/SAXBuilder_fix" , method = RequestMethod .POST )
87
- public String xxe_SAXBuilder_fix (HttpServletRequest request ) {
87
+ public String xxe_SAXBuilder_fix (HttpServletRequest request ) {
88
88
try {
89
89
String xml_con = Tools .getRequestBody (request );
90
90
System .out .println (xml_con );
@@ -93,7 +93,7 @@ public String xxe_SAXBuilder_fix(HttpServletRequest request) {
93
93
builder .setFeature ("http://apache.org/xml/features/disallow-doctype-decl" , true );
94
94
builder .setFeature ("http://xml.org/sax/features/external-general-entities" , false );
95
95
builder .setFeature ("http://xml.org/sax/features/external-parameter-entities" , false );
96
- org .jdom2 .Document document = builder .build ( new InputSource (new StringReader (xml_con )) );
96
+ org .jdom2 .Document document = builder .build (new InputSource (new StringReader (xml_con )));
97
97
98
98
return "ok" ;
99
99
} catch (Exception e ) {
@@ -102,13 +102,13 @@ public String xxe_SAXBuilder_fix(HttpServletRequest request) {
102
102
}
103
103
104
104
@ RequestMapping (value = "/SAXReader" , method = RequestMethod .POST )
105
- public String xxe_SAXReader (HttpServletRequest request ) {
105
+ public String xxe_SAXReader (HttpServletRequest request ) {
106
106
try {
107
107
String xml_con = Tools .getRequestBody (request );
108
108
System .out .println (xml_con );
109
109
110
110
SAXReader reader = new SAXReader ();
111
- org .dom4j .Document document = reader .read ( new InputSource (new StringReader (xml_con )) ); // cause xxe
111
+ org .dom4j .Document document = reader .read (new InputSource (new StringReader (xml_con ))); // cause xxe
112
112
113
113
return "ok" ;
114
114
} catch (Exception e ) {
@@ -118,7 +118,7 @@ public String xxe_SAXReader(HttpServletRequest request) {
118
118
}
119
119
120
120
@ RequestMapping (value = "/SAXReader_fix" , method = RequestMethod .POST )
121
- public String xxe_SAXReader_fix (HttpServletRequest request ) {
121
+ public String xxe_SAXReader_fix (HttpServletRequest request ) {
122
122
try {
123
123
String xml_con = Tools .getRequestBody (request );
124
124
System .out .println (xml_con );
@@ -127,7 +127,7 @@ public String xxe_SAXReader_fix(HttpServletRequest request) {
127
127
reader .setFeature ("http://apache.org/xml/features/disallow-doctype-decl" , true );
128
128
reader .setFeature ("http://xml.org/sax/features/external-general-entities" , false );
129
129
reader .setFeature ("http://xml.org/sax/features/external-parameter-entities" , false );
130
- org .dom4j .Document document = reader .read ( new InputSource (new StringReader (xml_con )) );
130
+ org .dom4j .Document document = reader .read (new InputSource (new StringReader (xml_con )));
131
131
132
132
return "ok" ;
133
133
} catch (Exception e ) {
@@ -231,7 +231,7 @@ public String xxeDocumentBuilderReturn(HttpServletRequest request) {
231
231
NodeList child = rootNode .getChildNodes ();
232
232
for (int j = 0 ; j < child .getLength (); j ++) {
233
233
Node node = child .item (j );
234
- buf .append ( node .getNodeName () + ": " + node .getTextContent () + "\n " );
234
+ buf .append (node .getNodeName () + ": " + node .getTextContent () + "\n " );
235
235
}
236
236
}
237
237
sr .close ();
@@ -265,8 +265,8 @@ public String DocumentBuilder(HttpServletRequest request) {
265
265
for (int j = 0 ; j < child .getLength (); j ++) {
266
266
Node node = child .item (j );
267
267
// 正常解析XML,需要判断是否是ELEMENT_NODE类型。否则会出现多余的的节点。
268
- if (child .item (j ).getNodeType () == Node .ELEMENT_NODE ) {
269
- result .append ( node .getNodeName () + ": " + node .getFirstChild ().getNodeValue () + "\n " );
268
+ if (child .item (j ).getNodeType () == Node .ELEMENT_NODE ) {
269
+ result .append (node .getNodeName () + ": " + node .getFirstChild ().getNodeValue () + "\n " );
270
270
}
271
271
}
272
272
}
@@ -387,7 +387,7 @@ public String XMLReaderVul(HttpServletRequest request) {
387
387
SAXParserFactory spf = SAXParserFactory .newInstance ();
388
388
SAXParser saxParser = spf .newSAXParser ();
389
389
XMLReader xmlReader = saxParser .getXMLReader ();
390
- xmlReader .parse ( new InputSource (new StringReader (xml_con )) );
390
+ xmlReader .parse (new InputSource (new StringReader (xml_con )));
391
391
return "test" ;
392
392
} catch (Exception e ) {
393
393
System .out .println (e .toString ());
@@ -407,12 +407,17 @@ public String XMLReaderSec(HttpServletRequest request) {
407
407
xmlReader .setFeature ("http://apache.org/xml/features/disallow-doctype-decl" , true );
408
408
xmlReader .setFeature ("http://xml.org/sax/features/external-general-entities" , false );
409
409
xmlReader .setFeature ("http://xml.org/sax/features/external-parameter-entities" , false );
410
- xmlReader .parse ( new InputSource (new StringReader (xml_con )) );
410
+ xmlReader .parse (new InputSource (new StringReader (xml_con )));
411
411
return "test" ;
412
412
} catch (Exception e ) {
413
413
System .out .println (e .toString ());
414
414
return "except" ;
415
415
}
416
416
}
417
417
418
+
419
+ public static void main (String [] args ) throws Exception {
420
+
421
+ }
422
+
418
423
}
0 commit comments