• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

erdi

Green Team
20.08.2008
264
17
BIT
0
Есть 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, под виндой нет сервером, поэтому не тестировалось. Логин и пароль доменного пользователя, сами сервера в домен заведены.
Может кто встречался с этой проблемой.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
а может связано с сервисом - куда обращается агент (там чего-то поменяли)
 

erdi

Green Team
20.08.2008
264
17
BIT
0
на сервисе стоит ntlm аутентификация и недавно там были работы по блокировки входа со служебных учетных записей(в агенте используется такая учетка для утентификации), но
1) клянутся, что ничего серьезного в методе аутентификации не меняли
2) после рестарта сервера лотуса 1 раз агент выполняется нормально, а вот последующие запуски - вылетает
3) если запустить из-под eclipsa на локальной машине, то также все нормально сработает с этими же логином и паролем
если бы не 2 и 3 пункт, то однозначно по 1-му пункту недоговаривают чего-то.
Такое ощущение, как-будто кэшируется запрос и уже 2-й раз гоняет сам себя. Если бы кеш был на стороне сервиса, тогда перезагрузка лотуса не приводила бы к тому, что 1 раз агент срабатывал, значит что-то на стороне лотуса какой-то кэш включается или что-то из этого...пока идей нет с чем это может связано
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
эклипс на той же машине?
кешироваться может в привязке к IP
проверить запрос - поставить снифер (wireshark, tcpdump...)
 

erdi

Green Team
20.08.2008
264
17
BIT
0
обнаружил такую закономерность
1) агент изначально висит на входящих письмах и обрабатывает их. Если перестартовать роутер, тогда снова можно 1 письмо отправить и агент сработает
2) если агента повесить, например, на LS агента и запускать на сервере, то также он запустится 1 раз и снова будет выдавать ошибку. Но вот что перегрузить из тасков - пока не нашел. рестарт сервера естественно снова позволит запустить 1 раз агента из LS агента
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
а либы только штатные или есть "внешние", если есть - то где лежат (в БД или в ФС)?
 

erdi

Green Team
20.08.2008
264
17
BIT
0
commons-codec-1.6.jar, jdom-2.0.5.jar, jdom-2.0.5-contrib.jar
лежат как в ФС, так и БД
агент 3 месяца работал нормально без нареканий, сбой совпал с обновлением jvm под новый час. пояс(сбросились по-умолчанию все пермишины) + работы на стороне сервиса. И кто виноват не понятно. мы на их работы наговариваем, они на наши
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
тогда установить истину - поднять тестовый сервак без патча
 

erdi

Green Team
20.08.2008
264
17
BIT
0
после экспериментов с разными версиями и 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:
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
на 9.0.1 FP2 снова была ошибка с авторизацией при 2-м и последующих запросах до сервера с ntlm авторизацией
авторизацию розлива 1.0 уже забанили все, почти... :rolleyes:




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

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