일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Intent
- 청주
- 글쓰기
- 제이쿼리
- 프로그래밍
- 회원가입
- Android
- androidstudio
- java 8
- #청주주님의교회
- 아이콘
- Activity
- 인텐트
- Resources
- 게시판
- Spring
- JavaScript
- 주님의교회
- TinyMCE
- 생명주기
- 에디터
- CSS
- jQuery
- Java
- Selector
- 웹개발
- 자바
- 안드로이드
- 안드로이드 AVD
- 영성
- Today
- Total
공부하는 블로그
SQL injection 본문
웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격. 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 데이터베이스 관리 시스템(RDBMS)에서 가능하다.
‘SQL인젝션’은 웹 애플리케이션 사용자 입력값에 필터링이 제대로 적용돼 있지 않을 때 발생한다. 공격자가 조작된 SQL 질의문을 삽입해 웹서버 DB 정보를 열람하고 정보를 유출·조작한다.
SQL 인젝션을 이해하려면 우선 SQL(Structured Query Language)이 무엇인지 알고 넘어가야 한다. SQL은 데이터베이스(DB)를 만들고 유지하는 데 사용하는 프로그래밍 언어 중 하나다. DB를 구축하고 조작하기 위해 사용하는 일종의 명령어인 셈이다. SQL을 이용하면 데이터를 정의, 조작, 제어할 수 있다.
SQL 인젝션은 웹사이트 취약점을 찾아, DB를 관리하는 SQL 명령어에 악성코드를 삽입해 해커가 원하는 식으로 조작하는 웹 해킹 공격 중 하나다. 개발자가 의도하지 않은 SQL 명령을 실행해 DB를 비정상적으로 조작한다. 이런 식으로 개발자 모르게 DB에 저장한 정보를 유출할 수 있다.
SQL인젝션 공격은 대표적으로 DB를 공격해서 정보를 탈취하는 방식이다. 어떤 웹사이트가 있다. 관리자 아이디가 ‘관리자임’이고, 비밀번호는 ‘보안’으로 설정했다. 원래는 이 관리자 아이디와 비밀번호를 제대로 입력해야 해당 웹사이트 DB에 접속해 정보를 볼 수 있다.
SQL 인젝션은 관리자 비밀번호를 제대로 입력하지 않고, 해커가 임의로 여러 문자 조합을 이용해 DB에 접속해 비밀번호를 볼 수 있게 도와준다. 아이디로 ‘관리자임’을 넣고, 비밀번호로 ‘보안일까 아닐까’를 입력해 DB에 접근해 정보를 탈취한다.
구글 검색을 통해 공격 대상 웹사이트에 추가적인 문자열을 입력해서 웹사이트 접속 오류를 유도한 다음, 해당 웹사이트 관리자 모드로 들어가거나 내부 정보를 빼오는 수법도 있다. 만약 공격자가 DB 시스템에서 시스템 명령어를 실행할 수 있도록 설정해 놓았을 경우엔 해당 웹사이트 DB에서 시스템 명령어도 실행할 수 있다.
좀 더 자세히 나눠보면 SQL 인젝션 공격은 크게 에러 기반 공격(Error-Based Attacks)과 블라인드 공격(BlindAttacks)으로 나뉜다.
에러 기반 공격은 해커가 검사하지 않은 입력값을 발견하고, 이를 악용할 때 발생하는 공격이다. 검사 입력값은 입력한 데이터 중에서 불필요한 부분을 제거하는데, 해커는 잘못된 정보를 입력하고 피드백을 기다리기만 하면 그 정보를 가로채는 식이다.
블라인드 공격은 에러 기반 공격과 달리 DB 서버 에러 메시지를 이용하지 않고 바로 DB를 공격한다. 이 공격은 DB 취약점을 노리고 공격하는 기법보다 성공하기 어렵긴 하지만, 꾸준히 발생하는 공격 중 하나다.
[네이버 지식백과] SQL인젝션 [SQL injection] - 가장 빈번하게 일어나는 웹 해킹 공격 (용어로 보는 IT)
'Develop > DB' 카테고리의 다른 글
DB View 사용하기 (0) | 2018.04.09 |
---|---|
와일드카드 문자를 이용한 필터링 (0) | 2018.04.04 |
Database에서 Index란? (0) | 2018.01.24 |
DB정규화 (0) | 2017.12.11 |
(ORACLE) DELETE (데이터삭제) (0) | 2017.09.21 |