일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘
- codeup
- 보안
- RVA
- 인공지능
- dsa
- 웹
- ReflectedXSS
- StoredXSS
- Database
- dvwa
- 코드업
- 머신러닝
- RSA
- 딥러닝
- injection
- SQL
- db
- C언어
- XSS
- 프로그래머스
- 암호학
- 디피헬먼
- 공개키
- 기계학습
- 파일구조
- SQL_Injection
- 심층학습
- ImageBase
- Cross Site Scripting
- Today
- Total
Ye0ngJae
[웹] SQL Inejction에 대하여 알아보자 본문
개요
SQL Injection 취약점은 웹 서버의 DB로 전송되는 SQL 쿼리 문을 임의로 조작하여, 공격자가 작성한 SQL 구문을 보내어 서버의 DB를 공격하는 기법입니다. 사용자가 입력한 데이터를 공격자는 SQL 쿼리문을 조작하여, 악의적인 SQL 구문을 보내어 데이터베이스에 저장되어 있는 다른 사용자의 개인정보 등 허가되지 않은 정보에 접근하거나 데이터를 변조할 수 있습니다.
종류
1. Error Based SQL Injection
Error Based SQL Injection은 가장 대중적이고 많이 쓰이는 공격 기법입니다.
Error Based SQL Injection은 가장 대중적이고 많이 쓰이는 공격 기법입니다. 위와 같은 SQL 쿼리문을 사용하는 로그인 페이지가 있다고 가정해봅시다. 클라이언트로부터 uid와 upw 값을 입력받아 로그인을 진행합니다.
정상적으로 로그인을 진행하는 사용자는 위와 같이 로그인을 진행합니다. 하지만 악의적인 목적을 가지고 SQL Injection을 실행시키려는 공격자는 로그인 구문을 다음과 같이 작성할 수 있습니다.
공격자는 uid 입력 칸에 '를 입력하여 upw=' '로 만들고 뒤에 OR '1' = '1'을 붙였습니다. WHERE 구문 뒤에 오는 부분을 보면 false AND false OR true로 정리할 수 있습니다. WHERE 구문 뒤에 붙언 OR 로 인해 해당 구문의 연산 값은 true가 되어 올바른 값으로 판단하고 실행하게 됩니다. 따라서 로그인에 성공하게 됩니다.
취약점 발생 원인
사용자가 입력한 값을 제대로 필터링, 이스케이핑하지 못했을 경우 발생합니다.
공격 발생 영향
- DB 내용 추출, 변조, 삭제
- 인증 우회
대응방안
- 입력 값 검증
SQL Injection은 사용자가 서버로 SQL 쿼리문을 임의로 조작하여 발생하기 때문에 서버 단에서 사용자의 입력 값을 검증한다면 SQL Injection은 발생하기 힘듭니다. 또, SQL Injection에 사용되는 구문은 매우 많기 때문에 블랙리스트 필터링 같이 SQL Injection을 일으킬 수 있는 구문들을 필터링하는 것보단 정해진 구문들만 사용할 수 있게 하는 화이트 리스트 필터링을 권장합니다.
- 최소 권한 지정
SQL Injection이 성공해 발생하는 피해를 최소한으로 줄이려면 모든 데이터베이스 계정에 할당된 권한을 최소화해야 합니다. 애플리케이션 계정에 DBA 또는 관리자 유형 액세스 권한을 할당하지 말아야합니다.
'정보보안 > 웹' 카테고리의 다른 글
Command Injection에 대해 알아보자 (0) | 2022.03.30 |
---|---|
[웹] DVWA를 이용한 XSS 실습 기초 (0) | 2022.03.06 |
[웹] Cross Site Scripting(XSS)에 대하여 알아보자 (0) | 2021.11.11 |