# 보안 취약점과 해킹
* 보안: 기밀성, 무결성, 가용성을 보장하는 행위
* 정보 보안의 3요소
기밀성(Confidentiality) | ex) 암호학 |
무결성(Integrity) | ex) 해시 |
가용성(Availability) | 언제든지 실행 가능 |
- 보안 취약점: 정보 자산이 갖고 있는 허점으로 정보 보안의 3요소 중 최소 한 가지 이상에 영향을 미치는 취약점
해커: 취약점을 가지고 공격을 함
우리: 취약점을 방어해야 함
# 해킹의 기초 단계
① 정보수집: 정찰 / 스캐닝 및 취약점 분석 ex) 축구로 따지자면 상대편을 탐색하는 것
② 침투 및 시스템 장악: 침투(gainning access)
③ 공격 전이
- 권한 상승 ex) 관리자 권한 획득
- 백도어 관리
- 흔적 지우기
# HTTP에 대한 이해
1. 서버가 준비 상태가 되면
2. 클라이언트는 읽고자 하는 문서를 서버에 요청
3. 서버는 웹 문서 중 클라이언트가 요청한 문서를 클라이언트에 전송하고
4. 연결을 끊음
- HTTP
- connection less
- 클라이언트가 웹 브라우저를 이용해 서버에 연결을 요청하면, 연결 요청을 받는 서버는 그 클라이언트에 대해 서비스를 준비
- Hypertext: 텍스트+그림 // connection 과정을 반복해서 거쳐야하는 비효율성 발생 → 쿠키, 세션이 필요해짐에 따라 3-way handshake 방식 등장
- HTTP Request
- METHOD: 데이터 요청 방식 // ex) GET
- GET: URL을 통해 전송 - 노출(보안에 취약)
- POST: HTTP 헤더와 데이터를 전송 // 서버 처리가 필요한 data는 POST 방식만 가능 ex) 글 저장/수정/삭제
- 기타: HEAD, OPTIONS, PUT, DELETE, TRACE
- /: 웹 서비스에서의 루트
- version of protocol: HTTP/1.1
- HTTP Response
- 헤더 정보 뒤에는 실제 데이터 HTML이나 그림파일이 전달됨
- 데이터 전달이 끝나면 서버는 연결을 끊음
- version of protocol // ex) HTTP/1.1
- status code // ex) 200
- 200: 성공
- 400: 클라이언트측 에러
- 500: 서버측 에러
- status message // ex) OK
- URL(Uniform Resource Locator)
- 3-way handshake 방식
* 쿠키랑 세션은 같이 생성되며 세션 생성 후 client로 쿠키를 보냄
80번 포트는 열린 포트로 HTTP의 목적지 포트임
# 웹 서비스에 대한 이해
1. HTML
- 가장 단순한 형태의 웹 언어
- 클라이언트가 특정 HTML 페이지를 요청하면 해당 HTML 문서를 클라이언트로 전송해 줌
- 정적인(Static) 웹 페이지라고 함
* 동적 웹 페이지: 서버가 처리해야 함
Clinet는 Random port를 사용
Sever는 well-known port를 열고 대기 중(80번)
2. SSS
- ASP나 JSP와 같은 동적인 페이지를 제공하는 스크립트를 SSS(Server Side Script)라고 함
- 스크립트에 HTML 확장자 대신 ASP 또는 JSP의 확장자를 가진 웹 문서를 요청하면 ASP는 DLL이나 OCX 같은 파일을 이용해, JSP는 서블릿을 이용해 요청 처리
- 그 다음 결과를 HTML 파일로 만들어 클라이언트에 전송
3. CSS
- 웹 서비스에 이용되는 스크립트에는 자바 스크립트(JavaScript)나 비주얼 베이직 스크립트(Visual Basic Script) 등이 있음
# 웹(Web)에 아키텍처
- proxy(대리자)
- 캐싱(부하 ↓): 서버에서 조회한 정보를 저장
- 인증: 모든 곳에서 인증은 1번만 가능
- 보안 차원에서 1차적으로 방어
- 웹 프록시를 통하여 취약점 분석 가능 → burp suite 사용
- client ↔ proxy
- web proxy에 이미 조회해본 데이터가 저장되어 있는지 확인
- 만약 조회해본적이 있다면 server에 조회를 요청하지 않고 proxy가 해당 정보를 바로 반환
- proxy ↔ server(web+DB)
- web proxy에 데이터가 저장되어 있지 않으면 server에 조회 요청
# 웹의 주요 취약점 10가지
- OWASP: 국제웹보안표준기구
- 명령 삽입 취약점
- XSS 취약점
- 취약한 인증 및 세션 관리
- 직접 객체 참조
- CSRF 취약점
- 보안 설정 취약점 // ex) 디렉터리 리스팅
- 취약한 정보 저장 방식
- URL 접근 제한 실패
- 인증 시 비암호화 채널 사용
- 부적절한 오류 처리
# 웹의 취약점 보완
- 특수 문자 필터링
- 서버 측 통제 작용
- 지속적인 세션 관리
'Hacking Tech > Web hacking' 카테고리의 다른 글
[웹보안] msfconsole로 DB 침투 및 brute force 공격 실습 (0) | 2022.03.31 |
---|---|
[웹보안] Web/DB Server (0) | 2022.03.27 |
[Dreamhack] Background: Non-Relational DBMS (0) | 2022.03.11 |
[Dreamhack] ServerSide: SQL Injection (0) | 2022.03.08 |
[Dreamhack] Background: Relational DBMS (0) | 2022.03.07 |