상세 컨텐츠

본문 제목

SQL 인젝션 SQL이란?インジェクション【サイバー攻撃&対策】

일본어/CS지식(일본어)

by Gopythor 2023. 3. 25. 20:55

본문

728x90
반응형

SQL 인젝션이란?

SQL 인젝션을 들어본적이 없다.

SQL 인젝션의 구체적인 공격수법이나 대책법에 대해 알고 싶다.

웹 어플리케이션의 보안 대책을 배우고 싶다.

 

결론적으로 SQL 인잭션이란, 프로그램이 데이터베이스를 조작할 때 사용하는 SQL 명령문을 외부에서 의도적으로 데이터베이스에 부정 명령을 실행시키거나 데이터베이스에서 정보를 훔치는 사이버 공격수법이다

개인정보나 암호 등, 중요한 데이터가 데이터베이스가 삭제되는 등이 있다.

인젝션이란 주입이라는 의미로, 정상적인 SQL 명령어에서 그것을 조작해서 악의를 가지고 SQL 명령을 주입하는 것으로 본래의 기존 명령과는 상이한 명령을 프로그램에게 실행 시키는 공격 수법.

 

구체적인 공격수법

어플이 사용하는 데이터는 데이터베이스의 안에 보존되어있는데, 프로그램은 데이터베이스에서 데이터를 불러오거나 등록하거나 수정할 때, SQL 명령을 작성해서 실행한다.

예를 들어 쇼핑몰 싸이트에서 주문 이력을 확인할 수 있는 화면에서, 지정된 주문번호를 기반으로, 주문 정보 데이터를 데이터베이스에서 가져오는 SELECT문이 실행된다.

주문번호 부분은 URL에서 지정한 주문번호가 삽입(揷入)된다. 명령문의 이 부분은 유저가 자유롭게 조작할 수 있는(いじれる) 부분이다. 악의가 있는 공격자는 이것을 이용해서 세공(細工)한 문자열을 주입하는 것으로 프로그램이 실행하려고 했던 SLELECT문을 개변(改変)해서 다른 명령을 실행한다.

해당 부분이 입력된다면, 주문 부분에 주입되어 code가 1,2,3,4,5인 데이터 또는 a = a의 조건이 되어, a가 a인 조건이 성립되어 주문 테이블의 전체가 추출(抽出)된다. 자신의 주문 데이터 뿐만 아니라, 전 유저의 주문 데이터를 보는 것이 된다.

 

주문번호에 해당 문자열이 입력될 경우, 최종적으로 SELECT문은 해당과 같이 된다. 셀렉트 문 다음으로 DELETE FROM order_data라는 명령이 실행되어, 전체가 삭제된다.

 

본래와는 상이한 명령문이 실행되는 것이 SQL 인젝션이다. 이는 범죄행위이므로 하지 말자.

 

 

대책은?

  SQL문 대책문으로써는, 유저가 지정한 문자열을 SQL에 그대로 결합(結合)하지 않는것이다. SQL문에 외부 데이터를 삽입할 때에는 PLACEHOLDER라는 장치를 사용한다.삽입한 데이터는 명령의 일부가 아니라, 어디까지나 값(値)으로 처리하므로 부정한데이터가 삽입되더라도 상정 외의 SQL 명령이 실행되지 않는다.

  처리의 사정(都合)으로 SQL문에 직접적으로 결합해야하는 경우에는, 결합하는 문자열을 사전에 ESCAPE 처리해서 SQL명령으로써 인식되지 않도록 한다.

  테이블을 삭제하는 DROP 명령이나 전 데이터를 삭제하는 TRUNCATE명령은 실행되지 않도록 데이터베이스 권한(權限)을 조정한다.

  프로그램의 내부적 에러 메세지를 화면에 표시하지 않는 것도 중요하다. 에러메시지에는 데이터베이스의 테이블 이름이나, 컬럼명, 실행하고자 하는 SQL문 등이 공격자에게 힌트가 되는 정보가 많이 포함되어 있다.

  어플 외의 대책으로써 WAF(ウェブアプリケーション‐ファイアウォール)를 도입하는 것으로 부정한 요청은 어플리케이션에 도달하기 전에 차단된다.

  렌탈 서버에서도 WAF는 표현으로 제공되므로 확인해야 한다.

 

 

 

정리하자면

SQL인젝션 : 부정한 문자열 삽입에 의한 SQL 개찬(改竄) - 자구(字句)를 고침((특히, 악용할 목적의 경우를 말할 때가 많음)

=> 부정한 명령어 실행

정보누설(漏洩)

데이터 개찬

삭제의 위험성

 

 

대책1 : 플레이스홀더를 사용

 

대책2 : 에스케이프 처리를 처리

대책3 : 적절한 권한을 설정함.

대책 4: 내부적 에러메시지는 표시하지 않도록.

대책 5: WAF 도입

 

출처 : https://www.youtube.com/watch?v=CfUn6hHrj8Q

728x90
반응형

관련글 더보기

댓글 영역