웹취약점점검- SQL Injection

2021. 1. 6. 08:54웹취약점/그누보드

SQL Injection 이란?

로그인 폼이나 입력 할 수 있는 폼에 악의적인 쿼리를 삽입하여, 데이터베이스를 조회, 변경, 제거 등이 가능한 취약점

 

Error based SQL Injection: 가장 기본적인 공격기법 

                                   ex) ‘ OR 1=1 -- 

Union based SQL Injection: 두개이상에 쿼리문의 결과를 한개의 쿼리로 통합하여 보여주는 공격기법

                                  ex) UNION ALL SELECT SLEEP(5)-- 

blind SQL Injection: 데이터베이스로부터 특정한 값이나 데이터를 전달받지 않고, 참과 거짓만 도출 하는 공격기법

                                 ex) and 1=1 , and 1=2

 

취약점 개요

점검내용 ■ 웹페이지 내 SQL 인젝션 취약점 존재 여부 점검
점검목적 ■ 대화형 웹 사이트에 비정상적인 사용자 입력 값 허용을 차단하여 악의적인 데이터베이스      접근 및 조작을 방지하기 위함
보안위협 ■ 해당취약점이 존재하는 경우 비정상적인 SQL 쿼리로 DBMS 및 데이터(Data)를 열람하거      나 조작 가능하므로 사용자의 입력 값에 대한 필터링을 구현하여야 함

 

점검대상 및 판단기준

대상 ■ 그누보드(localhost)
판단기준 양호: 임의의 SQL Query 입력에 대한 검증이 이루어지는 경우
취약: 임의의 SQL Query 입력에 대한 검증이 이루어지지 않는 경우
조치방법 소스코드에 SQL Query 입력값을 받는 함수나 코드를써야 할 경우, 임의의 SQL Qurey 입력에 대한 검증 로직을 구현하여 검증되지 않는 SQL Query가 인수값으로 들어올 경우 에러 페이지가 아닌 정상 페이지가 반환되도록 필터링 처리하고 웹 방화벽을 운용할 경우 우ㅐㅂ 방화벽애 SQL 인젝션 관련 룰셋을 적용하여 SQL 인젝션 공격 차단함

 

점검 및 조치 사례

1) 애플리케이션 인수 값에 특수문자나 임의의 SQL 쿼리를 전달하여 DB 에러 페이지가 반환 되는지 확인

 

홈페이지 검색 URL

삽입구문: '

 

2) 애플리케이션 인수 값에 임의의 SQL 참, 거짓 쿼리를 전달하여 참, 거짓 쿼리에 따라 반환 페이지가 다른지 확인

홈페이지 검색 URL

삽입구문: and 1=2

 

3) 로그인 창에 참이 되는 SQL 쿼리를 전달하여 로그인이 되는지 확인

로그인폼

' or'1'='1

 

 

 

 

※보안설정방법

-문자열 유효성 검증 로직 구현

 SQL Query에 사용되는 문자열에 대해 유효성 검사를 실시하는 프로세스 구현

 아래와 같은 특수문자를 사용자 입력값으로 지정 금지

(아래 문자들은 해당 데이터베이스에 따라 달라질 수 있음)

문자 설명
' 문자 데아터 구분기호
; 쿼리 구분기호
--  ,  # 해당라인 주석 구분 기호
/**/ * 와 */ 사이 구분 주석

-Dynamic SQL 구문 사용 금지

 Dynamic SQL 구문 사용을 지양하며 파라미터에 문자열 검사 필수적용

-오류에 대한 예외처리

 에러 메시지는 공격자에게 많은 정보를 제공하므로 오류처리로 정보 노출을 최소화

 시스템에서 제공하는 에로 메시지 및 DBMS에서 제공하는 에러 코드가 노출되지 않도록 예외처리

-웹 방화벽에 인젝션 공격 관련 차단 룰셋 적용

-웹 필터링 등 입력값 검증 프로세스는 Client side script가 아닌, Server 페이지로 구현

 

참고

www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=6&mode=view&p_No=259&b_No=259&d_No=106&ST=T&SV=

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드

www.kisa.or.kr

 

'웹취약점 > 그누보드' 카테고리의 다른 글

취약점점검- XPath Injection  (0) 2021.01.08
웹취약점점검- SSI Injection  (0) 2021.01.07
웹취약점점검- Command Injection  (0) 2021.01.05
웹취약점점검- LDAP Injection  (0) 2021.01.04
웹취약점점검- Format String  (0) 2020.12.31