공부/정보보안기사 실기

[Section 08] 웹 어플리케이션 취약점 (356~ 374pg)

남쪽마을밤송이 2022. 5. 5. 21:56

 [ 01. SQL Injection 취약점 ] 

 (1) 개요 

  • Web Application에서 입력 받아 데이터베이스로 전달하는 정상적인 SQL 쿼리를 변조, 삽입하여 불법 로그인, DB 데이터 열람, 시스템 명령 실행 등을 수행하여 비정상적인 데이터베이스 접근을 시도하는 공격 기법
  • 조작한 입력으로 데이터베이스를 인증 절차 없이 접근 및 자료를 무단 유출하거나 변조할 수 있음
    • DB에 악성 스크립트를 삽입하여 접근하는 사용자를 피싱 사이트 또는 악성코드 유포 사이트로 유도
    • Stored Procedure를 통한 OS 명령어 실행
    • DB에 있는 개인정보 획득
  • 무료 SQL Injection 취약점 스캐너
    • Nikto : 오픈소스로 웹서버 및 SQL Injection에 대한 취약점 점검, 리눅스 기반
    • SQLMap : 블라인드 SQL Injection을 자동으로 수행하는 도구로 python 에서 개발
    • Absinthe : GUI 기반의 도구로 블라인드 SQL Injection 취약점에 이용, 데이터베이스의 스키마와 목록을 자동화 과정으로 다운로드 함

 (2) 공격방식에 의한 분류 

Form SQL Injection

  • 개요
    • HTML Form 기반 인증을 담당하는 어플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리문의 조건을 임의로 조작하여 인증을 우회하는 기법
    • 쿼리문의 조건절이 항상 참이 되도록 쿼리문 조작
    • 공격이 성공하는 경우, 반환되는 레코드 셋의 첫 번째 레코드에 해당하는 사용자 권한을 획득하게 된다.

Union SQL Injection

  • 개요
    • union select 쿼리를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법
    • union문은 2개 이상의 select문을 결합하고자 할 때 사용하며 이때 주의할 점은 각각의 select문의 필드 개수가 같아야 하며 필드 타입이 호환 가능해야 한다. union문은 일반 union과 union all 두 가지 방식이 있다.
      • union all : 단순히 2개 이상의 select문 쿼리 결과를 합해서 보여준다.
      • 일반 union : 2개 이상의 select문 쿼리 결과에서 중복을 제거하고 보여준다. 위 테스트 결과를 보면 쉽게 이해할 수 있다.

Stored Procedure SQL Injection

  • 개요
    • 저장 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 의미한다.

Mass SQL Injection

  • 개요
    • 기존 SQL Injection 의 확장된 개념으로 한 번의 공격으로 대량의 DB값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격
    • DB값 변조 시 악성 스크립트를 삽입하여, 사용자가 변조된 사이트 방문 시 감염되거나 악성 Bot이 설치됨
    • 악성 스크립트는 보통 js, swf, exe 파일 사용

SQL Injection 대응 방안

  • 데이터베이스와 연동하는 스크립트의 모든 파라미터를 점검하여 사용자의 입력값에 SQL 쿼리문에 이용되는 특수문자 및 select, update, insert, delete union등의 SQL 관련 문자열을 필터링한다.
  • 입력되는 문자열의 길이를 제한하고 숫자일 경우 숫자인지 체크하는 함수를 사용한다.
  •