또 뭐하지

[기초] 웹 해킹 개념 간략 정리 본문

I.sly()/9기 기초 - 공통

[기초] 웹 해킹 개념 간략 정리

mameul 2024. 4. 4. 23:58
728x90

1. OWASP TOP 10

OWASP TOP 10 : OWASP에서 발표하는 가장 중요한 웹 애플리케이션 보안 위협 목록

OWASP TOP 10 (2024)

  1. 부적절한 자격 증명 사용(Improper Credential Usage)
  2. 불충분한 공급망 보안(Inadequate Supply Chain Security)
  3. 보안에 취약한 인증 및 권한 부여(Insecure Authentication/Authorization)
  4. 부족한 입력/출력 검증(Insufficient Input/Output Validation)
  5. 안전하지 않은 통신(Insecure Communication)
  6. 불충분한 개인 정보 보호 제어(Inadequate Privacy Controls)
  7. 부족한 바이너리 보호(Insufficient Binary Protections)
  8. 잘못된 보안 구성(Security Misconfiguration)
  9. 안전하지 않은 데이터 저장소(Insecure Data Storage)
  10. 불충분한 암호화(Insufficient Cryptography)

2. SQL Injection

SQL Injection

악의적인 사용자가 웹 응용 프로그램의 입력 매개 변수를 통해 SQL 쿼리를 삽입하여 데이터베이스 시스템을 공격하는 기술

SQL 문법

  • 데이터 정의 언어 (DDL) : CREATE, ALTER,DROP
  • 데이터 조작어 (DML) : DB에 있는 데이터를 검색, 삽입, 수정, 삭제하는 데 사용 (=쿼리)
    • SELECT : 데이터 조회
    • INSERT : 데이터 삽입
    • UPDATE : 데이터 수정
    • DELETE : 데이터 삭제
  • 데이터 제어 언어 (DCL) : GRANT,REVOKE
  • 트랜잭션 제어 언어 (TCL) : COMMIT,ROLLBACK

논리연산

SQL문의 WHERE 절을 항상 참으로 만드는 공격을 수행하는데 이용
기본적으로 논리 연산이 여러 개가 나열되면 NOT-AND-OR 순서로 계산

SQL Injection 종류

  • Error based SQL Injection : 논리적 에러를 이용하는 공격. 논리 연산을 이용하는 것이 일반적이며 인증 우회가 목적.
  • UNION based SQL Injection : 여러 SQL문을 합쳐 실행할 수 있는 UNION을 이용하는 공격. 데이터 노출이 목적.
  • Blind SQL Injection : 데이터베이스 메시지가 공격자에게 보이지 않는 경우에 사용하는 공격. 데이터베이스 서버의 응답을 통해 데이터베이스에 대한 정보를 추측.
  • Boolean based SQL Injection : 쿼리가 참일 때와 거짓일 때의 서버 반응으로 데이터를 얻어내는 공격.
  • Time based SQL Injection : 쿼리의 참과 거짓을 판별할 수 없는 경우 사용하는 공격. 시간 지연시키는 쿼리를 주입하여 응답 시간 차로 참과 거짓 여부 판별.

방어 방법

  • 입력값 검증 : /,-,'," 등의 의도하지 않은 입력을 검증
  • Prepared statement 사용 : 쿼리를 사전에 컴파일하고 입력 변수 값만 삽입하는 방법. 사용자 입력이 매개변수로 전달되므로, 입력 값이 직접 SQL 쿼리에 삽입되지 않음.

3. File Upload Vulnerability

File Upload Vulnerability

파일 업로드 취약점 : 악성 스크립트를 업로드하여 원격 코드를 실행할 수 있는 취약점

공격 목적

  1. 웹 서버를 통해 DB 정보 획득 : DB에 직접 접근할 수 없기 때문에 서버에 먼저 접근
  2. 근접 네트워크 침투 : 내부 포탈 서버, 로그 서버 등 내부 시스템을 대상으로 포트포워딩, 터널링 기법 등을 통해 네트워크에 침투

공격 원리

  1. 확장자 제한 및 파일 접근/실행 권한이 있는지 확인
  2. 파일 접근/실행이 가능하고 확장자 제한만 있는 취약한 웹 사이트의 경우 Proxy 툴을 이용한 파일 타입 변조하거나 Null 이용하여 확장자를 숨김

방어 방법

  • 시큐어 코딩을 통한 확장자 검증
  • 화이트리스트(허용 리스트) 허용으로 확장자 검증
  • 시스템 보안 레벨 상승
  • 서버를 분리해 관리하거나, 실행 권한 삭제
  • 지속적인 모니터링

4. XXS

XSS(Cross Site Scripting)

클라이언트 사이드 취약점. 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능 수행 가능.
공격자는 웹 리소스에 악성 스크립트를 삽입하여 이용자 웹 브라우저에서 해당 스크립트 실행 가능.

Java Script

웹 문서의 동작을 정의.
웹 브라우저의 저장된 세션 및 쿠키를 JS로 이용자와의 상호 작용 없이 조회하거나 변경할 수 있음.
다양한 동작을 정의할 수 있기 때문에 XSS 공격에 주로 사용.

XSS 종류

  • Stored XSS : 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS. 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생.
  • Reflected XSS : XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS. 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생.
  • DOM 기반 XSS : XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS

방어 기법

  • 입력 값 제한
  • 입력 값 치환 : 태그 문자(<,>) 등 위험한 문자 입력 시 문자 참조로 필터링하고, 서버에서 브라우저로 전송 시 문자 인코딩
  • 스크립트 영역에 출력 자제

5. CSRF

CSRF (Cross-Site Request Forgery)

사이트 간 요청 위조. 공격자가 공격 대상 브라우저에 다른 웹 사이트로 HTTP 요청을 보내 서버에 대한 공격을 함.
취약한 웹 사이트에서 이미 인증을 완료한 공격 대상이 전혀 인지하지 못한 상황에서 요청을 보냄
웹 사이트에서 요청을 인증하는 절차상의 약점을 악용하여 서버 측 정보를 수정하고 사용자 계정을 장악함.

HTTP Request Method

  • GET method : 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메소드. 대표적으로 URL에 Parameter를 붙여 전송.
  • POST method : 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는데 사용되는 메소드. GET과 달리 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 전송.

공격기법

  • GET 요청 기반 CSRF 공격 : 공격자가 악의적인 링크에 접속하도록 유도하는 것
  • POST 요청 기반 CSRF 공격 : 공격자가 피해자의 브라우저를 통해 악의적인 폼을 자동으로 제출하도록 하는 것
  • 히든 폼 기법 : 악의적인 웹 페이지에 웹 애플리케이션에 대한 요청을 생성하는 히든 폼을 포함하는 것

방어 기법

  • CSRF 토큰
  • CORS(Cross-Origin Request Sharing) 사용
  • HTTP 요청과 함께 제출된 Origin이나, Referer 헤더의 값을 확인하고 예측값이 포함되어 있지 확인