해킹: 개발자가 의도하지 않은 동작을 입력 혹은 행위를 통해 악의적 결과를 만들어 냅
웹 해킹: 클라이언트 - 웹 서비스의 요청/응답 코드 흐름 중 발생하는 취약점을 찾는 것
클라이언트단 - 브라우저: chrome, safari 등
- HTML/CSS/Javascript
- SPA (Single page application): 코드를 받아서 브라우저가 랜더링함 ex) Vue, React 등
서버단 - 웹서버, 데이터베이스: 데이터베이스에서 데이터를 꺼내서 사용함
- 웹서버: apache, nginx
- 웹애플리케이션서버 (WAS): tomcat, jeus 등
- PHP, JSP 등
- Framework: SPring, flask, Django 등
- 데이터베이스: mysql, oracle, redis 등
통신방법:
Request: 요청
Response: 응답 -> 응답 받은 값을 사용자 화면에 나타냄
* 취약점: 모든 입력값과 행위에서 취약점 발생 가능
HTTP 프로토콜
- 시스템은 프로토콜 규약에 맞는가 아닌가를 체크함
Method: 방법 (나의 의도)
- GET: URL 쿼리를 통해 파라미터에 담음
- POST: HTTP Body를 통해 파라미터에 담음
- PUT: 서버에 리소스 생성 및 수정
- DELETE: 리소스 삭제
- PATCH: 리소스 일부 수정
- HEAD: Content 없이 헤더 부분만 요청
- 이외에 개발자가 직접 코딩을 통해 사용할 수도 있음
REST API
- GET : 리소스 조회
- POST : 리소스 생성 요청
- PUT/PATCH : 리소스 업데이트
- DELETE : 리소스 삭제
URI (Method 옆에 있는 것)
- Protocol : 서버 리소스에 접근을 위해 사용되는 프로토콜 종류
- Host : 도메인 이름이나 IP주소
- Path: 어떤 파일에 접근할지 알려주는 리소스 주소
- Query String: 파라미터 전달 (? 를 기준으로 사용)
HTTP 버전: 1.1이 가장 많이 사용됨
Request Header
- HOST: 호스트 이름 (도메인, IP)
- Content - Type: POST body 데이터 형식 지정
- Content - Length : 요청하는 POST Body 데이터 길이
- User - Agent : 요청하는 클라이언트 정보 (브라우저 버전 등)
- Referer : 요청 패킷이 어디서부터 왔는지
- Cookie : 세션 정보 등 유지할 정보 (매 요청시마다 전송) - 안전하게 보관되어야 함 (https를 사용하는 등)
- Session : 어떠한 정보를 저장할 때 서버에 저장 (메모리, 파일, 데이터베이스), 서버에서 관리
Response
- Status Code
ex) 200 OK : 정상
300 : 이상함 (주소 옮겨야 함)
400 : 요청 잘못 함
500 : 서버쪽에서 문제가 생김
Response Header
- Server : 서버 정보
- Content-Type: 응답 데이터 타입 정의
- Set-Cookie : 쿠키 정보를 세팅 가능 (앞으로 이 쿠키를 쓰라는 의미)
- Content - Length : 응답 데이터의 길이
프록시: 클라이언트와 서버 사이의 응답/요청을 지켜보고 수정할 수 있음
ex) Fiddler, BurpSuite 등
Client Mitigation (완화, 경감)- 보안 위협 경감
:취약점을 막기 위해서 브라우저 자체적으로 공격을 막을 수 있는 기능
SOP (Same Origin Policy)
- 웹 브라우저에서 동작하는 스크립트나 요청이 특정 출처(origin)에서 온 것인지 확인하는 규칙 (내가 요청한 곳에서 온 응답이 맞는지 확인하기)
- 정확하게 똑같은 주소만이 SOP 정책을 통과할 수 있음 (https 기본 포트 443은 예외)
CORS (Cross Origin Resource Sharing)
- 웹 브라우조의 요청이 안전한 출처로의 요청인지 검증하는 방어 기법
- SOP는 다 차단하지만, 외부 스크립트나 이미지등을 사용하기 위해 허용해주는 정책
응답값 헤더의 Access-Control-Allow-Origin: 을 통해서 허용가능
*CORS free flight: 일단 헤더를 받아오고 유효한 것에 한해서만 바디 부분을 받을 수 있음
요청에 대해서는 일단 서버단에서 응답을 해주고, 그 다음에 응답에 대해서 규칙들을 적용함
CSP (Content Security Policy)
- 서버에서 허용한 동작만 브라우저에서 수행되도록 설정하는 정책
Content-Security-Policy: 를 통해 사용가능
Client Mitigation은 완벽하지 않기 때문에 아예 취약점을 없게 만드는것이 중요함!
XSS 취약점
: 복잡하여서 고치기도 어렵고 찾기도 어려움
XSS (Cross-Site Scripting) CSS대신 XSS사용함
- > 브라우저가 해석하는 자바스크립트에 임의 스크립트를 삽입하여 본래 개발자의 의도 외의 동작 등이 실행되는 취약점
Open Redirection
- HTML, JS에서 사용자의 입력을 통해 페이지를 이동시킬 경우, 임의 페이지로 이동시킬 수 있는 취약점
Redirection (다시 원래 사용하던 페이지로 돌아가는 것): 주로 클라이언트단에서 해결됨
CSRF (Cross-Site Request Forgery)
- URL에 접근하는 것만으로 검증 없이 정상적으로 요청이 처리 되는 취약점
'Study Log > 정보 보안' 카테고리의 다른 글
[정보보안] 사이버 범죄 (비공개) (0) | 2023.09.30 |
---|---|
[정보 보안] 9. 최신 보안 동향/프로젝트 관리 (0) | 2023.09.24 |
[정보 보안] 모바일 앱 취약점 분석 (비공개) (0) | 2023.09.24 |
[정보 보안] 8. 프로그래밍 기초 (1) | 2023.09.23 |
[정보 보안] 7. AWS 취약점 관리 기초 (0) | 2023.09.23 |