Код: Выделить всё
String payload = "gmail.com"; // This string is user-controlled
var env = new HashTable();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
// some more env.put probably
var dirContext = new InitialDirContext(env);
var attributes = dirContext.getAttributes("dns:/" + payload);
// Do something with attributes
Мне не удалось найти никакой информации о возможных уязвимостях. ; просмотр кода DnsContextFactory и DnsContext также создает впечатление, что контролируемая пользователем часть отправляется непосредственно в преобразователь DNS. Поскольку пользователь технически может управлять сервером, который будет отвечать на DNS-запрос (путем размещения сервера имен), моя первоначальная мысль заключалась в том, что кто-то может переправить информацию, например «$superSecretEnvVar.evil-domain.com». Но мне не удалось найти никакой информации о дополнительной обработке строки.
Есть ли что-нибудь небезопасное в «доверии» пользовательскому вводу с помощью JNDI?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ame-unsafe