
xpath는 Nim으로 작성된 빠르고 다양한 기법을 사용하는 XPath 인젝션 스캐너입니다. 실용적 탐지, 응답 비교, 가시적 추출, 블라인드 추출에 중점을 둡니다.
승인된 보안 테스트를 위한 고급 XPath 인젝션 스캐너.
Chokri Hammedi(blue0x1) 제작 · MIT 라이선스
xpath는 Nim으로 작성된 빠르고 다양한 기법을 지원하는 XPath 인젝션 스캐너입니다. 실제 XML 기반 애플리케이션에서의 실용적인 탐지, 응답 비교, 가시적 추출, 블라인드 추출, 페이로드 커버리지에 중점을 둡니다.
Nim 표준 라이브러리 외에 외부 런타임 의존성이 없습니다.
| 영역 | 지원 |
|---|---|
| 탐지 | 오류 기반, 불리언 기반 블라인드, 시간 기반 블라인드, 인증 우회, 유니언/노드 선택 |
| 추출 | 가시적 HTML 파싱, 셀렉터 유니언 추출, 블라인드 XPath 데이터 추출 |
| 페이로드 | 클래식, 조건식(predicate), 함수 기반, 경로 이탈, 인코딩, 엔티티, 대소문자 혼합 변형 |
| 발견 | URL 매개변수 감지 및 HTML 폼 크롤링 |
| 우회 | WAF/IDS 탐지 표시, URL 인코딩 및 엔티티 기반 우회 페이로드 |
| 출력 | 사람이 읽을 수 있는 터미널 보고서 및 JSON 보고서 내보내기 |
| 전송 | 쿠키, 헤더, 프록시, 재시도, 타임아웃, User-Agent, 리다이렉트 제어 |
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
감지된 모든 쿼리 매개변수 스캔:
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> Target URL
-m, --method <METHOD> HTTP method: GET or POST
-d, --data <DATA> POST body, use * to mark injection point
-p, --param <PARAM> Parameter(s) to test, comma-separated
-c, --cookie <COOKIE> Cookie string
-H, --header <HEADER> Extra header, repeatable
DETECTION
-t, --technique <FLAGS> E, B, T, U, P, or A
-l, --level <1-5> Payload thoroughness level
-x, --extract Extract data after confirming injection
--xpath <EXPR> XPath expression for extraction
OUTPUT
-o, --output <FILE> Save report
-f, --format <FMT> text or json
-v, --verbose Verbose output
잘못된 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
셀렉터 형태의 매개변수가 //text(), ../../..//text(), //@*, 인덱스 경로와 같은 절대 또는 상대 XPath 경로와 유니언될 수 있는지 테스트합니다.
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 참조.
이 도구는 승인된 보안 테스트 전용입니다. 소유했거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오.
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/ 제거 |