
버그바운티용 JavaScript 변경 모니터링 도구
JSMon - BugBounty를 위한 JavaScript 변경 모니터
이 스크립트를 사용하면 모니터링하려는 웹사이트의 여러 JavaScript 파일을 설정할 수 있습니다. 스크립트를 실행할 때마다 이 파일들을 가져와 이전에 가져온 버전과 비교합니다. 변경 사항이 있으면 스크립트 링크, 변경된 파일 크기, 변경 사항을 쉽게 확인할 수 있는 diff 파일이 포함된 메시지로 Telegram을 통해 알림을 받게 됩니다.


JSMon 설치:
git clone https://github.com/robre/jsmon.git
cd jsmon
python setup.py install
환경 변수에 Slack 또는 Telegram 토큰을 설정해야 합니다. 예를 들어 .env 파일을 생성하여 설정할 수 있습니다:
touch .env
다음 내용으로 작성:
JSMON_NOTIFY_TELEGRAM=True
JSMON_TELEGRAM_TOKEN=YOUR TELEGRAM TOKEN
JSMON_TELEGRAM_CHAT_ID=YOUR TELEGRAM CHAT ID
#JSMON_NOTIFY_SLACK=True
#JSMON_SLACK_TOKEN=sometoken
#JSMON_SLACK_CHANNEL_ID=somechannel
Slack을 활성화하려면 env 파일에서 Slack 관련 줄의 주석을 해제하고 토큰을 추가하세요.
JSMon을 정기적으로 실행하기 위해 cron 스크립트를 생성하려면:
crontab -e
다음과 같은 항목을 추가하세요:
@daily /path/to/jsmon.sh
환경 변수가 제대로 설정되지 않을 수 있으므로, .sh 파일을 실행해야 합니다.
이렇게 하면 JSMon이 하루에 한 번, 자정에 실행됩니다. @daily를 원하는 일정으로 변경할 수 있습니다.
Telegram 알림을 구성하려면 jsmon.py 시작 부분에 Telegram API 키와 chat_id를 추가해야 합니다. 이 값을 얻는 방법은 여기에서 확인할 수 있습니다.
참고: Slack 지원을 위해서는 Slack 앱을 올바르게 설정하고 Slack OAuth 토큰을 사용해야 합니다. 앱에는 파일 업로드 권한이 필요하며, 원하는 채널에 존재해야 합니다.
마지막으로, 모니터링할 대상(target)을 추가해야 합니다. 예제를 만들어 보겠습니다:
echo "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js" >> targets/cdnjs-example
모든 준비가 끝났습니다! 이제 python jsmon.py를 실행하여 처음으로 지정된 파일을 다운로드할 수 있습니다!
targets/ 디렉토리 내 파일을 통해 엔드포인트 제공 (줄 단위로 구분된 엔드포인트)
각 엔드포인트는 다운로드되어 해시값( MD5 해시의 첫 10자 )을 파일 이름으로 downloads/에 저장됨
jsmon.json은 각 엔드포인트가 어떤 파일 해시와 연결되어 있는지 추적
JSMon은 웹사이트의 JavaScript 파일을 추적하도록 설계되었지만, 엔드포인트를 추가하여 모든 파일 형식에 사용할 수 있음
@r0bre - 핵심 개발 @Yassineaboukir - Slack 알림