XXE не работает, несмотря на то, что он не отключен в DocumentBuilder - PullRequest
0 голосов
/ 26 сентября 2019

Я новичок в 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 не отключен?Я не уверен, что я пропускаю здесь.Есть идеи?

...