
Мощный инструмент брутфорса директорий, оптимизированный для рекурсивных/мультиплексных операций, обнаружения и перечисления API, скрапинга JS-файлов и вывода HTTP-методов API одной командой. Это НЕ ТОЛЬКО для API, мой инструмент просто отлично справляется с ними.
Мощный инструмент для брутфорса каталогов, предназначенный для разведки API и тестирования на проникновение. Автоматически обнаруживает скрытые конечные точки API, выполняет рекурсивное субсканирование и проверяет HTTP-методы для более глубокого перечисления API.
✨ Основные возможности:
requeststmux (опционально, для флага --split)xfce-terminal (для сред рабочего стола Linux)# Clone the repository
git clone https://github.com/austinjump-sec/API-SPY.git
cd API-SPY
# Install dependencies
pip install requests
# Make scripts executable (optional)
chmod +x apispy.py apiprobe.py
python3 apispy.py <baseUrl> <wordlist> [OPTIONS]
| Аргумент | Описание |
|---|---|
<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Когда конечная точка найдена, появляется запрос:
'-> Subscan <url>? (y/n) [Auto-skip in 5s]:
y/yes, чтобы рекурсивно просканировать эту конечную точку с тем же словарёмПосле субсканирования появляется запрос:
'-> Probe methods on <url>? (y/n) [Auto-skip in 5s]:
apiprobe.py, который проверяет HTTP-методы на обнаруженной конечной точкеAllow[+] Url found: http://api.example.com/v1 ← 200 OK (accessible)
'-> Subscan http://api.example.com/v1? (y/n) [Auto-skip in 0s]:
[-] Timeout: Skipped prompt for http://api.example.com/v1?
'-> Probe methods on http://api.example.com/v1? (y/n) [Auto-skip in 4s]:
[-] Url found but not permitted (403 ERR): ... ← Forbidden but exists
[-] Url found but not permitted (401 ERR): ... ← Requires authentication
[+] 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 для использования с API-SPY:
# Stealth mode (low threads)
python3 apispy.py http://target.com wordlist.txt -t3
# Balanced mode
python3 apispy.py http://target.com wordlist.txt -t15
# Aggressive mode
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): # Change from 5 to 10 seconds
Создайте словари, нацеленные на определённые пути API:
# Admin endpoints only
grep -i "admin" full-wordlist.txt > admin-wordlist.txt
# v1 API only
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 split-window вместо новых окон терминала |
--debug | Показывает скрытые сообщения об ошибках |
--loud | Показывает все сообщения, положительные и ошибки, выделяя те, что не возвращают 404 |
--js | Сканирует JavaScript-файлы и извлекает из найденных общие жестко закодированные конечные точки API |