HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как анализировать POST запросы в веб-браузере
Современные веб-сайты становятся всё сложнее, используют всё больше библиотек и веб технологий. Для целей отладки разработчиками сложных веб-сайтов и веб-приложений потребовались новые инструменты. Ими стали «Инструменты разработчика» интегрированные в сами веб-браузеры:
- Chrome DevTools
- Firefox Developer Tools
Они по умолчанию поставляются с браузерами (Chrome и Firefox) и предоставляют много возможностей по оценке и отладке сайтов для самых разных условий. К примеру, можно открыть сайт или запустить веб-приложение как будто бы оно работает на мобильном устройстве, или симулировать лаги мобильных сетей, или запустить сценарий ухода приложения в офлайн, можно сделать скриншот всего сайта, даже для больших страниц, требующих прокрутки и т.д. На самом деле, Инструменты разработчика требуют глубокого изучения, чтобы по-настоящему понять всю их мощь.
В предыдущих статьях я уже рассматривал несколько практических примеров использования инструментов DevTools в браузере:
- Статический анализ исходного кода веб-сайта в браузере
- Анализ динамически генерируемых с помощью JavaScript сайтов и сайтов с подгружаемым контентом (поиск ссылок на видео, изображения, на подгружаемый контент)
Эта небольшая заметка посвящена анализу POST запросов. Мы научимся просматривать отправленные методом POST данные прямо в самом веб-браузере. Научимся получать их в исходном («сыром») виде, а также в виде значений переменных.
Я буду показывать на примере сайта http://spys.one/en/free-proxy-list/ из статьи про прокси. (На самом деле, это простейший пример — в качестве более сложных примеров, попробуйте самостоятельно разобраться, например, в POST GMail при открытии и других действий с письмами).
По фрагменту исходного кода страницы видно, что данные из формы передаются методом POST, причём используется конструкция onChange=»this.form.submit();»:
Несмотря на необычность решения — отсутствует кнопка «Отправить», а отправка данных происходит при любом изменении поля , это вполне простой пример, поддающийся анализу статичного кода — то есть можно собрать имена всех ‘ов, собрать их значения и составить строку. Но я предлагаю познакомиться с намного более быстрым способом анализа.
Как увидеть данные, переданные методом POST, в Google Chrome
Итак, открываем (или обновляем, если она уже открыта) страницу, от которой мы хотим узнать передаваемые POST данные. Теперь открываем инструменты разработчика (в предыдущих статьях я писал, как это делать разными способами, например, я просто нажимаю F12):
Теперь отправляем данные с помощью формы.
Переходим во вкладку «Network» (сеть), кликаем на иконку «Filter» (фильтр) и в качестве значения фильтра введите method:POST:
Как видно на предыдущем скриншоте, был сделан один запрос методом POST, кликаем на него:
- Header — заголовки (именно здесь содержаться отправленные данные)
- Preview — просмотр того, что мы получили после рендеренга (это же самое показано на странице сайта)
- Response — ответ (то, что сайт прислал в ответ на наш запрос)
- Cookies — кукиз
- Timing — сколько времени занял запрос и ответ
Поскольку нам нужно увидеть отправленные методом POST данные, то нас интересует столбец Header.
Там есть разные полезные данные, например:
- Request URL — адрес, куда отправлена информация из формы
- Form Data — отправленные значения
Пролистываем до Form Data:
Там мы видим пять отправленных переменных и из значения.
Если нажать «view source», то отправленные данные будут показаны в виде строки:
xpp=5&xf1=0&xf2=0&xf4=0&xf5=0
Вид «view parsed» — это вид по умолчанию, в котором нам в удобном для восприятия человеком виде показаны переданные переменные и их значения.
Как увидеть данные, переданные методом POST, в Firefox
В Firefox всё происходит очень похожим образом.
Открываем или обновляем нужную нам страницу.
Открываем Developer Tools (F12).
Отправляем данные из формы.
Переходим во вкладку «Сеть» и в качестве фильтра вставляем method:POST:
Кликните на интересующий вас запрос и в правой части появится окно с дополнительной информацией о нём:
Переданные в форме значения вы увидите если откроете вкладку «Параметры»:
Если вы хотите получить отправленные данные в виде строки, то вернитесь во вкладку «Заголовки» и нажмите кнопку «Изменить и снова отправить», в открывшейся области пролистните до «Тело запроса»:
Как вы уже поняли, здесь не только можно скопировать строку POST, но и отредактировать её и отправить запрос заново.
Другие фильтры инструментов разработчика
Для Chrome кроме уже рассмотренного method:POST доступны следующие фильтры:
Связанные статьи:
- Анализ динамически генерируемых с помощью JavaScript сайтов и сайтов с подгружаемым контентом (поиск ссылок на видео, изображения, на подгружаемый контент) (88.2%)
- lulzbuster – инструмент для быстрого поиска скрытых файлов и папок на сайтах (62.3%)
- Статический анализ исходного кода веб-сайта в браузере (60.3%)
- Аудит безопасности роутера SKYWORTH GN542VF — взламываем пароль не выходя из веб-браузера! (59.9%)
- Как использовать User Agent для атак на сайты (57.5%)
- Reconnoitre: помощник в анализе веб-приложений (RANDOM — 50.4%)
факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!
Как определить куда идет запрос?
Не знаю, возможно ли это. Делаю клиент для сайта. В html выведены я вижу ссылку, например site.ru/user/id/5 , а реальная ссылка такая: site.ru/user/index.php?id=5 (наобум узнал). Как можно узнать куда в конце концов приходит запрос? Получится ли это сделать в Chrome?
Отслеживать
задан 18 окт 2017 в 6:12
user194625 user194625
@Flippy, поясните, что вы имеете в виду под «в html выведены», это на веб-странице в браузере или в коде страницы?
18 окт 2017 в 6:21
@Sergey Glazirin, в html коде. Причем там есть «грязные ссылки» непонятной архитектуры типа chat/wi:int:=107:form:msg:IFL:;
– user194625
18 окт 2017 в 7:31
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Это зависит от того, на чем сайт написан. Перенаправление может быть на клиентском уровне (в html или ajax), тогда его возможно отследить, а если перенаправление настроено на серверном уровне (java servlet например), тогда вы никогда не узнаете, куда сервер ваши запросы отправляет, вы сможете увидеть только адрес входа, куда ВЫ их отправляете, и ответ сервера в виде html, json, или еще чего-то. А что происходит внутри сервера — остается внутри сервера.
Отслеживать
ответ дан 18 окт 2017 в 6:57
user236980 user236980

В Chrome есть DevTools, который открывается через f12, далее открыть вкладку Network, в ней выбрать раздел xhr или all, далее нажать на вашу ссылку, чтобы прошел запрос, он сразу же должен отобразиться в списке. Выделите его и в появившемся описании выбрать раздел headers. В нем в списке General найти пункт «Request URL»
Отслеживать
ответ дан 18 окт 2017 в 6:30
Sergey Glazirin Sergey Glazirin
5,628 5 5 золотых знаков 19 19 серебряных знаков 36 36 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Просмотр сообщений журнала в Консоли на Mac

Используйте Консоль для просмотра журнальных сообщений, собранных компьютером и подключенными к нему устройствами. Такие журнальные сообщения содержат сведения о системных событиях, текст диалогов, записи об ошибках, состоянии системы и другую информацию. При возникновении неполадки есть возможность найти подробную информацию о причине ее возникновения либо в журнальных сообщениях, либо в записях об активности.
Примечание. Если Вы вошли в систему не как администратор, необходимо ввести имя и пароль администратора для просмотра записей журналов.

- В приложении «Консоль»
на Mac в списке устройств слева выберите устройство, для которого Вы хотите просмотреть сообщения журнала (например, Mac, iPhone, iPad, Apple Watch или Apple TV). Если список устройств не отображается, нажмите кнопку «Боковая панель»
на панели «Избранное». - Нажмите «Начать» в панели инструментов. В окне появятся сообщения журнала, относящиеся к выбранному устройству. Тип журнального сообщения обозначается точкой в столбце «Тип».
- Красная точка: сбои в работе.
- Желтая точка: ошибки.
- Темно-серая точка: журнальные сообщения, связанные с отладкой.
- Светло-серая точка: информационные журнальные сообщения.
Примечание. Если точки в столбце «Тип» нет, значит, сообщение журнала относится к типу «По умолчанию».

- Как увидеть журнальное сообщение целиком в столбце «Сообщения». Нажмите журнальное сообщение и нажмите стрелку вправо или выберите «Вид» > «Развернуть выбранную строку». Чтобы снова сократить сообщение до одной строки, нажмите стрелку влево или выберите «Вид» > «Свернуть выбранную строку».
- Просмотр полных журнальных сообщений. Нажмите «Подробнее» в сведениях о журнальном сообщении в нижней половине окна Консоли. Если сведения о журнальном сообщении не отображаются, нажмите кнопку «Информация» в панели инструментов (или воспользуйтесь панелью Touch Bar) или выберите «Вид» > «Показать панель свойств». Чтобы отображалось меньше сведений, нажмите «Скрыть».
- Поиск конкретных журнальных сообщений в текущей информации. Нажмите журнальное сообщение и нажмите Command-F. См. Поиск текста в сообщениях журнала и отчетах.
Просматривая журнальные сообщения, можно перемещать столбцы и менять их перечень, находить последние записи об активности, применять сохраненные поисковые запросы. См. Настройка окна журнала.
Просмотр очереди запросов в MySQL
Большинство запросов к базе данных на сайтах выполняются за сотые доли секунды. А если запрос получает данные дольше, то необходимо провести его оптимизацию. То есть пересмотреть его построение, способ объединения таблиц, наличие ограничений по выборке и другие существенные особенности запроса, которые влияют на время его выполнения.
Но чтобы найти медленный запрос, требуется либо обратиться за помощью к CMS (это лучший вариант, если в CMS есть такая функция). Либо включить отладчик на PHP или написать свой измеритель времени выполнения. Но есть и другой способ. Можно посмотреть очередь запросов в MySQL напрямую. Для этого следует лишь выполнить в SQL консоли запрос:
SELECT * FROM information_schema.processlist;
Учитывая что запросы от сайта к базе данных выполняются за доли секунд, придётся много раз выполнять эту команду, в надежде поймать «тормозящую» операцию. Делать это вручную утомительно, но можно воспользоваться утилитой «mysqladmin». Её необходимо запустить с несколькими параметрами из консоли сервера, чтобы она раз в секунду сама показывала список очереди MySQL. Команда будет выглядеть так:
mysqladmin -h ip_адрес -P порт -u польз --verbose -p -i 1 processlist
- -h — ip адрес сервера (хоста) с базой данных. По умолчанию «localhost». В команде нужно заменить «ip_адрес» на ip адрес.
- -P — порт базы данных. По умолчанию «3306». В команде нужно заменить «порт» на число.
- -u — имя пользователя базы данных. По умолчанию «root». В команде нужно заменить «польз» на логин.
- -p — запоминает введённый пароль.
- -i — интервал в секундах между запросами.
- —verbose — показать полную информацию о запросе. Иначе SQL строка запроса будет обрезаться, чтобы таблица вошла в терминал по ширине.
- id запроса
- Имя пользователя
- Имя базы данных
- Хост (ip адрес)
- Тип команды
- Время исполнения
- SQL строку запроса
- Размер ответа
mysqladmin -h ip_адрес -P порт -u польз. kill id_запроса
В любом случае, даже при отображении очереди раз в секунду через mysqladmin, существует возможность не поймать с первого раза «тормозящий» запрос. Ведь длятся они меньше одной секунды. Поэтому придётся набраться терпения.
