개요

RCE(Remote Code Execution) 취약점은 응용 프로그램이 적절한 입력 이스케이프 유효성 검사없이 쉘 명령을 실행할 때 발생합니다.

공격

Command Injection 을 이용하면 웹 어플리케이션을 구동하고 있는 시스템 계정의 Shell 권한을 획득하는 것으로 볼 수 있어
시스템에 존재하는 다양하고 유익한 명령어들을 이용해서 시스템에 악성 스크립트나 파일들을 업로드할 수 있습니다.
만약 대상 시스템에 시스템적인 취약점이 존재한다면 공격자는 시스템 관리자 권한까지 획득이 가능합니다.
외부 URL 또는 파라미터로 전달이 가능한 DB와 연동된 페이지에 대해여 시스템 명령어 (ls, cat, ifconfig 등) 삽입으로
운영체제 명령어 실행 결과를 출력하는 인젝션 종류입니다.

◆ command injection 예제 코드

<?php
print(“Please specify the name of the file to delete”);
pfint(“<p>”);
$file=$_GET
[‘filename’];
system(“rm $file”);
?>

localhost/command.php?filname=a.php;pwd
system 함수에서 ‘rm 파일명’ 명령어 하나와 ‘pwd’ 라는 명령어 두 개가 실행되고, 반환값으로 보여지게 됩니다.
(참조)
http://intadd.tistory.com/99 http://www.igloosec.co.kr/BLOG_Webshell%20%EB%B6%84%EB%A5%98%20%EB%B0%8F%20%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88?searchItem=&searchWord=&bbsCateId=1&gotoPage=3

 

대응 방안

◆ CVE-2017-12611
취약점에 영향을 받지 않는 버전으로 업데이트 수행(apache struts) 읽기만 가능한 속성을 이용하여 value 값 초기화(getter 속성에 한하여)
freemarker 미사용

◆ CVE-2017-9805
버전 업그레이드
사용하지 않는 REST 플러그인 삭제
XML 지원 삭제

◆ CVE-2016-3081
업데이트 불가피할 경우 Dynamic Method Invocation 비활성화
Struts.xml 에서 “struts.enable.Dynamic Method Invocation” False

◆ PLURA V5 RCE 필터 사용
PLURA V5 RCE 필터를 사용 등록하시면 RCE 공격이 발생할 때 해당 공격자의 IP 를 신속히 차단하게 됩니다.
필터 등록은 아래의 순서로 진행하시면 됩니다.
www.plura.io > login > 실시간방어 > 방어관리 > 방어등록 > 웹로그방어 > 방어상태 > ON(활성화)