본문 바로가기
Web hacking/Nomaltic) 웹 해킹 수업 노트 👩‍💻

[1주차]웹서버 구조와 프록시

by m_.9m 2021. 10. 16.

HTTP 프로토콜

Hypertext Transfer Protocol의 약어로 인터넷 상에서 데이터를 주고받기 위해

서버/클라이언트 모델을 따르는 프로토콜이다.

 

 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다. HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.

 

웹서버의 구조

(1) WEB Server (2) WAS (동적 페이지) > SQL 명령 (3) DB

 

*WEB Server: HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다.

*WAS(WEB Application Server): 웹서버로부터 애플리케이션 로직 실행 요청을 받으면 실행해 반환해줌.

*DB(Data Base): WAS에서 Data를 요청하기도 함.

 

* WEB Server vs WAS

= 정적 컨텐츠(HTML, CSS, IMAGE) vs 동적 컨텐츠(JSP, ASP, PHP)

= 정적 페이지 vs 동적 페이지(ex. login)

데이터 처리방식이 다름.

WAS는 보여지지 않아 보안이 된다.

 

* Server Side Script VS Client Side Script

  = 백엔드 vs 프론트앤드

  = WAS에서 실행 vs 클라이언트 웹 브라우저에서 실행

 

HTML 코드 <a> <button> <inout>

웹 브라우저 측 실행 = 클라이언트 측 코드

서비스를 하고 있는 코드가 서버.

역할, 서비스는 각각의 포트번호에 매핑되어 연결된다.

 

/*

#공부하고 수정될 부분

Burp Suite program)

score.php

#vim A_scpre.html

A Student Score

<h1>Congrat!</h1>

A: 200

값이 출력과 똑같음. 서버처리 코드 없음.

 

<?php

ffhvkjhsjv~~

echo(실행) ~

?>

PnP코드 서버측 코드(동적)

http://192.168.0.112/ 파일경로

score.php?name=nomaltic&score=100 ?뒤는 파라미터,메서드. GET방식으로 값을 같이 보냄.

서버측 코드는 서버에서 실행되는것 클라이언트측 코드는 내 컴 즉, 웹브라우저에서 실행

<script> 자바자바 alert('Hello') </script> → 서버에서 실행 X 그냥 전달. 클라이언트 웹 브라우즈에서 실행된다.

*/

 

WEB Proxy

대리인, 중간자 = 우리가 접근할 수 없는 네트워크에 접근하기 위해서 사용함.

 

예시 1) 특정 회사에서 보안을 위해 외부와 통신을 제한할때 예외적인 상황이 생기면 프록시 서버를 줌.

예시 2) 현재 위치가 아닌 다른 나라 위치를 빌려와 사용할 때 등등

 

웹 프록시 툴 (Burp Suite)

프록시를 사용하여 네트워크에서 통신하는 HTTP request를 가로채 분석 및 수정하고,

취약점 테스트나 해킹을 할 수 있는 점검도구.

 

1. 어떤 데이터를 사용하는지 알 수 있음.

2. 구조를 파악하면 보내는 데이터를 변조할 수 있음.

⇒ 파라미터 변조.

 

Burp suite = 패킷을 가로채는 프록시 툴 

https://portswigger.net/burp

 

Burp Suite - Application Security Testing Software

Get Burp Suite. The class-leading vulnerability scanning, penetration testing, and web app security platform. Try for free today.

portswigger.net

 

로그인(Login)

모든 요청은 독립적이다. 그러면 로그인은 뭐지?

  • 쿠키(포스트잇을 붙이는 것)로 로그인 유지
  • 세션 활성화 = 세션 테이블, 값 저장 로그인 항목에 A(1) = * 저장, Session ID 1번임을 알림

 세션아이디만 바꾸면 똑같이 유출이 될 수 있기때문에 ID는 예측가능한 수로 지정하지 않음.

    해커는 크로스 아이디 스크랩트, 엠아이티공격 등으로 이 세션아이디를 알아내려고 함.

 

Cookie) loginUser: nimaltic 5 <> A , Session ID 54454fjkgv!@$ - <>B / forward