Fascination
article thumbnail

# 보안 취약점과 해킹

* 보안: 기밀성, 무결성, 가용성을 보장하는 행위

* 정보 보안의 3요소

기밀성(Confidentiality) ex) 암호학
무결성(Integrity) ex) 해시
가용성(Availability) 언제든지 실행 가능

- 보안 취약점: 정보 자산이 갖고 있는 허점으로 정보 보안의 3요소 중 최소 한 가지 이상에 영향을 미치는 취약점

https://www.aldeid.com/wiki/Definitions/Threats-vulnerabilities-assets

해커: 취약점을 가지고 공격을 함

우리: 취약점을 방어해야 함

 

 

# 해킹의 기초 단계

① 정보수집: 정찰 / 스캐닝 및 취약점 분석 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로 쿠키를 보냄

 

WEB server

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. 캐싱(부하 ↓): 서버에서 조회한 정보를 저장
  2. 인증: 모든 곳에서 인증은 1번만 가능
  3. 보안 차원에서 1차적으로 방어
  4. 웹 프록시를 통하여 취약점 분석 가능 → burp suite 사용

- client ↔ proxy

  • web proxy에 이미 조회해본 데이터가 저장되어 있는지 확인
  • 만약 조회해본적이 있다면 server에 조회를 요청하지 않고 proxy가 해당 정보를 바로 반환

- proxy ↔ server(web+DB)

  • web proxy에 데이터가 저장되어 있지 않으면 server에 조회 요청

 

 

# 웹의 주요 취약점 10가지

  • OWASP: 국제웹보안표준기구
  • 명령 삽입 취약점
  • XSS 취약점
  • 취약한 인증 및 세션 관리
  • 직접 객체 참조
  • CSRF 취약점
  • 보안 설정 취약점 // ex) 디렉터리 리스팅
  • 취약한 정보 저장 방식
  • URL 접근 제한 실패
  • 인증 시 비암호화 채널 사용
  • 부적절한 오류 처리

 

 

# 웹의 취약점 보완

  • 특수 문자 필터링
  • 서버 측 통제 작용
  • 지속적인 세션 관리

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!