
Apache JServ Protocol (ajp13)을 위한 명령줄 퍼저
AJPFuzzer는 Apache JServ Protocol(ajp13)을 위한 기본적인 퍼저입니다.
libajp13을 기반으로 구축된 이 도구는 사용하기 쉬운 커맨드라인 인터페이스를 통해 AJP 메시지를 생성하고 전송할 수 있게 해줍니다. AJPFuzzer는 올바르게 포맷된 AJP13 메시지(모든 메시지 유형)뿐만 아니라 변이(예: 비트 플리핑, 유형 불일치 메시지 등)도 제작할 수 있어, 웹 서버 AJP 모듈, J2EE 컨테이너 등 AJP 기반 서비스를 대상으로 하는 보안 테스트 노력을 용이하게 합니다.
최신 AJPFuzzer jar 파일을 릴리즈 페이지에서 다운로드합니다.
다운로드한 jar 파일을 다음 명령어로 실행합니다:
$ java -jar ajpfuzzer_v0.7.jar
도구가 셸을 표시합니다. ?list를 입력하면 사용 가능한 모든 명령어를 나열할 수 있습니다. 이 시점에서 다음을 사용하여 대상에 연결할 수 있습니다:
AJPFuzzer> connect 127.0.0.1 8009
그런 다음 '10'을 입력하기만 하면 CPing 메시지(유형 10)를 보낼 수 있습니다(이 메시지에는 인수가 필요하지 않습니다).
AJPFuzzer/127.0.0.1:8009> 10
다음 스크린샷은 전체 실행 과정을 보여줍니다:
물론 적절한 테스트 케이스와 인수를 지정하여 더 복잡한 메시지를 보낼 수도 있습니다. 특정 명령어에 대한 자세한 내용은 *?list *를 참조하십시오.
예를 들어, 완전히 사용자 정의된 ForwardRequest 유형 메시지를 다음과 같이 보낼 수 있습니다:
> forwardrequest 2 "HTTP/1.1" "/api/" 127.0.0.1 localhost porto 8009 false "Cookie:AAAA=BBBB" ""
또한 임의의 요소를 퍼징하는 ForwardRequest 메시지를 보낼 수도 있습니다:
> genericfuzz 2 "HTTP/1.1" "/test.html" "127.0.0.1" "127.0.0.1" "server.name.test" 8009 false "Cookie:AAAA=BBBB" "secret:FUZZ" /tmp/list.txt
현재 AJPFuzzer는 다음과 같은 테스트 케이스를 제공합니다:
AJPTestCases.java 클래스를 확장하여 새로운 테스트 케이스를 추가할 수 있습니다. @Command 어노테이션을 사용하면 도구가 추가 명령어를 인식하여 CLI에서 사용할 수 있게 합니다.
| Id | Name | Description |
|---|
| 1 | body | 웹 서버에서 J2EE 컨테이너로 본문 메시지 전송 |
| 2 | forwardrequest | 웹 서버에서 J2EE 컨테이너로 요청 처리 주기 시작 |
| 3 | sendbodychunk | J2EE 컨테이너에서 웹 서버로 본문 청크 전송 |
| 4 | sendheaders | J2EE 컨테이너에서 웹 서버로 응답 헤더 전송 |
| 5 | endresponse | J2EE 컨테이너에서 웹 서버로 응답 종료 표시 |
| 6 | getbodychunk | 요청자로부터 추가 데이터 가져오기. J2EE 컨테이너에서 웹 서버로의 메시지 |
| 7 | shutdown | 표준 종료 AJP13 패킷 전송 |
| 8 | ping | ping(CPing이 아님) AJP13 패킷 전송 |
| 9 | cpong | CPong AJP13 패킷 전송 |
| 10 | cping | CPing AJP13 패킷 전송 |
| 11 | forwardreqalltypes | 가능한 모든 패킷 유형으로 ForwardRequest AJP13 패킷 전송 |
| 12 | verbtampering | AJP13을 통해 여러 요청을 전송하고 HTTP 동사 변조를 수행하여 잠재적인 인증 우회 결함 탐지 |
| 13 | jettyleak | JettyLeak 스타일 AJP13 패킷 전송 |
| 14 | hugelengthsmallbody | 큰 Content-Length와 작은 Body로 ForwardRequest+Body 메시지 전송 |
| 15 | hugeheader | 헤더 길이가 0x9999(예: A010)보다 큰 두 개의 AJP13 ForwardRequest 패킷 전송 |
| 16 | fuzzbit | 복잡한 AJP13 ForwardRequest를 생성하고 비트 플리핑 시작 |
| 17 | fuzzslice | AJP13 ForwardRequest, SendHeaders, ShutDown, 0xFF, 0x00을 생성. 슬라이스하여 전송. |
| 18 | servletpath | 임의의 'servlet_path' 속성으로 AJP13 ForwardRequest 생성 |
| 19 | bypassauthnull | auth_type이 'null'로 설정된 두 개의 AJP13 ForwardRequest 생성 |
| 20 | envars | 임의의 환경 변수를 설정하기 위해 req_attribute_code(10)를 사용하여 AJP13 ForwardRequest 생성 |
| 21 | hugepacketsize | 크기가 8192바이트를 초과하는 두 개의 AJP13 요청 생성 |
| 22 | genericfuzz | FUZZ 키워드를 사용하여 임의의 메시지 요소를 퍼징할 수 있는 AJP13 ForwardRequest(GET) 생성 |