Basic Concepts/Web

커맨드 인젝션(Command Injection)

R4v!dus 2020. 2. 19. 20:15

커맨드 인젝션이란 웹 요청에 시스템 명령어를 삽입 하여 실행 하는 공격이다.

OWASP TOP10에도 속할 정도로 위험한 취약점에 해당한다.

 

OWASP TOP10

https://www.owasp.org/images/b/bd/OWASP_Top_10-2017-ko.pdf

 

웹 내부에서 시스템 명령어를 실행하는 경우 입력값을 제대로 검사하지 않는다면 공격자 마음대로 시스템 명령어를 실행 할 수 있게 된다. 이는 웹 개발자가 공격자를 위해 웹쉘을 제공하는 거나 다름이 없다.

 

[그림 1]

정상적으로 동작하는 서버를 대상으로 공격자가 ;cat /etc/passwd를 요청하는데 이는 ping IP;cat /etc/passwd 형식으로 수행이 된다.

 

대응방법

Command Injection 공격은 취약한 함수를 사용함에 따라 발생한다.

취약한 함수로는

perl  :  open(), sysopen(), system(), etc....

php :  exec(), system(), popen(), include(), eval(), preg_replace(), etc...

등이 있다.

 

또한 |, &, ; 와같은 멀티라인을 지원하는 특수문자는 검사 해주는 것이 중요하다.