Command Injection 이란? (커맨드 인젝션)
Security/Web Hacking

Command Injection 이란? (커맨드 인젝션)

 3. Command Injection

Ÿ   Command Injection

Command Injection 은 웹 애플리케이션에서 시스템 명령을 사용할 때, 세미콜론 혹은 &, && 를 사용하여 하나의 CommandInjection 하여 두 개의 명령어가 실행되게 하는 공격 입니다. OWASP Top10 1위에 속해 있는 Injection 공격으로 서버자체의 콘솔 명령어를 실행시킬 수 있기 때문에 공격이 성공한다면 매우 큰 피해가 발생할 수 있습니다.

그림은 Command Injection 공격의 한 예를 보여주고 있습니다. 현재 웹 애플리케이션에서는 서버의 파일을 cat 명령어를 사용하여 사용자 입력과 함께 보여줄 수 있도록 만들어져 있습니다. 해커는 이 기능을 악용하여 리눅스에서  두 개의 명령을 한 줄에 동시에 실행할 수 있도록 하는 연결자 인 세미콜론을 사용하여 ifconfig명령을 실행시키기 위해 웹 페이지에 요청을 보냅니다. ② 사용자로 부터의 요청을 아무런 검증없이 서버에 전송합니다③ 요청된 명령을 서버에서 실행하고, 서버의 민감정보를 그대로 노출합니다. 그 이후 여러 가지 명령어로 정보를 수집한 해커는 서버 내 라이브러리 중 원데이 취약점을 이용하여 리눅스 서버의 root 권한을 획득합니다

해당 웹 서버 개발자는 해커를 위한 웹셸을 만들어 둔 것이나 다름없습니다. 서버의 명렁을 실행하는 함수는 되도록이면 사용하지 말아야 하고, 사용하더라도 서버에 영향을 끼칠 수 있는 명령어는 사용이 불가능 하도록 하여야 합니다. 실 서버와 분리하여 운영하는 것도 좋은 방법입니다.