응답 길이 또는 상태 변경 결과 분석
이 단계에서는 Gobuster 퍼즈 스캔 결과를 해석하는 방법을 배웁니다. 잠재적으로 유효하거나 흥미로운 GET 파라미터를 식별하는 열쇠는 HTTP 응답의 변경 사항을 관찰하는 데 있습니다.
Gobuster 가 실행되면 요청하는 각 요청에 대한 HTTP 상태 코드와 콘텐츠 길이 (바이트 단위) 를 표시합니다.
예를 들어, 이전 단계의 출력은 다음과 같습니다.
200 (290) - http://127.0.0.1:8000/index.html?id=test
200 (290) - http://127.0.0.1:8000/index.html?name=test
...
여기서 200은 HTTP 상태 코드 (OK) 이고, 290은 응답의 콘텐츠 길이입니다.
확인해야 할 사항:
- 다른 상태 코드: 특정 파라미터 이름이 포함된 요청이 다른 HTTP 상태 코드 (예: 유효한 경우
200, 찾을 수 없는 경우 404, 서버 오류의 경우 500, 리디렉션의 경우 302) 를 반환하는 경우 애플리케이션이 해당 파라미터를 처리했거나 반응했음을 나타낼 수 있습니다. 예를 들어, 일반적으로 404 Not Found를 반환하는 파라미터에 대해 200 OK가 반환되는 것은 중요할 수 있습니다.
- 다른 콘텐츠 길이: 상태 코드가
200 OK로 유지되더라도 콘텐츠 길이의 변경은 강력한 지표가 될 수 있습니다. 이는 종종 애플리케이션의 응답 본문이 변경되었음을 의미하며, 특정 데이터가 파라미터와 관련되어 포함되거나, 오류 메시지 또는 다른 페이지 레이아웃이 포함될 수 있습니다.
- 오류 메시지: 때로는 파라미터가 응답 본문에 반영되는 오류 메시지 (예: SQL 오류, 애플리케이션 오류) 를 트리거하여 다른 콘텐츠 길이 또는
500 상태 코드를 유발할 수 있습니다. 이는 잠재적인 취약성의 강력한 신호입니다.
현재 랩 설정에서는 index.html이 정적 파일이고 Python 서버가 GET 파라미터를 처리하지 않기 때문에 모든 요청이 200 상태 코드와 동일한 콘텐츠 길이 (290 바이트) 를 반환하는 것을 볼 수 있습니다. 이는 간단한 테스트 사례에 대한 예상된 동작입니다.
실제 시나리오에서 라이브 웹 애플리케이션을 퍼징하고 다음과 같은 항목을 발견하는 경우:
200 (512) - http://example.com/search?query=test
다른 파라미터가 200 (290)을 반환하는 동안 query 파라미터는 다른 콘텐츠 길이로 인해 추가 조사가 가치가 있을 것입니다.
이 단계로 랩이 완료됩니다. Gobuster 를 사용하여 GET 파라미터를 퍼징하는 방법과 결과를 분석하는 방법을 성공적으로 배웠습니다.
Python HTTP 서버를 중지하려면 해당 프로세스 ID(PID) 를 찾아 종료할 수 있습니다. 먼저 실행 중인 Python 프로세스를 나열합니다.
ps aux | grep "python3 -m http.server 8000"
다음과 유사한 출력이 표시됩니다.
labex 1234 0.0 0.0 12345 6789 ? S HH:MM 0:00 python3 -m http.server 8000
PID(예: 이 예제에서는 1234) 를 기록한 다음 프로세스를 종료합니다.
kill 1234
1234를 찾은 실제 PID 로 바꾸십시오.