
xpath — это быстрый многометодный сканер XPath-инъекций, написанный на Nim. Он ориентирован на практическое обнаружение, сравнение ответов, видимое извлечение и слепое извлечение.
Продвинутый сканер XPath-инъекций для авторизованного тестирования безопасности.
Автор: Chokri Hammedi (blue0x1) · Лицензия MIT
xpath — это быстрый сканер XPath-инъекций с множеством техник, написанный на Nim. Он ориентирован на практическое обнаружение, сравнение ответов, видимое извлечение, слепое извлечение и покрытие полезных нагрузок для реальных приложений, работающих с XML.
Помимо стандартной библиотеки Nim, у него нет внешних зависимостей времени выполнения.
nimble install xpath
Эта команда устанавливает последнюю версию пакета из официального списка пакетов Nim.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
Бинарный файл для Linux сохраняется в:
dist/xpath-linux-amd64
sudo make install
По умолчанию устанавливается в:
/usr/local/bin/xpath
Чтобы изменить префикс установки:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
Бинарный файл для Windows сохраняется в:
dist/xpath-windows-amd64.exe
На Linux для сборки под Windows требуется MinGW:
sudo apt install mingw-w64
Сканирование GET-параметра:
xpath -u "http://target.local/search?q=test" -p q
Сканирование всех обнаруженных query-параметров:
xpath -u "http://target.local/search?q=test&id=1"
Сканирование тела POST-запроса:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Запуск всех техник и извлечение видимых или слепых данных, когда это возможно:
xpath -u "http://target.local/search?q=test" -p q -t A -x
Использование прокси:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
Сохранение вывода в JSON:
xpath -u "http://target.local/search?q=test" -p q -t A -o report.json -f json
USAGE
xpath [OPTIONS] -u <URL>
TARGET
-u, --url <URL> Целевой URL
-m, --method <METHOD> HTTP-метод: GET или POST
-d, --data <DATA> Тело POST, используйте * для обозначения точки инъекции
-p, --param <PARAM> Параметр(ы) для тестирования, через запятую
-c, --cookie <COOKIE> Строка cookie
-H, --header <HEADER> Дополнительный заголовок, можно повторять
DETECTION
-t, --technique <FLAGS> E, B, T, U, P или A
-l, --level <1-5> Уровень тщательности полезных нагрузок
-x, --extract Извлечь данные после подтверждения инъекции
--xpath <EXPR> XPath-выражение для извлечения
OUTPUT
-o, --output <FILE> Сохранить отчёт
-f, --format <FMT> text или json
-v, --verbose Подробный вывод
Отправляет некорректные XPath-полезные нагрузки и обнаруживает сигнатуры ошибок конкретных фреймворков: Java, .NET, PHP, libxml2, Saxon, Xalan, а также коды ошибок W3C XQuery.
xpath -u "http://target.local/item?id=1" -p id -t E
Сравнивает парные ответы TRUE/FALSE по схожести тела и разнице размеров. Это полезно, когда результаты не выводятся напрямую, но поведение приложения меняется.
xpath -u "http://target.local/search?q=test" -p q -t B
Использует вычислительно затратные XPath-выражения для создания измеримой разницы во времени ответа, когда сигналы на основе содержимого недоступны.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Проверяет, можно ли объединить параметр, похожий на селектор, с абсолютными или относительными XPath-путями, такими как //text(), ../../..//text(), //@* и индексированными путями.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Проверяет полезные нагрузки, ломающие предикаты, нагрузки на основе позиции, на основе подстрок роли, булевые функции и контекстно-зависимые формы обхода.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Когда включён флаг -x, xpath выбирает наилучший доступный режим извлечения:
| Режим | Описание |
|---|---|
| Видимый ответ аутентификации |
Пример:
xpath -u "http://target.local/query?q=test" -p q -t A -x
Пользовательское выражение:
xpath -u "http://target.local/query?q=test" -p q -x --xpath "name(/*[1])"
src/
xpath.nim
core/
analyzer.nim
crawler.nim
extractor.nim
http.nim
payloads.nim
reporter.nim
scanner.nim
utils/
cli.nim
config.nim
logger.nim
Лицензия MIT. См. LICENSE.
Этот инструмент предназначен только для авторизованного тестирования безопасности. Используйте его только на системах, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение.
| Область | Поддержка |
|---|
| Обнаружение | На основе ошибок, слепое на основе булевых значений, слепое на основе времени, обход аутентификации, union/выбор узлов |
| Извлечение | Разбор видимого HTML, извлечение через union-выборки, слепое извлечение данных XPath |
| Полезные нагрузки | Классические, предикатные, на основе функций, выход за пределы пути, кодированные, сущностные, смешанный регистр |
| Обнаружение | Определение URL-параметров и обход HTML-форм |
| Обход | Индикаторы WAF/IDS, полезные нагрузки на основе URL-кодирования и сущностей |
| Вывод | Читаемый отчёт в терминале и экспорт в JSON |
| Транспорт | Cookies, заголовки, прокси, повторы, таймаут, User-Agent, управление редиректами |
| Извлекает новые строки, ссылки, редиректы и отображаемые значения из успешных ответов обхода |
| Видимые union-пути | Извлекает заново отображаемый текст из union/выборки узлов |
| Слепое извлечение | Использует string-length(), substring(), name() и count() для определения XML-данных |
| Уровень | Назначение |
|---|
1 | Быстрые классические нагрузки |
2 | Частые реальные обходы предикатов |
3 | Стандартное сбалансированное сканирование |
4 | Кодированные, сущностные нагрузки и выход за пределы пути |
5 | Максимальное покрытие и экзотические варианты |
| Цель | Результат |
|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Запускает тестовый набор Nim |
make install | Устанавливает в $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Удаляет build/ и dist/ |