
xpath는 Nim으로 작성된 빠르고 다양한 기법을 사용하는 XPath 인젝션 스캐너입니다. 실용적 탐지, 응답 비교, 가시적 추출, 블라인드 추출에 중점을 둡니다.
| 영역 | 지원 |
|---|
| 탐지 | 오류 기반, 불리언 기반 블라인드, 시간 기반 블라인드, 인증 우회, 유니언/노드 선택 |
| 추출 | 가시적 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는 사용 가능한 최상의 추출 모드를 선택합니다:
| 모드 | 설명 |
|---|---|
| 가시적 인증 응답 | 성공적인 우회 응답에서 새 행, 링크, 리다이렉트, 렌더링된 값을 파싱 |
| 가시적 유니언 경로 | 유니언/노드 선택 페이로드에서 새로 렌더링된 텍스트 추출 |
| 블라인드 추출 | string-length(), substring(), name(), count()를 사용하여 XML 데이터 유추 |
예시:
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])"
| 레벨 | 초점 |
|---|---|
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/ 제거 |
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 참조.
이 도구는 승인된 보안 테스트 전용입니다. 소유했거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오.