SQL Injection 공격
->코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터 베이스를 공겨할 수 있는 공격방식이며
주로 사용자가 입력한 데이터를 제대로 필터링 하지 않았을 경우 발생합니다.
공격은 쉬운데 파괴력이 어마어마하며 자주 일어납니다.
- Web Application에서 입력 받아 데이터베이스로 전달하는 정상적인 SQL 쿼리를 변조, 삽입하여 불법 로그인, DB 데이터 열람, 시스템 명령 실행 등을 수행하여 비정상적인 데이터베이스 접근을 시도하는 공격 기법
- 조작한 입력으로 데이터베이스를 인증 절차 없이 접근 및 자료를 무단 유출하거나 변조 할 수 있음
- 무료 SQL Injection 취약점 스캐너
- Nikto : GNU 기반 오픈 소스로 웹서버 및 SQL Injection에 대한 취약점 점검, 리눅스 기반
- SQLMap : 블라인드 SQL Injection을 자동으로 수행하는 도구로 python에서 개발
- Absinthe : GUI 기바의 도구로 블라인드 SQL Injection 취약점에 이용, 데이터베이스의 스키마와 목록을 자동화 과정으로 다운로드 함.
# 개인견해 : SQL 인젝션 취약점은 OWASP top 10에서 항상 포함되어 있을만큼 자주발생하고, 영향력이 큰 취약점 입니다. 실제 진단 시에 쉽게 진단은 가능하지만 쉽게 발견되지는 않습니다만, 취약점에 대한 파급력이 상당하여 진단 시 유의가 필요합니다.
# 실진단 정리된 포스팅
https://itinformation.tistory.com/119
1) 공격 유형에 대한 분류
1. Error Base SQL Injection (에러 기반 SQL)
- DB 쿼리에 대한 에러 값을 기반으로 한 단계씩 점진적으로 DB정보를 획득 할 수 있는 방법
- DB 쿼리에 대한 에러가 외부로 노출되는 취약점을 이용한 공격
2. Blind SQL Injection
- 오류 메시지가 아닌 쿼리의 참과 거짓을 통해 데이터를 추출하는 방식
- 쿼리의 참/거짓에 대한 반응 형태에 대한 파악이 우선된다.
2) 공격 방식에 의한 분류
1. Form SQL Injection
- HTML Form 기반 인증을 담당하는 어플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리가 참이 되도록 하여 인증을 우회한다.
- 공격이 성공하는 경우 반환되는 레코드 셋의 첫번째 레코드에 해당하는 사용자 권한을 획득하게 됨.
2. Union SQL Injection
- union select 쿼리를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 접합하여 공격하는 기법
- ex) Select id,pw from member where id = ' {' union select 'admin','qqqq} '
3. Stored Procedure SQL Injection
- 저장 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 의미한다.
4. Mass SQL Injection
- 기존 sql injection의 확장된 개념으로 한 번의 공격으로 대량의 db값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격
- DB값 변조 시 악성 스크립트를 삽입하여, 사용자가 변조된 사이트 방문 시 감염 되거나 악성 bot이 설치됨
5. SQL Injection 대응 방안
- 데이터베이스와 연동하는 스크립트의 모든 파라미터를 점검하여 사용자의 입력 값에 SQL 쿼리문이 삽입되지 않도록 특수문자를 필터링한다.
- 입력되는 문자열의 길이를 제한한다.
- 숫자일 경우 숫자인지 체크하는 함수를 사용한다.
- php의 경우 magic_quote_gpc 옵션을 on 해준다.
- 동적으로 SQL 질의문을 생성할 때 사용자 입력 값이 이용되는 경우 입력 값 검증을 실서버에서 사용자 입력 값에 대한 검증을 수행하여 SQL에서 의미를 가지는 특수 문자(', %, !, --, # 등)가 포함되어 있을 경우 에러처리
- XPath 쿼리 조작이 불가하도록 입력값 검증을 강화
#SQL # SQL Injection
'보안 공부 > Web 보안' 카테고리의 다른 글
서버 정보 노출 차단2(Tomcat, Jetty 서버) (0) | 2019.08.08 |
---|---|
IIS HTTP 불필요 메서드 차단 방법 (0) | 2019.08.07 |
취약한 웹 어플리케이션 DVWA를 통한 취약점 진단_SQL Injection (0) | 2019.07.25 |
취약한 웹 어플리케이션 DVWA를 통한 취약점 진단_XSS공격 (29) | 2019.07.19 |
HTTP 불필요한 웹 메서드 차단 방법 (0) | 2019.05.21 |