• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

Java Агент. Post Запрос С Авторизацией

  • Автор темы Автор темы erdi
  • Дата начала Дата начала

erdi

Green Team
20.08.2008
264
17
Есть Java агент, который по REST API создает POST запрос.
Java:
static class MyAuthenticator extends Authenticator {
   public PasswordAuthentication getPasswordAuthentication() {
	  System.out.println("trying to authenticate");
	  return new PasswordAuthentication("login", "password".toCharArray());
   }
}
 
Authenticator.setDefault(new MyAuthenticator());
URL urlObj = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
System.out.println("Соединение с " + url + " установлено.");
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/xml");
con.setDoOutput(true);
OutputStream outputStream = con.getOutputStream();
 
// формирование xml документа
XMLOutputter xmlOutput = new XMLOutputter();
Format format = Format.getPrettyFormat();
 
xmlOutput = new XMLOutputter(format);
xmlOutput.output(doc, outputStream);
 
System.out.println("Получение ответа от сервера..");
 
StringBuffer result = new StringBuffer();
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
   result.append(line).append("\n");
}
 
respCode = con.getResponseCode();

Данный агент успешно работал, но вот в моменте с переводом времени и обновления jvm, соответственно сервер с 8.5.5 обновился до 8.5.6, агент стал вываливаться с ошибкой "Router: Agent printing: Server redirected too many times (20)"
Причем что характерно, после перезагрузки сервера 1 раз агент работает корректно, но вот уже следующие запуски возвращают ошибку.
Были предположения на кодировку, т.к. при переходе на 8.5.6 в java по-умолчанию снова кодировка стала cp1251 вместо utf-8. Но выставления utf-8 в самом агенте не решает проблему.
Также были предположения на неправильные логин и пароль, но эта же ошибка при разных логинах и паролях и ведут они себя также(после перезагрузки сервера запускаются, после уже нет)
Агент не зависает. Сервера лотуса на AIX и SLES, под виндой нет сервером, поэтому не тестировалось. Логин и пароль доменного пользователя, сами сервера в домен заведены.
Может кто встречался с этой проблемой.
 
а может связано с сервисом - куда обращается агент (там чего-то поменяли)
 
на сервисе стоит ntlm аутентификация и недавно там были работы по блокировки входа со служебных учетных записей(в агенте используется такая учетка для утентификации), но
1) клянутся, что ничего серьезного в методе аутентификации не меняли
2) после рестарта сервера лотуса 1 раз агент выполняется нормально, а вот последующие запуски - вылетает
3) если запустить из-под eclipsa на локальной машине, то также все нормально сработает с этими же логином и паролем
если бы не 2 и 3 пункт, то однозначно по 1-му пункту недоговаривают чего-то.
Такое ощущение, как-будто кэшируется запрос и уже 2-й раз гоняет сам себя. Если бы кеш был на стороне сервиса, тогда перезагрузка лотуса не приводила бы к тому, что 1 раз агент срабатывал, значит что-то на стороне лотуса какой-то кэш включается или что-то из этого...пока идей нет с чем это может связано
 
эклипс на той же машине?
кешироваться может в привязке к IP
проверить запрос - поставить снифер (wireshark, tcpdump...)
 
обнаружил такую закономерность
1) агент изначально висит на входящих письмах и обрабатывает их. Если перестартовать роутер, тогда снова можно 1 письмо отправить и агент сработает
2) если агента повесить, например, на LS агента и запускать на сервере, то также он запустится 1 раз и снова будет выдавать ошибку. Но вот что перегрузить из тасков - пока не нашел. рестарт сервера естественно снова позволит запустить 1 раз агента из LS агента
 
а либы только штатные или есть "внешние", если есть - то где лежат (в БД или в ФС)?
 
commons-codec-1.6.jar, jdom-2.0.5.jar, jdom-2.0.5-contrib.jar
лежат как в ФС, так и БД
агент 3 месяца работал нормально без нареканий, сбой совпал с обновлением jvm под новый час. пояс(сбросились по-умолчанию все пермишины) + работы на стороне сервиса. И кто виноват не понятно. мы на их работы наговариваем, они на наши
 
тогда установить истину - поднять тестовый сервак без патча
 
после экспериментов с разными версиями и FP выяснилось следующее.
при откатах назад с 8.5.3.6 до 8.5.3.5 проблема не исчезала
на 9.0 было все ок
на 9.0.1 все ок
на 9.0.1 FP2 снова была ошибка с авторизацией при 2-м и последующих запросах до сервера с ntlm авторизацией
видимо ibm внесла какие-то глобальные изменения в свою версию java, в FP6 для 8.5.3 и FP2 для 9.0.1 :rolleyes:
 
на 9.0.1 FP2 снова была ошибка с авторизацией при 2-м и последующих запросах до сервера с ntlm авторизацией
авторизацию розлива 1.0 уже забанили все, почти... :rolleyes:




Добавлено:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD