해킹? 본래의 의도와는 다른 행위를 발생시키는 것을 의미.
해킹을 위해서는 설계 또는 운영의 약점을 찾아야 함. 이를 위해서는 설계자 또는 운영자보다 해당 시스템에 대한 높은 이해도를 가지고 있어야 한다.
웹 | 인터넷상의 서비스 중 HTTP를 이용하여 정보를 공유하는 통신 서비스 |
웹 클라이언트 | 서비스를 받는 사용자 |
웹 서버 | 서비스를 제공하는 대상 |
웹은 웹 사이트 접속 형태 외에도 모바일 서비스, IoT 장비 관리 페이지 등 다양한 형태로 일상생활 곳곳에서 사용됨.
초기 웹은 저장된 문서의 내용을 출력해 사용자에게 제공하는 간단한 서비스.
시간이 지남에 따라 입력과 입력에 따른 기능 수행이 추가됨.
웹 기초 지식
Web Browser | 웹에 접속하기 위해 사용하는 소프트웨어 |
Web Resource | 웹 상에 존재하는 모든 콘텐츠 (html, css, js, pdf, png...) |
URI (URL) | Uniform Resource Identifier 리소스를 식별하기 위한 식별자 |
HTTP | 인터넷 서비스는 서비스 대상 간 통신 규약이 지정되어있음. HTTP는 웹을 이용하기 위한 통신규약. |
HTTPS | HTTP 데이터를 암호화하여 통신. |
Cookie | 웹 브라우저에 저장하는 데이터. |
Session | 서버에 저장하는 데이터 |
Domain Name | 인터넷(웹) 네트워크 상에서 컴퓨터를 식별하는 이름. |
Server | 인터넷 상에서 사용자에게 서비스를 제공하는 컴퓨터 웹 서버는 사용자(웹 브라우저와) HTTP를 이용하여 통신하는 서버 |
Application | 서버에서 설정한 특정 기능들을 수행하는 소프트웨어 |
Database | 데이터를 저장하기 위해 사용하는 데이터 저장소 |
Web Browser
- 웹을 사용하기 위해 사용하는 소프트웨어
- 브라우저는 HTTP를 통해 인터넷 상에서 통신을 하며 서버로부터 전달받은 다양한 웹 리소스들을 가공해 사용자에게 전달.
네트워크 프로그램
nc , telnet과 같은 네트워크 프로그램을 통해 웹을 사용하기 위해서는 웹 서버가 이해하고 해석할 수 있는 형태(HTTP)의 데이터를 직접 작성해야한다.
CLI 프로그램
curl, wget과 같은 CLI 프로그램을 통해 웹을 사용하게 되면 반환데이터를 단순히 출력만 하게 된다.
웹 브라우저
주소창을 통해 HTTP 요청 대신 전달, 응답 데이터(html, css ,js) 를 가공하여 화면으로 뿌려줌.
URI(URL)
URI는 리소스를 식별하기 위한 식별자.
URL은 Uniform Resource Locator로 리소스의 위치를 식별하기 위한 URI의 하위 개념.
- Scheme : 프로토콜 지정 기본적으로 http/https 사용. mailto, tel 등을 통해 메일 클라이언트나 연락처를 열기도 함.
- Authority : Host + Port
- Path : 리소스 경로
- Query : 웹 서버에 전달하는 파라미터 ? 뒤에 붙음
- Fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근 시에 식별하기 위한 정보 담고 있음 # 뒤에 붙음.
Encoding
- Encoding은 문자 또는 기호 등의 정보, 형태를 표준화, 보안 등의 목적으로 다른 형태나 형식으로 변환하는 처리 방식.
- 알고리즘이 모두 공개되어 있고 키와 같은 요소가 포함되어 있지 않아서 원래의 정보로 복원 가능.
Encryption은 양방향 암호 알고리즘. 일치한 알고리즘과 유효한 키를 가지고 있다면 원래의 정보로 복원이 가능.
웹에서 사용하는 대표적인 인코딩은 URL과 HTML Entity가 있음.
URL에서는 예약어를 인코딩해야 함. (? , & , # , =)
? | %3F |
# | %23 |
& | %26 |
= | %3D |
HTML entity Encoding
HTML 내에서 사용하는 문자열들이 태그로 인식하지 않도록 하기 위해 사용.
& | & | & |
< | < | < |
> | > | > |
Http Request
- 첫번째 줄은 수행하고자하는 동작 Method , Path, Version이 주어짐.
- 두번째 줄부터 Header 부분. Header는 이름:값 형태.
- 마지막 사용자의 데이터 담는 Body 존재.
GET /index.html HTTP/1.1
Host: dreamhack.io
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
- Host
- 데이터를 보내는 서버의 주소를 의미합니다.
- Cookie
- 사용자를 식별하기 위해 사용하는 정보입니다.
- User-Agent
- 사용자가 사용하는 프로그램의 정보를 나타냅니다.
- Referer
- 페이지 이동 시 이전 URI의 정보를 나타냅니다.
- Content-Type
- 사용자가 전달하는 데이터의 처리 방식과 형식을 나타냅니다. 사용자와 서버 간의 데이터 처리 방식이 일치되어야 정상적으로 데이터 통신이 이루어집니다.
HTTP Response Status code
- 200번 영역
- 200 OK
- 201 Created
- 사용자의 요청에 대한 서버의 처리가 성공하였음을 나타냅니다.
- 300번 영역
- 301 Moved Permanently
- 302 Found
- 사용자가 요청한 리소스가 다른 경로로 변경된 경우를 나타내는 영역입니다. 웹 브라우저에서 300번 영역의 응답 상태 코드가 반환되면, Response Header에 포함되어 있는 Location 헤더의 값으로 리다이렉션 합니다.
- 400번 영역
- 400 Bad Request
- 사용자가 전달한 데이터 또는 구조의 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미합니다.
- 403 Forbidden
- 사용자가 해당 웹 리소스에 접근할 권리를 가지고 있지 않음을 나타냅니다.
- 404 Not Found
- 사용자가 요청한 웹 리소스의 경로에 대해 응답할 데이터가 없음을 나타냅니다.
- 405 Method Not Allowed
- 사용자가 요청한 Method가 서버에서는 허용하지 않는 Method임을 나타냅니다.
- 사용자가 서버에 요청하는 구조 또는 데이터가 잘못되었음을 나타내는 영역입니다.
- 500번 영역
- 500 Internal Server Error
- 서버의 에러가 발생하였음을 나타냅니다.
- 503 Service Unavailable
- 서버가 사용자의 요청을 처리할 준비가 되지 않았음을 나타냅니다.
- 서버의 에러와 관련된 영역입니다.
'Security' 카테고리의 다른 글
[wargame] cookie (0) | 2021.09.16 |
---|---|
[Webhacking] (cookie, session) (0) | 2021.09.16 |
Mysql 데이터베이스 해킹 흔적 패킷 분석 (0) | 2020.09.08 |
Nikto 패킷 분석 사례 (0) | 2020.09.06 |
침해사고 샘플분석 2 (패킷에서 war 파일 추출) (0) | 2020.09.05 |