
jshunter는 JavaScript 파일을 분석하고 엔드포인트를 추출하도록 설계된 명령줄 도구입니다. 이 도구는 API 엔드포인트 및 잠재적 보안 취약점과 같은 민감한 데이터를 식별하는 데 특화되어 있어, 버그 바운티 헌터와 보안 연구자에게 필수적인 리소스입니다.
JSHunter는 JavaScript 보안 분석 및 엔드포인트 탐색을 위한 포괄적인 명령줄 도구입니다. 보안 전문가, 침투 테스터 및 개발자를 위해 설계되었으며, 높은 정확도의 탐지 알고리즘과 전문적인 보고 기능을 갖춘 엔터프라이즈급 분석 기능을 제공합니다.
https://github.com/user-attachments/assets/5a5f60fa-f8dc-4aac-bd06-2e93779f9af4
실행 중인 JSHunter — CLI의 실제 터미널 캡처(표시된 모든 시크릿은 가짜 테스트 데이터임)
고급 분석 알고리즘을 통한 엔터프라이즈급 정확도
인증 및 헤더:
-H): 반복 가능한 인증 헤더 및 사용자 정의 요청 헤더-c): 보호된 리소스 접근을 위한 세션 쿠키-U): 스텔스를 위한 사용자 정의 UA 문자열 또는 파일 기반 순환성능 및 안정성:
-R): 탐지 회피를 위한 구성 가능한 요청 지연(밀리초)-T): 다양한 네트워크 조건에 맞는 사용자 정의 타임아웃 설정-y): 실패한 요청에 대한 지수 백오프가 적용된 자동 재시도 메커니즘전문 통합:
-p): 완전한 Burp Suite 및 사용자 정의 프록시 통합(HTTP/HTTPS/SOCKS5)-k): 테스트 환경을 위한 선택적 인증서 검증 우회-t): 최적의 성능을 위한 구성 가능한 동시 요청 처리보안 전문가 기능: 침투 테스트 및 보안 평가를 위해 설계됨 예시:
jshunter -l targets.txt -p 127.0.0.1:8080 -H "Authorization: Bearer token" -R 1000
핵심 분석 도구:
-d): 심층 분석을 위해 축소 및 난독화된 JavaScript 압축 해제-m): 소스 맵에서 원본 소스 코드 추출 및 분석-z): 난독화 기법 및 패턴 식별 및 분류동적 분석:
-e): 동적 코드 실행 분석(eval(), Function(), 런타임 생성)코드 인텔리전스:
전문 사용법: 최대 범위를 위해 분석 도구를 보안 탐지와 결합 예시:
jshunter -u target.js -d -m -e -s -g(전체 난독화 해제 + 보안 분석)
핵심 보안 탐지:
-s): API 키, 액세스 토큰, 비밀번호 및 하드코딩된 자격 증명-x): 인증 토큰 추출, 검증 및 페이로드 검사-F): 구성 분석, API 키 및 데이터베이스 URL 탐지고급 분석:
-P): 숨겨진 양식 매개변수, 변수 및 구성 키-PU): 전체 URL 컨텍스트를 포함한 고급 매개변수 분석-g): 스키마 탐지, 쿼리 추출 및 엔드포인트 탐색-B): 보안 우회 패턴 및 회피 기법범위 및 컨텍스트:
-i): 사설/내부 리소스 식별 및 분류-L): 포괄적인 URL 추출 및 관계 매핑전문 팁: 포괄적인 분석을 위해 플래그를 결합하세요 (예:
jshunter -u target.js -s -x -F -g)
핵심 출력 형식:
-o): 포괄적인 결과를 사용자 정의 파일 위치에 저장-j): 자동화 및 프로그래밍 방식 처리를 위한 구조화된 데이터 형식-C): 경영 보고 및 분석을 위한 스프레드시트 호환 형식전문 통합:
-n): 즉시 테스트를 위한 Burp Suite Professional과의 직접 통합-r): 타겟 결과 필터링을 위한 사용자 정의 패턴 매칭-v): 디버깅 정보 및 컨텍스트를 포함한 상세 분석 출력결과 관리:
--found-only): 집중된 보안 보고를 위해 빈 결과 숨기기-q): 자동화 스크립팅 및 CI/CD 통합을 위한 배너 억제보고 워크플로우: 자동화에는 JSON, 관리 보고에는 CSV, 즉시 테스트에는 Burp 내보내기 사용 예시:
jshunter -l targets.txt -s -j -o security-findings.json(구조화된 보안 보고서)
go install -v github.com/cc1a2b/jshunter/cmd/jshunter@latest
jshunter --help
### 소스에서 빌드하기```bash
git clone https://github.com/cc1a2b/jshunter.git
cd jshunter
go build -o jshunter ./cmd/jshunter
jshunter -u "https://example.com/app.js"
jshunter -l urls.txt
jshunter -f app.js
### 완전한 보안 분석```bash
# Find API keys, secrets, and credentials
jshunter -u "https://target.com/app.js" -s
# Full analysis with deobfuscation, GraphQL, and Firebase detection
jshunter -u "https://target.com/app.js" -d -s -g -F -x -L
# Professional security assessment with all tools
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
# Export comprehensive results for reporting
jshunter -l targets.txt -s -g -F -j -o security_findings.json
jshunter -u "https://example.com/app.js"
jshunter -l urls.txt
cat urls.txt | grep ".js" | jshunter
jshunter -u "https://example.com/app.js" -s -x -F
jshunter -u "https://target.com/app.js" -d -m -e -s -x -P -g -F -B -L
jshunter -u "https://target.com/bundle.js" -d -m -s -g -F
jshunter -l targets.txt -s -x -F -g -j -o security_findings.json
jshunter -l targets.txt -p 127.0.0.1:8080 -s -g -F -n -o burp_findings.txt
jshunter -l targets.txt -p socks5://127.0.0.1:9050 -s -x -F
jshunter -l urls.txt -R 2000 -H "Authorization: Bearer token" -s -x -F -g -q
jshunter -l urls.txt -ep -P -PU -L -w 2
jshunter -f obfuscated.js -d -z -e -s -v
---
## 명령 참조
`jshunter --help`를 사용하면 언제든지 전체 도움말을 확인할 수 있습니다.```
Usage:
-u, --url URL Input a URL
-l, --list FILE.txt Input a file with URLs (.txt)
-f, --file FILE.js Path to JavaScript file
--har FILE Ingest a Chrome DevTools HAR archive
Basic Options:
-t, --threads INT Number of concurrent threads (default: 5)
-c, --cookies <cookies> Authentication cookies for protected resources
-p, --proxy host:port HTTP/SOCKS5 proxy (e.g., 127.0.0.1:8080 for Burp Suite)
-q, --quiet Suppress ASCII art output
--no-color Disable ANSI color (auto-off when not a TTY)
-o, --output FILENAME Output file path
-r, --regex <pattern> RegEx for filtering results
--update, --up Update the tool to latest version
-ep, --end-point Extract endpoints from JavaScript files
-k, --skip-tls Skip TLS certificate verification
-fo, --found-only Only show results when sensitive data is found
HTTP Configuration:
-H, --header "Key: Value" Custom HTTP headers (repeatable, including Auth)
-U, --user-agent UA Custom User-Agent string or file path
-R, --rate-limit MS Request rate limiting delay (milliseconds)
-T, --timeout SEC HTTP request timeout (seconds)
-y, --retry INT Retry attempts for failed requests (default: 2)
--per-host INT Per-host outbound concurrency cap (default: 4)
--max-bytes N Cap response body read in bytes (default: 32MiB)
--allow-internal Permit localhost / RFC1918 / link-local targets
--cache-dir DIR Persist responses on disk; revalidate via ETag
JavaScript Analysis:
-d, --deobfuscate Deobfuscate minified and obfuscated JavaScript
-m, --sourcemap Fetch and parse source maps + sourcesContent[]
-e, --eval Analyze dynamic code execution (eval, Function)
-z, --obfs-detect Detect code obfuscation patterns and techniques
--inline-html Scan inline <script> tags + SRI/CSP in HTML responses
--csp-origins Emit CSP-allowed origins as candidate endpoints
Security Analysis:
-s, --secrets Detect API keys, tokens, and credentials
-x, --tokens Extract JWT and authentication tokens
-P, --params Discover hidden parameters and variables
-PU, --param-urls Advanced parameter extraction with URL context
-i, --internal Filter for internal/private endpoints
-g, --graphql Analyze GraphQL endpoints and queries
-B, --bypass Detect WAF bypass patterns and techniques
-F, --firebase Analyze Firebase configurations and keys
-L, --links Extract and analyze all embedded links
Detection Tuning:
-mc, --min-confidence FLOAT Minimum confidence (0.0-1.0) for a finding (default: 0.50)
-sc, --show-confidence Print [conf=X.XX] alongside each finding
--no-fp-filter Disable the false-positive filter (debug)
--ignore-file FILE Permanent suppressions (.jshunterignore)
--diff PREVIOUS.json Report only NEW findings vs previous JSON envelope
--rules-file FILE.json Load an external JSON rule pack
--only-rules id,glob Run only matching rules (supports * glob)
--disable-rule id,glob Disable matching rules (supports * glob)
Verification:
--verify Probe findings against provider read-only endpoints
--verify-timeout SEC Timeout per verification probe (default: 10)
--verify-workers INT Concurrent verifier worker pool (default: 8)
Scope & Discovery:
-w, --crawl DEPTH Recursive JavaScript discovery depth (default: 1)
-D, --domain DOMAIN Limit analysis to specific domain
-E, --ext Filter by JavaScript file extensions
--robots Fetch /robots.txt for each input host and exit
Output Formats:
-j, --json Structured JSON output (schema_version 2)
--ndjson Newline-delimited JSON (jq / SIEM streaming)
--sarif SARIF 2.1.0 (GitHub code-scanning compatible)
-C, --csv CSV format for spreadsheet analysis
-v, --verbose Detailed analysis and debug output
-n, --burp Burp Suite compatible export format
--stats Per-stage counters on stderr at end of run
Registry:
--list-rules Print the rule registry as a table and exit
--explain RULE_ID Print full rule details and exit
--self-test Run rule registry against built-in TP/FP fixtures
-h, --help Display this help message
모든 시크릿 클래스 매치는 [0.0, 1.0] 범위에서 점수가 매겨집니다. 점수는 규칙별 사전 확률(prior)에서 시작하여 다음에 따라 조정됩니다:
기본 --min-confidence 0.50은 패턴 전용 매치의 긴 꼬리를 걸러냅니다. 고정밀 트리아지를 위해서는 --min-confidence 0.80을, 원시 필터링되지 않은 출력을 위해서는 --no-fp-filter를 사용하세요.
검증기는 정규식 매치 이후에 실행되는 규칙별 일관성 검사입니다.
이는 오탐지에 대한 가장 강력한 방어 수단입니다: 형태에 우연히 맞는 임의의 문자열도
보고되기 전에 체크섬, 구조적 디코딩, 또는 길이/문자셋 증명을 통과해야 합니다
(통과 시 +0.10이 추가됩니다).
큐레이팅된 레지스트리에는 85개 이상의 탐지기가 포함되어 있으며, 클라우드 및 시크릿 관리자
(AWS, Azure, GCP/PKCS#8, HashiCorp Vault, Terraform, Fly.io, Tailscale), 버전
관리 및 CI/CD(GitHub, GitLab, Docker Hub, Atlassian, Sentry, CircleCI,
Buildkite), 결제(Stripe, Square, Braintree, Plaid), AI/LLM 공급자
(OpenAI, Anthropic, Groq, Perplexity, Replicate, OpenRouter, Fireworks,
HuggingFace), 메시징(Slack, Discord, Telegram, Twilio, Intercom, SendGrid,
Mailgun), SaaS 및 데이터베이스(Notion, Airtable, Figma, Postman, Databricks,
PlanetScale, Grafana, New Relic, Dropbox, RubyGems, Supabase), 그리고 PKI 자료
(RSA/EC/DSA/OpenSSH/PGP/PKCS#8 개인 키, PuTTY .ppk, 데이터베이스 연결
URI)를 포괄합니다. 권위 있는 테이블은 jshunter --list-rules로, 개별 규칙의
패턴, 검증기 및 픽스처는 jshunter --explain <rule_id>로 확인하세요. 접두사가 없는
"베어 해시" 형태는 구조적 검증기 또는 필수 컨텍스트 게이트가 오탐지 없이 유지할 수
있는 경우에만 제공됩니다.
jshunter -l targets.txt -d -m -e -z -s -x -P -PU -g -F -B -L -j -v -o complete_assessment.json
jshunter -l targets.txt -d -m -z -e -s -g -F --found-only -o deobfuscated_findings.json
jshunter -l targets.txt -R 2000 -U "Mozilla/5.0..." -H "X-Forwarded-For: 1.1.1.1" -s -x -F -q
jshunter -l targets.txt -p 127.0.0.1:8080 -s -x -g -F -B -n -o burp_comprehensive.txt
jshunter -l targets.txt -ep -P -PU -L -w 3 -i -j -o endpoint_discovery.json
### 엔터프라이즈 및 자동화 통합```bash
# CI/CD Security Pipeline Integration
jshunter -f dist/bundle.js -d -s -x -F -j --found-only > security-scan.json
# Comprehensive automated security reporting
jshunter -l production-js.txt -d -s -x -P -g -F -B -C -o enterprise-security-report.csv
# Source map analysis for development security
jshunter -f app.js -m -s -x -F -v -o sourcemap-analysis.json
# Firebase and GraphQL focused assessment
jshunter -l targets.txt -g -F -L -j -o api_security_findings.json
기여를 환영합니다! 다음과 같은 방법으로 도움을 주실 수 있습니다:
git clone https://github.com/cc1a2b/jshunter.git cd jshunter go mod tidy go build -o jshunter ./cmd/jshunter
---
## 라이선스
JSHunter는 **MIT 라이선스** 하에 배포됩니다. 자세한 내용은 [LICENSE](https://github.com/cc1a2b/jshunter/blob/master/LICENSE)를 참조하세요.```
Copyright (c) 2024-2026 Hussain Alsharman
Licensed under MIT License - free for commercial and personal use
JSHunter가 보안 연구 또는 전문 업무에 도움이 된다면:
이 저장소에 Star를 눌러 주세요 • @cc1a2b 팔로우하기 • 다른 사람들과 공유하기
JSHunter - 전문 JavaScript 보안 분석
보안 커뮤니티를 위해 cc1a2b가 제작
| 신호 | 효과 |
|---|
| 소스 경로가 벤더/청크 번들처럼 보임 | −0.15 |
| 주변 컨텍스트에 픽스처(fixture) 문구 포함 | −0.30 |
| 공급자별 검증기 통과 | +0.10 |
| 필수 컨텍스트 키워드 존재(일반 규칙) | +0.05 |
| 섀넌 엔트로피 ≥ 4.5 | +0.05 |
| 문자 클래스 다양성 ≥ 3 | +0.05 |
| 벤더 노이즈 차단 목록의 매치 | 점수 산정 전 제외 |
| 길이/엔트로피가 규칙 하한 미만 | 점수 산정 전 제외 |
//# sourceMappingURL= 마커 라인 | 점수 산정 전 제외 |
| 공급자 | 검증기 |
|---|
| AWS | 접두사 계열(AKIA/ASIA/A3T…) + 16자 base32 본문 |
| Stripe | 키 계열(sk/rk/pk_live/test_) 및 whsec_ 웹훅 base62 본문 |
| GitHub | 임의 본문에 대해 검증된 CRC32 base62 체크섬 |
| OpenAI | 계열 접두사 + 길이 범위(sk-/sk-proj-/sk-svcacct-) |
| Slack | 하이픈 세그먼트 형태(숫자 내부 세그먼트, 영숫자 꼬리) |
| JWT | alg 필드가 있는 base64url 디코딩 JSON 헤더 + JSON 페이로드 |
| Twilio | 32자 16진수 본문 + 엔트로피 게이트 |
| Azure | AccountKey= base64 본문이 정확히 64바이트로 디코딩됨; AD …<digit>Q~… |
| Telegram | <8-10 자리 id>:AA… 분할, base64url 시크릿 + 엔트로피 게이트 |
| Intercom | base64가 tok: 접두사 페이로드로 디코딩됨 |
| Sentry | sntrys_ 조직 토큰 페이로드가 url 클레임을 포함하는 JSON으로 base64 디코딩됨 |
| Terraform | <14>.atlasv1.<60-70> 3-세그먼트 구조 |
| Square | sq0atp-/sq0csp-/sq0idp- 계열 + 정확한 본문 길이 + 엔트로피 |
| Braintree | access_token$<env>$<16 base36>$<32 hex> 4-세그먼트 구조 |
| Airtable | pat<14>.<64 hex> 2-세그먼트 분할 |
| Postman | PMAK-<24 hex>-<34 hex> 세그먼트 길이 + 엔트로피 |
| Database | 템플릿/기본값/저엔트로피인 경우 연결 URI 비밀번호 거부 |