• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья JS шепчет ночью. А Jsmon всё записывает

supaplayer

floppy-диск
Пользователь
Регистрация
19.05.2025
Сообщения
6
Реакции
34
Всем привет!
Судя по реакции на прошлую статью — лайки, комменты, спасибо — она вам зашла. Это, честно говоря, сильно смотивировало меня написать ещё одну.
Понимаю, что эта тема, скорее всего, покажется вам менее полезной, чем SQL инъекция — всё-таки, если судить по форуму, каждая третья тема в разделе “Уязвимости web-приложений” связано со скулей) Обидно конечно.
Но, по моему мнению, эта статья будет реально полезна тем, кто занимается веб пентестом. Особенно тем, кто хочет вытянуть максимум из клиентской части и не пропустить ничего важного.
Если вам нужно подробное пособие по рекону и анализу JS файлов — дайте знать, с радостью напишу как я это делаю.
Ладно, хватит прелюдий, давайте к делу.

Что же такое Jsmon?
Если заглянуть на GitHub, то:

Используя этот скрипт, вы можете настроить ряд файлов JavaScript на веб-сайтах, которые вы хотите отслеживать. Каждый раз, когда вы запускаете этот скрипт, эти файлы будут извлечены и сравнены с ранее извлеченной версией. Если они изменились, вы получите уведомление через Telegram с сообщением, содержащим ссылку на скрипт, измененные размеры файлов и файл diff для легкой проверки изменений

Проще говоря, Jsmon — это инструмент, который мониторит JS файлы на вашем таргете. Он раз в определенное время шлёт запросы, сравнивает содержимое и, если находит изменения — стучит вам в Telegram. Причём не просто «что-то поменялось», а с удобной HTML отчёткой, где всё разложено по полочкам: что именно изменилось, где и как.

Вы можете спросить: а наху это надо?
А я отвечу: чтобы быть первым, кто протестирует новый функционал сайта. И чтобы не пропустить вкусные вещи, которые разработчики случайно (или не очень) оставили — будь то API ключи, пароли, слитые пути и прочее добро.

Дело в том, что разработчики довольно часто оставляют в JS файлах всякие ключи — особенно в комментариях. Просто забывают убрать.

Что касается функционала: если вы вдруг заметили, что в JS файле внезапно появилось несколько сотен (а то и тысячу) строк кода — скорее всего, на сайте появился новый функционал. А как мы знаем, именно в свежем коде чаще всего и прячутся баги.

На этом с теорией всё, и так получилось объемно. Переходим к практике.

Скачиваем Jsmon:
Код:
git clone https://github.com/robre/jsmon.git
cd jsmon
python3 setup.py install

И через любой текстовый редактор добавляем свои данные от тг бота в файле jsmon.py
1748564428294.png




Кстати, в Jsmon можно добавить и оповещения в Slack, но, если честно, я им никогда не пользовался. Телеги мне с головой хватает.
Теперь настроим автоматический запуск через cron, чтобы jsmon сам запускался регулярно:
Код:
crontab -e

И в самом конце добавим строку:
Код:
@daily /<путь до jsmon>/jsmon.sh

Это будет запускать Jsmon каждый день, ровно в полночь.
Можете указать своё значение вместо @daily, если хотите запускать чаще или в другое время. Но, по моему опыту, прогон раз в сутки — самое адекватное решение: не грузит лишний раз и при этом держит вас в курсе.

Если что-то пошло не так и разобраться самому не вышло — вот годный гайд по установке: гайд

Теперь добавим JS файлы, которые будем мониторить.
В папке /targets нужно создать текстовый файл (например, microsoft.txt) и вставить в него ссылки на все JS-файлы, которые вы собрали для анализа.
1748564536499.png

У нас есть вот такой одностраничный сайт.
На первый взгляд — ничего особенного, обычная болванка без каких-либо фич. Но давайте всё же посмотрим че по JS.
1748564556648.png


Да, есть 1 js файл. Я его проанализировал, и, честно говоря, ничего интересного не нашёл.
1748564565749.png


Ну ладно, давайте всё таки кинем его в jsmon.
Мало ли — сегодня ничего нет, а завтра появится что-то интересное. Кто знает, может разработчик решит по-быстрому выкатить новую фичу и забудет прибрать за собой.

Я создал файл localhost в папке /targets и закинул туда ссылку на JS-файл с этого сайта.
1748564591085.png

Теперь давайте запустим jsmon.sh, чтобы изменения вступили в силу:
1748564599124.png

Всё, теперь остаётся только ждать.

:zns6: (Предсатвим, что прошло 5 дней)

Проснувшись утром, я увидел вот это:
1748564654697.png

Открыв файл — мягко говоря, удивился.
1748564668053.png

Конечно, в реальной жизни такие секреты скорее удаляют, а не добавляют. Но суть в том, что с jsmon вы всё равно это заметите. Даже если это временно, случайно или "на день".
Не судите строго этот пример — он учебный, но вполне отражает, как работает инструмент и зачем он нужен.


Если статья была полезной — не поленитесь нажать лайк, оставить коммент или просто написать «спасибо» в теме.
Если будет интерес к теме — сделаю статью по JS-рекону и парсингу. Там тоже много интересного.
Всем мир, багов и денег! :smile50::smile10:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх