SQL(Structured Query Language): 관계형 데이터베이스 관리 시스템(RDBMS) 데이터 관리 위해 설계된 특수 목적의 프로그래밍 언어
(ME: 관계형 데이터베이스 관리 시스템(RDBMS)??)
(DBMS = 스토리지에 저장이 되는 데이터를 관리하는 시스템)
(RDBMS - 4세대 DBMS로, 그 예시로는 Oracle, My-SQL 등이 있다. 수학적 논리 관계를 테이블의 형태로 구성한 구조로, 테이블 내 컬럼 중 일부를 다른 테이블과 중복해 각 테이블 간 상관관계를 정의한다. 유지보수가 편리하고 생산성도 좋지만, 많은 자원이 활용되므로 시스템 부하가 높다)
<SQL 문법 종류>
1. 데이터 정의 언어(DDL, Data Definition Language)
- CREATE: 데이터베이스 개체 정의
- DROP: 데이터베이스 개체 삭제
- ALTER: 데이터베이스 개체 정의 변경
2. 데이터 조작 언어(DML, Data Manipulation Language)
- INSERT: 데이터 삽입
- UPDATE: 수정
- DELETE: 삭제
- SELECT: 검색
3. 데이터 제어 언어(DCL, Data Control Language)
- GRANT: 특정 데이터베이스 사용자에게 특정 작업 수행 권한 부여
- REVOKE: 특정 데이터베이스 이용자에게 부여한 특정 권한 박탈
*Injection = 웹 애플리케이션에서 서버로 전달되는 명령, 쿼리, 스크립트 등의 값을 변조해 비정상적으로 시스템에 접근하는 공격기법
- Injection 종류
1. SQL Injection: 데이터베이스와 연동된 웹 애플리케이션에서 SQL 질의문에 대한 필터링이 제대로 이루어지지 않을 경우 -> 웹 브라우저 주소 입력창/로그인 폼 등에 조작된 질의문을 삽입해 웹 서버의 데이터베이스 정보 열람/조작
2. OS Command Injection: 웹 애플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우
-> 운영체제 시스템 명령어를 호출해 부적절하게 권한 변경, 시스템 동작 및 운영에 악영향
3. XXE(XML External Entity) Injection: XML 문서에서 동적으로 외부 URI 리소스 포함시킬 수 있는 external entity 사용해 서버 내부 파일 열람, DoS 등을 유발. - XML 요청을 파싱 하는 페이지에서 발생하며, OWASP TOP 10에 4번째로 등록되어 있음
4. LDAP(Lightweight Directory Access Protocol) Injection: 네트워크 상의 자원 위치를 찾도록 하는 소프트웨어 프로토콜
-> 로컬 프록시 사용해 LDAP 문의 변조(서버 - 사용자 입력 값에 대한 필터링 및 유효성 미검증)
<SQL Injection>
- 공격 원리
: 사용자의 입력 값으로 웹 사이트 SQL 쿼리 완성되는 약점을 이용해 입력값을 변조해 비정상적인 SQL 쿼리를 조합하거나 실행한다. 개발자가 생각지 못한 SQL 문을 실행함으로써 데이터베이스를 비정상적으로 조작해 DBMS 및 데이터 열람/조작을 수행한다. -> 사용자 입력 값에 대한 필터링 구현 필요!
- 점검 대상: 소스 코드, 웹 방화벽
- 취약점 점검 방법
1. 애플리케이션 인수 값에 특수문자나 임의의 SQL 쿼리를 전달, DB 에러 페이지 반환 여부 확인
2. 애플리케이션 인수 값에 임의의 SQL 참, 거짓 쿼리를 전달해 참, 거짓 쿼리에 따라 반환되는 페이지가 다른지 확인
3. 로그인 창에 참이 되는 SQL 쿼리 전달해 로그인 여부 확인
- 조치 방법
1. 소스 코드에 SQL 쿼리 입력값 받는 함수/코드 써야 할 경우, 임의의 SQL 쿼리 입력에 대한 검증 로직을 구현해 검증되지 않는 SQL 쿼리가 인수값으로 들어올 경우 에러 페이지가 아닌 정상 페이지가 반환되도록 필터링 처리
2. 웹 방화벽 운용할 경우 웹 방화벽에 SQL 인젝션 관련 룰셋 적용해 SQL 인젝션 공격 사전 차단
<SQL Injection 인증우회 공격>
- 특징: SQL 삽입 취약점 이용해 웹 애플리케이션의 인증 절차를 우회하는 공격으로, 기존 웹 애플리케이션에 코딩된 SQL 질의를 조작해 where절 이하 조건이 항상 참이 되도록 조작해 인증을 우회한다.
(실습의 경우, 공격자는 Kali Linux, 웹 서버는 Cent OS로 설정, ModSecurity 설치)
- 탐지 패턴
.* | 아무 글자나 한 글자 이상 온다(안 올 수도 있다) |
or.+ | or가 온 후에 한 글자 이상 온다 |
[[:digit:]].+ | 0에서 9까지의 숫자가 오고 아무 글자나 한 글자 이상 온 후 |
[[:space:]]* | 스페이스 입력이 한 번 이상 온다(안 올 수도 있다) |
= | = 문자가 나온다 |
[[:space:]]*.+ | 스페이스 입력이 한 번 이상 오고(안 올 수도 있다), 아무 글자나 한 글자 이상 온 후 |
[[:digit:]] | 0에서 9까지의 숫자가 온다 |
'네트워크 보안 > 네트워크 보안 운영(step)' 카테고리의 다른 글
XSS(Cross Site Scripting) 공격 (0) | 2024.11.18 |
---|---|
악성파일 업로드 공격 (0) | 2024.11.16 |
네트워크 보안 솔루션 ModSecurity (2) | 2024.11.12 |