min8282

[공통과정] 웹 해킹 본문

K-Shield.Jr

[공통과정] 웹 해킹

min8282 2024. 7. 15. 00:46

웹 해킹이란?

  • 웹 사이트의 취약점을 이용하여 공격하는 기술
  • 웹 페이지를 통해 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위를 할 수 있음
  • 대표적으로 SQL Injection, XSS, CSRF, File Upload가 존재

OWASP(Open Web Application Security Project)

  • 웹 애플리케이션에서 발생할 수 있는 위험들에 대해 연구하는 오픈 소스 프로젝트

그림1. OWASP
그림2. OWASP Top10 2021


1. SQL Injection

  • 데이터베이스와 연동된 응용 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 데이터에 SQL 쿼리문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 취약점

그림3. SQL Injection

SQL Injection 원리

웹 사이트 로그인 시 DB에 계정 정보 확인방법 예시

 

Blind SQL Injecton

  • 참(true)/거짓(false) 쿼리문 입력 시 반환되는 서버의 응답이 다른 것을 비교하여 데이터를 추출하는 공격

그림4. Blind SQL Injction(Numeric) 예시
그림5. Blind SQL Injection(String) 예시


2. Command Injection

  • 사용자 입력 값이 운영체제 명령어의 일부 또는전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 영향을 줌
  • 일반적으로 명령어 라인의 파라미터나 스트림 입력 등 외부 입력을 사용하여 시스템 명령어를 생성하는 프로그램에서 발생

그림6. Command Injection

 


3. Cookie & Session

쿠키(Cookie)

  • 사용자의 웹 브라우저에 저장되는 작은 기록 정보 파일(웹 브라우저에 쿠키라는 파일로 저장됨)
  • 저장된 정보를 다른 사람이 확인 가능하며 유효시간이 지나면 사라진다.

그림7. Cookie 전달 과정

목적

  • 세션 관리(Session Management) : 서버에 저장해야 할 로그인, 장바구니 등 정보 관리
  • 개인화(Personalization) : 사용자의 테마 등 세팅
  • 트래킹(Tracking) : 사용자의 행동을 기록하고 분석

쿠키 속성

3-1. HttpOnly

  • 설명: HttpOnly 속성이 설정된 쿠키는 클라이언트 측 스크립트(JavaScript 등)에서 접근할 수 없다. 오직 서버 측에서만 접근할 수 있다.
  • 목적: XSS (Cross-Site Scripting) 공격을 방지하기 위해 사용된다. XSS 공격에서는 악성 스크립트가 쿠키에 저장된 민감한 정보를 훔칠 수 있기 때문에, HttpOnly 속성을 통해 이러한 공격을 방지할 수 있다.

3-2. Secure

  • 설명: Secure 속성이 설정된 쿠키는 HTTPS를 통해서만 전송됩니다. HTTP 연결에서는 전송되지 않는다.
  • 목적: 네트워크를 통한 쿠키의 탈취를 방지하기 위해 사용됩니다. HTTPS는 데이터를 암호화하여 전송하기 때문에, 중간에서 쿠키가 탈취되는 것을 방지할 수 있다.
  • 주의사항: Secure 속성만으로는 충분하지 않으며, HTTPS를 사용하는 모든 페이지에서 사용해야 한다.

3-3. SameSite

  • 설명: SameSite 속성은 쿠키의 크로스사이트 요청에서의 동작 방식을 정의한다. SameSite 속성에는 세 가지 값이 있다: Strict, Lax, None.
    • Strict: 쿠키가 크로스사이트 요청과 함께 전송되지 않는다. 즉, 사용자가 다른 사이트에서 링크를 클릭해도 쿠키가 전송되지 않는다.
    • Lax: 쿠키가 크로스사이트 요청과 함께 전송될 수 있지만, 안전한 HTTP 메서드(GET, HEAD, OPTIONS, TRACE)의 경우에만 전송된다. 주로 사용자가 다른 사이트에서 링크를 클릭하거나 GET 요청을 보낼 때 쿠키가 전송된다.
    • None: 쿠키가 모든 크로스사이트 요청과 함께 전송됩니다. 이 경우, Secure 속성이 필요하다.
  • 목적: CSRF (Cross-Site Request Forgery) 공격을 방지하기 위해 사용된다. CSRF 공격에서는 사용자가 의도하지 않은 요청을 보내게 함으로써 피해를 입히기 때문에, SameSite 속성을 통해 이러한 공격을 방지할 수 있다.

요약

  • HttpOnly: 클라이언트 측 스크립트에서 쿠키에 접근할 수 없도록 하여 XSS 공격을 방지한다.
  • Secure: 쿠키를 HTTPS 연결에서만 전송하도록 하여 네트워크를 통한 쿠키 탈취를 방지한다
  • SameSite: 쿠키의 크로스사이트 요청 동작을 제어하여 CSRF 공격을 방지한다.

이 세 가지 속성을 적절히 설정하면 웹 애플리케이션의 보안을 강화할 수 있다.


세션(Session)

  • HTTP Session ID를 식별자로 구별하여 데이터를 사용자의 브라우저에 쿠키형태가 아닌 접속한 서버 DB에 정보를 저장
  • 세션 ID만 웹 브라우저에 저장되고, 다른 정보들은 서버에 저장

브라우저에서 세션은 저장이 안 됨. 브라우저를 끄면 없어진다. Why? 세션은 메모리에 저장되기 때문

로그인을 한 상태에서 시간이 지나면 왜 다시 로그인을 해야 할까?

  • 웹 서버는 브라우저를 꺼도 서버에서 세션을 삭제하지 않는다. Why? 서버는 브라우저가 꺼진줄 모르기 때문. 하지만, 세션 유효시간을 정해 놓기 때문에 정해진 시간이 지나면 브라우저는 세션 ID를 가지고 있지만 서버에서는 세션 ID가 삭제되어 로그인을 다시 해야 하는 것이다.

4. XSS(Cross Site Scripting)

  • 웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하는 공격
  • 예를 들어, 검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공격을 유발

대응방안 - 추가예정

그림8. Reflected XSS
그림9. Stored XSS


5. CSRF(Cross Site Request Forgery)

  • 불특정 다수를 대상으로 로그인 된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 수행하게 만드는 공격

대응방안)

추가예정

그림10. CSRF


6. File Upload

 


 

Reference

 

 

https://www.indusface.com/learning/what-is-command-injection/

https://nesoy.github.io/articles/2017-03/Session-Cookie