2015-09-14 2 views
16

Так что это может быть длинный, длинный выстрел, но я полностью зациклен на том, что может вызвать эту проблему:Что может быть shufflling параметров строки запроса, построенных в JavaScript?

Я доставляю клиентскую версию JavaScript, которая анализирует определенные параметры на странице, где она встроена, использует эти параметры для построения URL и ввести в IFRAME, используя этот URL на страницу, как:

var queryParams = { 
    param: 'foo' 
    , other: 'bar' 
}; 

превращается в:

<iframe src="http://example.net/iframes/123?param=foo&other=bar"></iframe> 

Это работает довольно хорошо, я поставлять около 1500000 reques ts в день. Тем не менее, я недавно заметил, что примерно 3,000 случаев в день значения параметров запроса перемешиваются, так STH, как это получает запрошенный:

<iframe src="http://example.net/iframes/123?param=ofo&other=rba"></iframe> 

Судя по журналам это связано с конкретными пользователями, и jumbling символов будет заново при каждом запросе, так что я могу видеть последовательности, как это, когда пользователь просматривает сайт с нескольких страниц с помощью сценария:

108.161.183.122 - - [14/Sep/2015:15:18:51 +0000] "GET /iframe/ogequl093iwsfr8n?param=3a1bc2 HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=1" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0" 
108.161.183.122 - - [14/Sep/2015:15:19:07 +0000] "GET /iframe/ogequl093iwsfr8n?param=a21b3c HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=2" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0" 
108.161.183.122 - - [14/Sep/2015:15:19:29 +0000] "GET /iframe/ogequl093iwsfr8n?param=ba132c HTTP/1.0" 401 11601 "http://www.example.net/gallery?page=3" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0" 

401 происходит на цели, так как сервер ожидает param=abc123.

Я также заметил, что большинство ошибок происходит в Firefox и Safari, а Google Chrome не запрашивает ни одного ошибочного URL-адреса.

Библиотека, которую я использую для превращения объекта в строку запроса: query-string - но, глядя на исходный код, я не вижу никакого потенциала для такой ошибки там, ничего не делается для значений, которые не делается с ключами (которые не перепутаны).

Неужели кто-нибудь сталкивался с чем-либо подобным? Это какое-то странное расширение браузера? Это столкновение моего скрипта с другой библиотекой, расширяющей прототипы? Это вредоносное ПО? Разве это то, о чем я совершенно не подозреваю? Я был бы благодарен за любой намек, потому что я действительно невежественный, и это действительно сводит меня с ума.

EDIT: Я только что обнаружил, что еще одна из наших служб, ориентированных на общественность, в настоящее время исследуется по названию «Burp Suite». Взглянув на их веб-сайт, я вижу, что у них есть инструмент под названием «Полезная нагрузка», который, как представляется, делает в значительной степени то, что описано здесь: https://portswigger.net/burp/help/intruder_gettingstarted.html или здесь: https://portswigger.net/burp/help/intruder_using.html#uses_enumerating - Весь инструмент пахнет полу-рыбным для меня, так что я мог бы быть чем-то стоит исследовать дальше. Кто-нибудь еще слышал об этом наборе инструментов?

+0

@PaulRoub он не говорит о порядке параметров, но значение каждого параметра было перетасовано 'param = ofo'. –

+1

Эй, откуда взялись значения queryParams? Если они будут схвачены с веб-страницы, их можно легко изменить с помощью чего-либо от переводчиков до ботов. – jjbskir

+0

@jjbskir они действительно схвачены с DOM главной страницы, поэтому я знаю, что с ними можно столкнуться - я хотел бы узнать больше, что с ними связано. Строки содержатся в именах классов и атрибутах данных. Большинство из них являются случайными буквенно-цифровыми строками à la '/ [a-z0-9] {32}/i' – m90

ответ

3

Как я уже упоминал здесь Google Analytics Event Permutation есть конкретная версия (по крайней мере 1.0.37) в Firefox дополнения «Cliqz», имеющих анти-отслеживания-функциональность встроенный.

+0

Спасибо. Я могу подтвердить, что это расширение также перетасовывает наши параметры. Вы еще посмотрели код расширения? Вы можете понять, когда «токен» будет квалифицироваться как «badToken» здесь: https://gist.github.com/m90/e9df0576ac6f06f864f2? – m90

+0

Мы были счастливы, когда нашли фактическую строку кода, делающую тасование. Я не думаю, что мы хотим делать больше исследований ... –

+0

Я думаю, что я получил то, что происходит в нашем случае: скрипт проверяет токены с запросами, и когда он встречает дублирующее значение выше 8 символов, он предполагает, что это идентификатор отслеживания : https://gist.github.com/m90/e9df0576ac6f06f864f2#file-badtokens-js-L36 - слишком плохо, что это ключ API, переданный через GET в нашем случае ... – m90

0

Мне кажется маловероятным, что это поведение имеет корни в вашем или коде строки запроса. Учитывая, что значения строки запроса могут быть свободно изменены, я подозреваю, что это то, что происходит, - не забывайте, что это составляет 0,2% ваших запросов.

Есть несколько вещей, которые я бы уточнил. Знаете ли вы, направляются ли эти запросы с других сайтов, на ваш собственный сайт или сделаны напрямую? Знаете ли вы, соответствует ли какой-либо из исходных IP-адресов известным ботам или веб-сканерам? Являются ли запросы из разных источников или небольшим подмножеством повторных посетителей?

Возможно, что бот или веб-искатель "lightly probing your site" или тестирование дублирующих страниц или вводящих в заблуждение параметров.

+0

Не должны ли боты и сканеры идентифицировать себя со своей строкой UA? Все зарегистрированные запросы используют строки UA реального браузера. – m90

+0

Хорошая мысль; поэтому мы исключаем очевидных веб-сканеров (если только что-то нечеткое происходит, но вы должны проверить IP-адреса). Это не является окончательным для других ботов, хотя вы можете установить строку UA - например. бот, ищущий уязвимости, не назовет себя. – Ninjakannon

7

Не так много анализировать с этого момента, а так как вы ищете подсказки; это скорее длинный комментарий, чем ответ.

Вредоносная программа, расположенная на компьютере клиента (или компьютере) или на вашем веб-сервере; или неизвестный искатель может вызвать это, что маловероятно. Для меня, похоже, на ваше приложение нападают.

Давайте посмотрим;

  • Реальный пример (в комментариях), показывает, что 128-битовые шестнадцатеричные ключи доступа будучи перемешаны. (значения accessKey param)
  • Только значения получают перетасованные и не являются ключами.
  • Вы говорите, что запросы поступают от конкретных пользователей.
  • Вы говорите, что запросы поступают от конкретных клиентов-клиентов (Firefox и Safari).

Что проверить/сделать;

  • Проверьте, работает ли ваша система регистрации. Если вы используете сторонний, настраиваемый регистратор, это может испортить ситуацию. (example)
  • Воспроизведение: Возьмите тот же точный набор параметров; используйте ту же версию браузера (ов) и посмотрите, совпадают ли результаты. Если это так, это может быть проблема с версией браузера, что маловероятно.
  • Проверьте, есть ли другие Firefox и Safari пользователи (с теми же версиями), которые делают НЕ опыт этого.
  • Поскольку вы говорите, что это всего лишь небольшой процент запросов, проверьте, выполнены ли соответствующие запросы сразу после другого. (Запросы одного вида менее чем за секунду?)
  • Попробуйте отслеживание источник запросов. Они исходят от источника, которого вы подозреваете? Можете ли вы связать информацию из разных запросов друг с другом? Несколько IP-адресов образуют подсеть? Тот же IP-адрес с использованием разных учетных записей? Такая же учетная запись использует разные IP-адреса за короткий промежуток времени?
  • Есть инструменты, такие как apache-scalp, mod_sec, lorg для проверки/анализа больших файлов журнала для извлечения возможных атак.
  • Вы также можете использовать некоторые из упомянутых методов here, чтобы вручную выявлять или блокировать подозрительные запросы.
0

Некоторые роботы сканируют ваш сайт, это вполне нормально. Если вы не хотите, чтобы он загружал ваш сервер, заблокируйте IP-адрес запроса.

+0

Вещь, похоже, является обычным браузером (судя по строке UA), и весь трафик поступает с разных IP-адресов. Поэтому маловероятно, что это просто «какой-то робот». – m90

+0

UA Strings можно легко подделать, так что это не очень хороший показатель. –

4

Я Tomas и Я инженер-программист в CLIQZ.

Мы - немецкий стартап, который интегрирует поисковые и инновационные функции конфиденциальности в браузеры.Это действительно результат нашей функции Anti-Tracking. Аналогичный вопрос был задан также по телефону reddit и в another question on stackoverflow. Он уже ответил на обе должности, поэтому я просто цитирую тот же ответ здесь:

CLIQZ Анти Tracking не предназначен для блокирования отслеживания в целом, а только отслеживание отдельных пользователей - которые мы считаем нарушение конфиденциальности наших пользователей и, следовательно, неуместны. В отличие от других антислеживающих систем, наша система не блокирует сигналы полностью; таким образом, владельцы веб-сайтов могут получать данные для законных целей, таких как подсчет посещений.

Чтобы предотвратить идентификацию пользователей (например, с помощью хэшей JavaScript), CLIQZ Anti Tracking фактически переставляет строки. . Всякий раз, когда в наших данных появляется новый трекер, наша система изначально рассматривает его как идентификатор, определяющий пользователя, и изменяет строку, чтобы превентивно защитить наших пользователей. В нашей системе используются так называемые методы k-анонимности. Если он видит одну и ту же строку для события с несколькими пользователями, которые появляются независимо в течение нескольких дней, он помещает его в белый список законных, не идентифицирующих трекеров. После того, как трекер включен в белый список, он остается немодифицированным, а владельцы веб-сайтов видят исходную строку. Другими словами, CLIQZ Anti Tracking ограничивает функциональность законных трекеров только временно. Как только становится ясно, что трекер не нарушает конфиденциальность наших пользователей, все работает как обычно. Конфиденциальность для нас чрезвычайно важна, и мы считаем, что эта технология необходима для защиты наших пользователей от отслеживания.

Надеюсь, это поможет.

Смежные вопросы