Injection Attack
OWASP TOP 10 의 가장 높은 순위에 위치해 있는 공격
바로 Injection공격이다.
인젝션 공격 이란??
코드 인젝션(영어: Code injection)은 유효하지 않은 데이터를 실행함으로써 야기되는 소프트웨어 버그의 부당한 사용이다. 삽입은 공격자에 의해서 취약한 컴퓨터 프로그램 코드를 삽입하고 실행을 변경하는 방식으로 이용된다. 성공적인 코드 인젝션은 이것을 이용한 웜의 전파 같이 종종 처참한 결과를 보여준다.
(출처:위키백과)
쉽게 말하자면 애플리케이션의 취약한 부분에 공격 코드를 삽입해 정보틀 탈취하거나 변조하는 혹은 인증 정보를 무시하는
공격 방식을 말한다.
대표적인 인젝션 공격 방식으로는
SQL 인젝션과 Command 인젝션이 있다.
SQL 인젝션
악의적인 쿼리문을 삽입하여 정보를 탈취하거나 조작하는 공격 방식
이러한 SQL 인젝션도 3가지의 종류로 나타낼 수 있다.
- 데이터 노출
- 인증 우회
- 원격 명령 실행
가장 유명한 SQL인젝션인 인증 우회를 예시로 들어 설명해보자면
로그인 방식이 이런식으로 작동되는 sql 문이 있다고 하자.
로그인이 성공하려면 student라는 테이블에 id와 pw정보가 존재해야지만 sql문이 성공하여 로그인이 가능할 것이다.
이때 다른 사용자의 ID를 알아냈다고 가정한 뒤
id 입력 부분에 id'# 이런식의 공격 문구를 삽입하게 되면 뒤에 패스워드 검증부분이 주석 처리되어 인증이 무시되게 된다.
이런식으로 인증방식의 취약점을 이용하여 공격 하는 방식이 SQL 인젝션이다.
Command 인젝션(커맨드 인젝션)
웹 어플리케이션이 서버에 있는 Host OS와의 통신을 위해
종종 OS Command를 실행할때가 있다.
이럴 때 공격자는 추가적인 공격 코드를 삽입하여 서버에 있는 정보틀 탈취할 수 있는데
이러한 공격을 커맨드 인젝션이라고 한다.
예시를 들어보면
ping -c 5 127.0.0.1
서버에 이러한 명령을 보낸다고 할 때
위와 같이 입력라면 정상적인 출력이 나타날 것 이다.
하지만
ping -c 5 127.0.0.1;cat /etc/passwd
뒤에 이러한 ;뒤에 추가적인 명령문을 삽입한다면
Host OS의 중요 정보가 노출이되어 정보 유출이 되어버릴것이다.
이러한 인젝션 공격을 막기 위한 방법은 무엇이 있을까?
당연하게도 코드를 작성할 때 방어하기위한 방안을 추가하는 것이 제일 중요하다..
'보안 정보' 카테고리의 다른 글
OWASP TOP 10 2017 (한글) (0) | 2020.09.11 |
---|