
강력한 디렉터리 무차별 대입 도구로, 재귀/멀티플렉스 작업, API 탐색 및 열거, JS 파일 스크래핑, API HTTP 메서드 나열을 하나의 명령으로 수행하도록 설계되었습니다. 이 도구는 API 전용이 아니라, 제 도구는 API에서 특히 뛰어납니다.
API 정찰 및 침투 테스트를 위해 설계된 강력한 디렉토리 무차별 대입 도구입니다. 숨겨진 API 엔드포인트를 자동으로 발견하고, 재귀적 하위 스캔을 수행하며, HTTP 메서드를 프로빙하여 더욱 심층적인 API 열거를 수행합니다.
✨ 핵심 기능:
requests 라이브러리tmux (선택 사항, --split 플래그 사용 시)xfce-terminal (Linux 데스크탑 환경용)# 저장소 클론
git clone https://github.com/austinjump-sec/API-SPY.git
cd API-SPY
# 의존성 설치
pip install requests
# 스크립트 실행 권한 부여 (선택 사항)
chmod +x apispy.py apiprobe.py
python3 apispy.py <baseUrl> <wordlist> [옵션]
| 인자 | 설명 |
|---|---|
<baseUrl> | 대상 URL (예: http://example.com 또는 http://api.example.com) |
<wordlist> | 엔드포인트가 한 줄에 하나씩 포함된 워드리스트 파일 경로 |
python3 apispy.py http://api.example.com wordlist.txt
python3 apispy.py http://api.example.com wordlist.txt -t10
python3 apispy.py http://api.example.com wordlist.txt -t5 --split
python3 apispy.py http://api.example.com/v1 wordlist.txt -t20
도구는 미리 정의된 일반적인 API 경로 세트를 테스트하는 것으로 시작합니다:
api, v1, v2, api/v1, api/v2, graphql, rest#으로 시작하는 주석은 무시)200, 401, 403으로 응답하는 엔드포인트 식별엔드포인트가 발견되면 프롬프트가 표시됩니다:
'-> <url>을(를) 하위 스캔하시겠습니까? (y/n) [5초 후 자동 건너뛰기]:
y/yes를 선택하면 동일한 워드리스트로 해당 엔드포인트를 재귀적으로 스캔하위 스캔 후 프롬프트가 표시됩니다:
'-> <url>에서 메서드를 프로빙하시겠습니까? (y/n) [5초 후 자동 건너뛰기]:
apiprobe.py를 실행Allow 헤더 힌트 표시[+] Url found: http://api.example.com/v1 ← 200 OK (접근 가능)
'-> http://api.example.com/v1을(를) 하위 스캔하시겠습니까? (y/n) [0초 후 자동 건너뛰기]:
[-] Timeout: http://api.example.com/v1에 대한 프롬프트를 건너뛰었습니다?
'-> http://api.example.com/v1에서 메서드를 프로빙하시겠습니까? (y/n) [4초 후 자동 건너뛰기]:
[-] Url found but not permitted (403 ERR): ... ← 금지되었지만 존재함
[-] Url found but not permitted (401 ERR): ... ← 인증 필요
[+] GET -> STATUS: 200 OK (Size: 1024)
[-] POST -> STATUS: 405 (Size: 0)
[Header Hint] Allow: GET, HEAD, OPTIONS
엔드포인트가 한 줄에 하나씩 포함된 간단한 텍스트 파일을 만듭니다:
admin
users
api/users
v1/products
v2/customers
/api/v1/auth
/graphql
search
data
config
참고: #으로 시작하는 줄은 주석으로 간주되어 무시됩니다.
API-SPY와 함께 사용할 인기 있는 API 워드리스트:
# 은밀 모드 (낮은 스레드)
python3 apispy.py http://target.com wordlist.txt -t3
# 균형 모드
python3 apispy.py http://target.com wordlist.txt -t15
# 공격 모드
python3 apispy.py http://target.com wordlist.txt -t50
timeout=5를 수정하세요워드리스트 경로가 올바르고 파일이 존재하는지 확인하세요:
ls -la /path/to/wordlist.txt
하위 스캔 시 다음을 확인하세요:
apispy.pyapiprobe.py--split이 실패하는 경우:
sudo apt install tmuxtmux new-session -s scancurl http://your-url/check_status() 함수에서 요청 시간 초과 증가⚠️ 법적 및 윤리적:
소스 코드를 편집하여 시간 초과 값을 조정하십시오:
def ask_subscan(url, wordlist, timeout=10): # 5초에서 10초로 변경
특정 API 경로를 대상으로 하는 워드리스트 생성:
# 관리자 엔드포인트만
grep -i "admin" full-wordlist.txt > admin-wordlist.txt
# v1 API만
grep "v1" full-wordlist.txt > v1-wordlist.txt
루프를 사용하여 여러 대상 스캔:
for target in http://target1.com http://target2.com http://target3.com; do
python3 apispy.py "$target" wordlist.txt -t10
done
기여를 환영합니다! 자유롭게 다음을 수행해 주세요:
이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 사용자는 시스템을 스캔하기 전에 적절한 권한을 보유하고 있는지 확인할 책임이 있습니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.
이 프로젝트는 보안 연구 및 승인된 테스트 목적으로 있는 그대로 제공됩니다.
제작자: austinjump-sec
저장소: austinjump-sec/API-SPY
| 인자 | 설명 |
|---|
--t<number> | 스레드 수 (최대 150, 기본값: 1) |
--split | 새 터미널 창 대신 tmux 분할 창 사용 |
--debug | 그렇지 않으면 숨겨지는 오류 메시지 표시 |
--loud | 모든 메시지(양성 및 오류)를 표시하며, 404를 반환하지 않는 메시지를 강조 표시 |
--js | JavaScript 파일을 스캔하고 발견된 파일을 스크래핑하여 하드코딩된 일반적인 API 엔드포인트 검색 |