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 에러 페이지가 반환 되는지 확인
삽입구문: '
2) 애플리케이션 인수 값에 임의의 SQL 참, 거짓 쿼리를 전달하여 참, 거짓 쿼리에 따라 반환 페이지가 다른지 확인
삽입구문: 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 |