HTTP 요청 지도 읽기
공개 방문자 상태로 Aurora SmartCoupon의 할인 확인 화면을 블랙박스 방식으로 점검하세요. 브라우저 개발자 도구나 로컬 프록시로 자신의 요청과 응답을 관찰·재전송할 수 있습니다. 직원용 화면에 인증 없이 도달할 수 있는지 확인하고, 재현 시각과 최소한의 요청·응답 증거를 보존하세요.
의뢰 배경
오로라 문구점은 내일 오전 9시 여름 기획전을 엽니다. 오늘 새벽 사전 체험 고객 한 명이 공개된 ‘할인 확인’ 화면을 새로고침하던 중 직원용으로 보이는 서비스 상태 화면을 보았다고 신고했습니다. 직원 로그인 기록은 없었고 주문·결제 정보 노출 여부도 아직 확인되지 않았습니다. 온라인영업팀은 행사 오픈 여부를 결정하기 위해 외부 방문자 권한만으로 같은 현상이 재현되는지 긴급 검증을 요청했습니다.
이번 목표
일반 고객 권한으로 직원용 서비스 상태 화면에 도달할 수 있음을 재현하고 요청·응답 증거를 확보하세요.
- HTTP 요청의 method, path, query, header, body를 구분한다.
- 응답의 status, header, body가 서로 다른 정보를 전달한다는 점을 확인한다.
- 화면에 보이지 않는 네트워크 정보를 개발자 도구에서 찾는다.
학습 노트 · 웹 해킹의 첫 단계는 화면을 보는 것이 아니라 브라우저와 서버가 주고받는 메시지를 읽는 것입니다.
브라우저는 주소와 폼 입력을 HTTP 요청으로 바꾸고, 서버는 상태 코드·헤더·본문으로 이루어진 응답을 돌려줍니다. 같은 화면을 열어도 method나 header가 달라지면 서버가 전혀 다른 동작을 할 수 있습니다.
개발자 도구의 Network 패널에서는 요청 URL, method, 요청 헤더, 폼 데이터, 응답 헤더와 본문을 각각 볼 수 있습니다. Elements 패널은 최종 화면을 보여 주지만 Network 패널은 그 화면이 만들어진 과정을 보여 줍니다.
승인된 블랙박스 점검에서는 의뢰서에 적힌 host와 화면에서 직접 확인한 같은 출처의 읽기 전용 경로만 요청해야 합니다. 개발자 도구와 프록시는 승인 범위를 넓혀 주는 도구가 아닙니다.
| 구성 요소 | 예시 | 확인할 질문 |
|---|---|---|
| Method | GET, POST | 읽기 요청인가, 상태를 바꾸는 요청인가? |
| Path / Query | /coupon?code=SPRING | 어떤 자원과 입력값을 선택하는가? |
| Request Header | Accept-Language: ko-KR | 브라우저가 서버에 어떤 문맥을 전달하는가? |
| Response Header | Link: </help>; rel=help | 본문 밖에서 서버가 어떤 관계 정보를 주는가? |
| Response Body | HTML 또는 JSON | 서버가 처리 결과를 어떻게 표현하는가? |
GET /aurora/discount/check HTTP/1.1
Host: coupon.aurora-stationery.training
Accept: text/html
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-store막혔을 때만 열기
다음 단서가 필요할 때만 한 단계씩 확인하세요.
힌트 1 · 요청을 다시 관찰하기
개발자 도구를 연 뒤 페이지를 새로고침하고 Network 목록에서 document 요청을 선택하세요.
힌트 2 · 본문 밖의 정보
Headers 탭의 Response Headers를 살펴보고 일반 고객 응답에 어울리지 않는 운영 관련 값이나 URL 형태의 단서를 찾으세요.
힌트 3 · 요청 문맥 비교
응답이 가리킨 같은 host의 위치를 요청한 뒤 정상 고객 요청과 무엇이 다른지 비교하세요. 브라우저가 자동으로 보내지 않는 값은 로컬 프록시의 재전송 기능으로 확인할 수 있습니다.
검증 타깃 접속 준비 완료
타깃은 실제 HTTP 요청을 처리하며, 데이터는 이 계정의 임시 instance 안에서 2시간 뒤 폐기됩니다.