A Python application for scanning security-relevant files from URLs to detect vulnerabilities and secrets using three leading security tools: Semgrep, Grype, and TruffleHog.
- Static Code Analysis (Semgrep): Analisis statis untuk menemukan bug, celah keamanan, dan pola kode berbahaya dengan aturan yang dapat disesuaikan
- Dependency Vulnerability Scanning (Grype): Memindai image dan paket aplikasi untuk menemukan CVE atau vulnerability berdasarkan database seperti NVD
- Secret Detection (TruffleHog): Mencari secret atau credential (API key, token, password) yang tidak sengaja tercantum di kode atau repositori
- Dual Interface: Command-line interface dan Telegram bot
- Comprehensive Reports: Output berupa PDF (human-readable) dan JSON (structured data) dengan kategorisasi berdasarkan jenis temuan
- Automatic JS Download: Download otomatis semua file JavaScript (inline dan eksternal)
- Semgrep - Static code analysis
- Grype - Dependency vulnerability scanning
- TruffleHog - Secret detection (sudah terinstal via pip)
Opsi 1: Docker Setup (Recommended) π³
# Build Docker image
docker-compose build
# Test installation
docker-compose run --rm scanner-cli python test_tools.py
# Scan website
docker-compose run --rm scanner-cli python run.py -u https://example.com
# Interactive shell
docker-compose run --rm scanner-cli /bin/bash
# View help
docker-compose run --rm scanner-cli python run.py --helpOpsi 2: Instalasi Otomatis (Windows)
# Jalankan sebagai Administrator
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
.\install_tools.ps1Opsi 3: Instalasi Manual
Lihat panduan lengkap di INSTALLATION.md untuk:
- Instalasi step-by-step untuk Windows/macOS/Linux
- Troubleshooting common issues
- Alternative installation methods
Opsi 4: Docker Setup (Detailed)
π Dokumentasi Docker:
- DOCKER_SIMPLE.md - Panduan sederhana menggunakan docker-compose
- DOCKER_SETUP.md - Dokumentasi lengkap dengan script PowerShell
semgrep --version
grype version
trufflehog --versionAtau gunakan script verifikasi:
python test_tools.pyJika tools belum terinstal, scanner akan menampilkan error seperti:
{
"semgrep_results": {
"error": "Semgrep not installed or not accessible"
},
"grype_results": {
"error": "Grype not installed or not accessible"
}
}Sumber GitHub Resmi:
- Semgrep: https://github.com/semgrep/semgrep
- Grype: https://github.com/anchore/grype
- TruffleHog: https://github.com/trufflesecurity/trufflehog
-
Clone atau download proyek ini
git clone <repository-url> cd "Vuln And Secret JS FIle"
-
Install dependencies Python
pip install -r requirements.txt
-
Install Security Tools dari GitHub
Opsi A: Instalasi Otomatis (Windows)
# PowerShell (Recommended) .\install_tools.ps1 # Atau Batch .\install_tools.bat
Opsi B: Instalasi Manual
Lihat panduan lengkap di
INSTALLATION.mduntuk instalasi manual dari sumber GitHub resmi. -
Setup environment variables
Buat file
.envdan isi dengan konfigurasi yang diperlukan:# Telegram Bot Configuration TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here # Logging Configuration LOG_LEVEL=INFO LOG_FILE=scanner.log # Scanner Configuration OUTPUT_DIR=output TEMP_DIR=temp MAX_FILE_SIZE_MB=50 DOWNLOAD_TIMEOUT=30 SCAN_TIMEOUT=300
-
Buat direktori output
mkdir output mkdir temp
# 1. Build Docker image (one-time setup)
.\run-docker.ps1 build
# 2. Test tools installation
.\run-docker.ps1 test
# 3. Run vulnerability scan
.\run-docker.ps1 scan
# 4. Interactive mode (optional)
.\run-docker.ps1 run# Install dependencies
pip install -r requirements.txt
# Install security tools (Windows)
.\install_tools.ps1
# Langsung scan URL
python run.py -u https://example.com# Install dependencies
pip install -r requirements.txt
# Setup token di .env file
# TELEGRAM_BOT_TOKEN=your_actual_token_here
# Jalankan bot
python bot.py# Scan URL
python run.py -u https://example.com
# Dengan opsi verbose
python run.py -u https://example.com -v
# Lihat help
python run.py --helpOutput:
output/report_YYYYMMDD_HHMMSS.pdf- Laporan PDF yang mudah dibacaoutput/result_YYYYMMDD_HHMMSS.json- Data terstruktur JSON
# Cek dan jalankan bot (opsional)
python bot.py
# Atau langsung jalankan bot jika token sudah ada
python telegrambot.pyTelegram bot adalah fitur opsional. Jika tidak ada token bot, aplikasi tetap dapat dijalankan menggunakan command line.
# Akan mengecek token dan memberikan instruksi jika tidak ada
python bot.py# Langsung menjalankan bot (memerlukan token)
python telegrambot.py-
Buat Telegram Bot
- Chat dengan @BotFather
- Gunakan command
/newbot - Ikuti instruksi untuk membuat bot
- Salin token yang diberikan ke file
.env
-
Gunakan Bot
- Start chat dengan bot Anda
- Kirim command
/start - Kirim URL yang ingin di-scan
- Tunggu hasil scanning
Bot Commands:
/start- Tampilkan pesan selamat datang/help- Tampilkan bantuan detail/status- Cek status scanning yang sedang berjalan
Vuln And Secret JS FIle/
βββ run.py # Command-line interface
βββ bot.py # Optional bot launcher (checks token)
βββ telegrambot.py # Telegram bot implementation
βββ requirements.txt # Python dependencies
βββ .env # Environment variables
βββ README.md # Dokumentasi
βββ scanner/ # Scanner modules
β βββ __init__.py
β βββ downloader.py # JavaScript file downloader
β βββ semgrep_scan.py # Semgrep scanner
β βββ grype_scan.py # Grype scanner
β βββ trufflehog_scan.py # TruffleHog scanner
β βββ report_generator.py # Report generator
βββ output/ # Scan results
βββ temp/ # Temporary files
| Variable | Deskripsi | Default |
|---|---|---|
TELEGRAM_BOT_TOKEN |
Token bot Telegram | - |
LOG_LEVEL |
Level logging (DEBUG, INFO, WARNING, ERROR) | INFO |
LOG_FILE |
File log | scanner.log |
OUTPUT_DIR |
Direktori output | output |
TEMP_DIR |
Direktori temporary | temp |
MAX_FILE_SIZE_MB |
Ukuran maksimal file (MB) | 50 |
DOWNLOAD_TIMEOUT |
Timeout download (detik) | 30 |
SCAN_TIMEOUT |
Timeout scanning (detik) | 300 |
Setiap scanner memiliki fokus dan konfigurasi yang berbeda:
-
Semgrep:
- Menggunakan ruleset
p/javascriptdanp/security-audit - Mendeteksi: XSS, SQL injection, insecure crypto, code injection, dll
- Target: File JavaScript (.js) yang telah didownload
- Menggunakan ruleset
-
Grype:
- Scan file dependency:
package.json,yarn.lock,package-lock.json - Mendeteksi: CVE pada npm packages berdasarkan database NVD
- Target: Dependency manifests dan lock files
- Scan file dependency:
-
TruffleHog:
- Kombinasi tool TruffleHog dan custom regex patterns
- Mendeteksi: API keys, tokens, passwords, certificates, database URLs
- Target: Semua file JavaScript dan dependency files
Laporan PDF berisi kategorisasi temuan berdasarkan jenis scanner:
- Executive Summary - Ringkasan keseluruhan dengan breakdown per tool
- Semgrep Findings - Bug, celah keamanan, dan pola kode berbahaya
- Grype Findings - CVE dan vulnerability pada dependencies
- TruffleHog Findings - Secrets dan credentials yang terekspos
- Risk Assessment - Penilaian risiko keseluruhan
- Recommendations - Rekomendasi spesifik per jenis temuan
Data JSON terstruktur berisi:
{
"target_url": "https://example.com",
"scan_timestamp": "2024-01-01T12:00:00",
"downloaded_files": [...],
"semgrep_results": {
"results": ["bug dan security issues"],
"summary": {"total_findings": 0, "by_severity": {}}
},
"grype_results": {
"results": ["CVE dan vulnerabilities"],
"summary": {"total_vulnerabilities": 0, "by_severity": {}}
},
"trufflehog_results": {
"results": ["secrets dan credentials"],
"summary": {"total_secrets": 0, "by_confidence": {}}
},
"overall_summary": {
"total_files": 0,
"total_issues": 0,
"total_vulnerabilities": 0,
"total_secrets": 0
}
}-
Tool tidak ditemukan
Error: semgrep/grype/trufflehog command not foundSolusi: Pastikan tools sudah terinstal dan ada di PATH
-
Permission denied
PermissionError: [Errno 13] Permission deniedSolusi: Jalankan dengan permission yang sesuai atau ubah direktori output
-
Telegram bot tidak merespon
telegram.error.InvalidTokenSolusi: Periksa
TELEGRAM_BOT_TOKENdi file.env -
Download gagal
Failed to download JavaScript filesSolusi: Periksa koneksi internet dan URL yang valid
Untuk debugging, set LOG_LEVEL=DEBUG di file .env:
LOG_LEVEL=DEBUG- Temporary Files: Semua file temporary dibersihkan otomatis setelah scanning
- Secrets Masking: Secrets di-mask dalam output untuk keamanan
- Rate Limiting: Bot Telegram memiliki built-in rate limiting
- Input Validation: URL dan input lainnya divalidasi sebelum diproses
- Fork repository
- Buat feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push ke branch (
git push origin feature/amazing-feature) - Buat Pull Request
Project ini menggunakan MIT License. Lihat file LICENSE untuk detail.
- Semgrep - Static analysis tool
- Grype - Vulnerability scanner
- TruffleHog - Secret scanner
- python-telegram-bot - Telegram bot framework
Jika Anda mengalami masalah atau memiliki pertanyaan:
- Periksa Troubleshooting section
- Buat issue di repository
- Periksa log file untuk detail error