728x90
반응형

Injection (인젝션) 이란?

인젝션 취약점은 SQL, OS, LDAP 등에 해당되며 신뢰할 수 없는 데이터를 명령어나 질의문의 일부분으로서 보내질 때 발생하는데, 공격자의 데이터는 개발자가 의도하지 않은 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있습니다.

 

Injection 종류

- SQL Injection

쿼리 등에 SQL 쿼리를 삽입하여 데이터베이스 조희, 변조 및 삭제 등의 공격을 의미한다.

- CRLF Injection

CRLF(%0d%0a) 패턴 삽입을 통한 악의적인 공격을 의미한다.

- Command Injection

쿼리 등에 운영체제 명령어를 삽입하여, 명령어 실행 및 시스템 권한 획득 공격을 의미한다.

 

1. SQL Injection

1) Error based SQL Injection

GET, POST 요청필드, HTTP 헤더값, 쿠키값 등에 특수문자(싱글 쿼드(') 혹은 세미콜론(;)) 삽입 시, SQL 관련 에러를 통해 데이터베이스 정보를 예상해 볼 수 있다.

 

2) Union based SQL Injection

Union은 2개 이상의 쿼리를 요청하여 결과를 얻은 SQL 연산자이며, 공격자는 이를 악용하여 원래의 요청에 추가 쿼리를 삽입하여 정보를 얻어내는 방식이다.

단 Union 쿼리는 2개의 테이블이 동일한 필드개수와 데이터타입을 가져야 하므로 사전공격을 통해 해당 정보를 얻는 과정을 거치게 된다.

 

3) Blind based SQL Injection

에러가 발생되지 않는 사이트에서는 위의 기법들을 사용할 수 없기 때문에 공격을 통해 정상적인 쿼리 여부를 가지고 취약점 여부를 판단하는 기법이다.

 

4) Stored Procedure(저장 프로시저) based SQL Injection

저장 프로시저는 운영상 편의를 위해 만들어둔 SQL 집합 형태이나, 명령어 실행이 가능한 MSSQL의 xp_cmdshell을 악용하여 운영체제 명령어를 삽입하는 기법이다.

 

5) Time based SQL Injection

쿼리 결과를 특정시간만큼 지연시키는 것을 이용하는 기법으로, Blind 기법과 마찬가지로 에러가 발생되지 않는 조건에서 사용할 수 있다.

 

2. CRLF Injection

CRLF는 Carriage Return과 Line Feed를 의미하며, 키보드의 엔터키와 동일한 기능을 한다. 그러나 URL 특정 파라미터에 해당 코드를 삽입하는 경우 임의의 헤더정보를 생성할 수 있는 취약점이 발생된다.

 

3. Command Injection

GET, POST 요청필드, HTTP 헤더값, 쿠키값 등에 운영체제 명령어를 삽입하여 권한을 획득하는 공격을 의미한다.

 

 

728x90
반응형

+ Recent posts