Ye0ngJae

Command Injection에 대해 알아보자 본문

정보보안/웹

Command Injection에 대해 알아보자

Ye0ngJae 2022. 3. 30. 23:56
728x90

개요

Command Injection은 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격입니다.

 

어떤 웹 애플리케이션이 내부에서 시스템 명령어를 실행할 때, 만약 사용자가 입력한 값을 적절한 검증 없이 시스템 명령어의 일부분으로 전달하면 공격자는 이 값을 조작하여 임의의 시스템 명령어를 실행할 수 있습니다.

(IP 주소를 사용자로부터 입력받아 Ping 결과를 리턴하는 과정)

위 그림은 사용자가 IP 주소를 입력하면 웹 서버에서 ping 명령어를 실행하고 그 결과를 알려주는 웹 페이지에 관한 사진입니다. ping 명령은 입력된 IP 주소의 시스템이 현재 동작하고 있는지 확인할 때 사용하는 명령입니다.

(세미콜론을 이용하여 추가 명령을 실행하는 모습)

이 때 공격자는 IP 주소 뒤에 ;을 입력하고 다른 시스템 명령어를 추가합니다. ;는 리눅스에서 여러개의 명령어를 실행하고자 할 때 입력하는 특수문자입니다. 또, cat /etc/passwd 명령어는 리눅스의 사용자 목록을 확인할 때 사용하는 명령입니다. 따라서 위 사진에서는 ping 명령어와 cat 명령어를 동시에 실행하는 것입니다

 

취약점 발생 원인

Command Injection 공격에 취약한 함수를 사용하였거나 사용자의 입력값을 제대로 필터링하지 못하여 발생합니다.

 

공격 발생 영향

  • 시스템 권한 장악
  • 파일 유출
  • 기타 심각한 문제

 

대응 방안

입력값 필터링

공격자가 Command Injection을 일으키기 위해 사용하는 메타문자(| || ; && 등)를 필터링 하여 개발자가 정해놓은 시스템 명령어에 추가적으로 시스템 명령어가 실행되는 것을 막아야 합니다.

 

 

 

728x90