возможно ли с помощью xmlpullfactory XXE и миллиард смеется? Я пробовал ниже XML-кодXXE и МЛРД СМЕЕТСЯ
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE author [
<!ELEMENT author (#PCDATA)>
<!ENTITY js "Jo Smith">
]>
<author>&js;</author>
разобран выше XML-файл с помощью ниже Java код используется kxml2-2.3.0.jar
try
{
XmlPullParserFactory factory =XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
File file=new File("index.xml");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
fileReader.close();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES,true);
parser.setInput(new StringReader(stringBuffer.toString()));
while (true) {
int event = parser.nextToken();
if (event == XmlPullParser.START_TAG) {
System.out.println("Start-tag: " + parser.getName()) ;
}
else if (event == XmlPullParser.END_TAG) {
System.out.println("End-tag: " + parser.getName());
}
else if (event == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document: " +
parser.getText());
}
else if (event == XmlPullParser.TEXT) {
System.out.println("Text: " + parser.getText());
}
else if (event == XmlPullParser.CDSECT) {
System.out.println("CDATA Section: " +
parser.getText());
}
else if (event == XmlPullParser.COMMENT) {
System.out.println("Comment: " + parser.getText());
}
else if (event == XmlPullParser.DOCDECL) {
System.out.println("Document type declaration: " +
parser.getText());
}
else if (event == XmlPullParser.ENTITY_REF) {
System.out.println("Entity Reference: " +
parser.getName());
System.out.println("Entity Reference value: " +
parser.getText());
}
else if (event == XmlPullParser.IGNORABLE_WHITESPACE) {
System.out.println("Ignorable white space: " +
parser.getText());
}
else if (event == XmlPullParser.PROCESSING_INSTRUCTION)
{
System.out.println("Processing Instruction: " +
parser.getText());
}
else if (event == XmlPullParser.END_DOCUMENT) {
System.out.println("End Document: " +
parser.getText());
break;
} // end else if
} // end while
}
catch(Exception e)
{
e.printStackTrace();
}
ПРТ ВЫХОД КАК
Ignorable белого пространства:
декларации типа документа :
author [
<!ELEMENT author (#PCDATA)>
<!ENTITY js "Jo Smith">
]
Ignorable белое пространство: Start-тег: автор
Entity Reference: JS
Entity Reference значение: нулевое
Конечный тег: автор Ignorable белое пространство:
Заключительный документ: null
Но я хотел бы получить значение ссылки объекта как josmith.what будет проблема?
, когда я установил эту функцию, получил исключение в качестве неподдерживаемой функции. – user3748225
@ user3748225 Если код не может расширять сущность, он, по-видимому, не будет уязвим для DoSs расширения сущностей. –