Так что это может быть длинный, длинный выстрел, но я полностью зациклен на том, что может вызвать эту проблему:Что может быть 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 - Весь инструмент пахнет полу-рыбным для меня, так что я мог бы быть чем-то стоит исследовать дальше. Кто-нибудь еще слышал об этом наборе инструментов?
@PaulRoub он не говорит о порядке параметров, но значение каждого параметра было перетасовано 'param = ofo'. –
Эй, откуда взялись значения queryParams? Если они будут схвачены с веб-страницы, их можно легко изменить с помощью чего-либо от переводчиков до ботов. – jjbskir
@jjbskir они действительно схвачены с DOM главной страницы, поэтому я знаю, что с ними можно столкнуться - я хотел бы узнать больше, что с ними связано. Строки содержатся в именах классов и атрибутах данных. Большинство из них являются случайными буквенно-цифровыми строками à la '/ [a-z0-9] {32}/i' – m90