Я новичок в XXE, и мне интересно, почему он не работает.Я проверяю безопасность моего Java-приложения, оно использует DocumentBuilderFactory, например:
final DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
final DocumentBuilder documentBuilder =
documentBuilderFactory.newDocumentBuilder();
documentBuilder.setEntityResolver(new CustomResolver());
Метод resolEntity () кода настраиваемого резольвера:
private final DefaultHandler defaultHandler;
@Override
public InputSource resolveEntity(final String publicId, final String systemId) throws IOException, SAXException {
return defaultHandler.resolveEntity(publicId, systemId);
}
Мой XXE:
<!DOCTYPE test [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "test.txt"> ]>
Когда я загружаю xml-файл, содержащий
<test><foo>&xxe;</foo></test>
, в мое приложение, я не получаю никаких ошибок, но представление XML не показывает содержимое test.txt, оно просто пустое.Однако, если поставить "test123.txt" в качестве внешнего объекта, я получу
javax.servlet.ServletException: java.lang.RuntimeException: java.io.FileNotFoundException: /home/user/test2.txt
, что может указывать, что XXE не отключен?Я не уверен, что я пропускаю здесь.Есть идеи?