SQL Injection

2019. 7. 19. 22:11ETC

SQL Injection

- Web hacking 기법 중 하나

- 사용자가 입력한 입력값을 SQL 구문의 일부로 사용하는 경우를 악용하는 공격 기법

 

SQL Injection 공격 종류

- 인증 우회(AB : Auth Bypass)

보통 아이디와 패스워드를 입력하는 로그인 폼을 타겟으로 대상으로 공격.

SQL 쿼리문의 true/false의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 true의 결과값이 나오게 하여 인증을 무력화 시키는 원리이다.

 

- 데이터 노출(DD : Data Disclousre)

조작된 쿼리가 실행되도록 하여, 기업의 개인정보나 기밀정보에 접근하여 데이터를 획득할수 있다.

데이터 값을 변경하거나 테이블을 지울 수 있다.

에러를 발생시켜 에러 정보를 바탕으로 DB명, Table명, Column명을 획득하여 악용이 가능하다.

 

- 원격 명령 실행(RCE : Remote Command Excute)

확장 프로시저를 호출하여 원격으로 시스템 명령어를 수행할 수 있도록 한다. 시스템 명령어를 실행할 수 있다면 해당 서버의 모든 자원에 접근하고 데이터를 수정, 삭제를 할 수 있다.

 

SQL Injection 방지

1. 사용자에게 받은 값을 필터링하여 DB 쿼리문을 사용

        - 입력값에 특수문자가 있을경우 특수문자를 제외시키기.

2. SQL 서버에 오류가 발생했을시 해당하는 에러 메시지를 표시하지 않기

 

3. 최소 권한 유저로 DB 운영

        - 

4. 저장 프로시저 사용

        - 저장 프로시저는 쿼리문의 형식이 잡혀있기 떄문에 지정된 형식의 데이터가 아니면 쿼리문이 실행이 안된다.

 

<참고>https://m.mkexdev.net/427