JSMon:一款针对JavaScript脚本的监控工具
字数 1174 2025-08-15 21:32:58
JSMon:JavaScript脚本监控工具使用指南
一、工具概述
JSMon是一款专为漏洞Hunter设计的JavaScript脚本监控工具,基于Python开发,具备跨平台特性。其主要功能是持续监控网站上的JavaScript文件变化,并通过即时通讯工具通知用户。
二、核心功能
- 持续追踪目标节点:通过cron定期检测目标状态
- 节点变化通知:通过Telegram或Slack发送变更通知
- 文件比对分析:自动比较新旧版本脚本文件
- 多文件监控:支持同时监控任意数量的脚本文件
- 文件类型扩展:虽然专为JavaScript设计,但可监控任意文件类型
三、安装步骤
1. 获取源代码
git clone https://github.com/robre/jsmon.git
cd jsmon
python setup.py install
2. 配置通知服务
创建.env文件并配置通知参数:
touch .env
Telegram配置示例:
JSMON_NOTIFY_TELEGRAM=True
JSMON_TELEGRAM_TOKEN=YOUR_TELEGRAM_TOKEN
JSMON_TELEGRAM_CHAT_ID=YOUR_TELEGRAM_CHAT_ID
Slack配置示例(需取消注释):
#JSMON_NOTIFY_SLACK=True
#JSMON_SLACK_TOKEN=sometoken
#JSMON_SLACK_CHANNEL_ID=somechannel
注意:
- 对于Slack支持,需要配置Slack应用程序并获取oAuth认证令牌
- Slack应用需要文件上传权限和配置通信信道
四、配置监控目标
- 在项目目录的
targets/文件夹下创建监控列表文件 - 每行一个URL,指向要监控的脚本文件
示例:
echo "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js" >> targets/cdnjs-example
五、定时任务配置
设置cron定时任务:
crontab -e
添加如下内容(每天午夜执行):
@daily /path/to/jsmon.sh
重要说明:
- 必须运行.sh文件而非直接运行Python脚本,以避免环境问题
- 可根据需要修改
@daily参数(如@hourly每小时)
六、运行工具
执行监控:
python jsmon.py
七、工作原理
-
文件存储:
- 下载的文件存储在
downloads/目录 - 文件名使用文件内容的md5哈希前10个字符
- 下载的文件存储在
-
变更检测:
- 如果文件已存在且未变化,不执行操作
- 如果文件发生变化,发送通知
-
状态跟踪:
jsmon.json文件持续跟踪节点与文件哈希的绑定关系
八、通知内容
当检测到变化时,通知包含:
- 脚本文件的链接地址
- 修改后的文件大小
- 最新的脚本文件内容
九、高级配置
-
Telegram额外配置:
- 需要在
jsmon.py文件开头部分添加Telegram API密钥和chat_id
- 需要在
-
Slack应用配置:
- 确保Slack应用已启用文件上传权限
- 配置正确的通信信道
十、项目地址
GitHub仓库:JSMon GitHub传送门
十一、最佳实践
- 按网站或应用程序组织targets文件
- 对于关键脚本,考虑设置更频繁的检查间隔(如每小时)
- 定期清理downloads目录中过时的文件版本
- 备份jsmon.json文件以防止监控状态丢失
十二、故障排除
-
通知不工作:
- 检查.env文件配置是否正确
- 验证Telegram/Slack令牌和ID
- 确保网络连接正常
-
文件未下载:
- 检查targets文件中的URL是否正确
- 验证网络连接和目标可访问性
-
cron任务不执行:
- 确认.sh文件有执行权限
- 检查cron日志以获取错误信息