본문 바로가기
🗂 Study/DB

[DB] SQL Injection 🎣

by 뿌맘 2021. 9. 4.
반응형

﹥ SQL Injection

SQL Injection이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위입니다.

 

﹥ SQL Injection의 종류

인증 우회 (Auth Bypass)

아이디와 패스워드를 입력하는 로그인 페이지를 타겟으로 행해지는 공격입니다. SQL 쿼리문의 TRUE / FALSE의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 TRUE의 결괏값이 나오게 하여 인증을 무력화시킵니다.

 

1. SQL injection - 논리적 에러

  • 기본적인 인젝션 방법으로 기호를 통해 에러를 확인하고 논리적인 에러를 통해 시스템 권한 체크를 우회하는 기법입니다.
SELECT * FROM member WHERE ID = 'admin' AND PW = '' or 1=1--'

 

2. Blind SQL Injection - 쿼리 결과 여부

  • 악의적인 문자열 삽입 대신 쿼리의 결과 (True or False)에 따라 정보를 취득합니다.
http://www.xxxx.com/page.php?id=2 and 1=1

 

3. Union SQL Injection - 이중 쿼리

  • 두 개 이상의 쿼리를 요청하여 결과를 얻는 점을 악용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어내는 방식입니다.
'union%20select%20table_name,column_name,@@version,null,null-- 

 

4. Stored Procedure SQL Injection - 저장 프로시저

  • 일련의 쿼리들을 모아 하나의 함수처럼 사용하기 위한 것입니다. 공격에 사용되는 대표적인 저장 프로시저는 MS-SQL에 있는 cp_cmdshell 로 윈도우 명령어를 사용할 수 있게 됩니다.

 

 

데이터 노출 (Data Disclosure)

타겟 시스템의 주요 데이터 절취를 목적으로 하는 방식입니다. 웹 사이트에서 데이터베이스의 에러 정보를 확인할 수 있는지, 없는지에 따라 공격 방식이 결정됩니다.

 

원격 명령 실행 (Remote Command Execution)

저장 프로시저를 이용하여 파라미터를 조작하여 쉘 수행, 쿼리 결과를 HTML로 제공, 서비스 시작∙중지, 시스템 정보 획득 등 시스템 상에 공격하는 방식입니다.

 

﹥SQL Injection 대응 방안

1. 입력 값에 대한 검증

  • 검증 로직을 추가하여 미리 설정한 특수문자가 들어왔을 때 요청을 막아내기

 

2. 에러 메시지 노출 금지

  • 오류 발생 시 사용자에게 보여줄 수 있는 페이지나 알람 띄우기

 

3. Prepared Statement 구문 사용

  • 서버의 php 파일에 sql 쿼리문이 아래와 같이 고정되어 있고 외부의 입력으로는 이 템플릿을 변경할 수 없다면, ?에 들어가는 데이터는 단순히 문자열로 취급하기 때문에 SQL 인젝션은 발생할 수 없습니다.
INSERT INTO users VALUES(?, ?, ?)

 

 

 

 


References

 

SQL Injection

SQL Injection이란? SQL Injection이란 웹 해킹의 기법 중 하나임 (web application 단계에서 일어남) 웹 어플리케이션의 뒷단에 있는 데이터베이스에 쿼리를 보내는 과정 사이에 일반적인 값 외에 악의적인

xn--bh3b85ri4b.site

 

SQL Injection

SQL 인젝션의 정의 SQL 인젝션은 데이터베이스와 연동된 웹 애플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우 공격자가 입력폼(게시글) 및 URL 입력란에 SQL문을 삽입하여 DataB

jinseok12.tistory.com

 

SQL 인젝션이란 무엇인가.

SQL 인젝션 공격의 원리 1.     SQL 인젝션 공격에 취약점이 발생하는 곳은 웹 애플리케이션과 데이터베이스가 연동되는 부분에 공격자가 임의의 SQL 명령어를 삽입하여 공격 2.     보통 사용

dlsdn73.tistory.com

 

 

반응형

'🗂 Study > DB' 카테고리의 다른 글

[DB] 키(key) 🗝  (0) 2021.08.25

댓글