
st2-048
Apache Struts 2 Struts 2.3.x 시리즈의 Struts 1 플러그인 예제에 있는 Struts Showcase 앱에서 발생 가능한 RCE
http://struts.apache.org/docs/s2-048.html
https://cwiki.apache.org/confluence/display/WW/S2-048
> python St2-048.py
set url : http://xx.xx.xx.xx:port/integration/saveGangster.action
cmd >>: whoami
root
cmd >>: cat /etc/passwd

Struts 2.3.x 시리즈의 Struts 1 플러그인 예제에 있는 Struts Showcase 앱에서 발생 가능한 RCE
이 문서를 읽어야 할 대상 모든 Struts 2 개발자와 사용자는 이 문서를 읽어야 합니다
취약점 영향 Struts 2 Struts 1 플러그인 사용 시 RCE 발생 가능
최대 보안 등급 높음
권장 사항 Solution 섹션을 읽어 주세요
영향 받는 소프트웨어 Struts 1 플러그인 및 Struts 1 액션을 사용하는 Struts 2.3.x
발견자 Tophant Competence Center의 icez
CVE 식별자 CVE-2017-9791
Struts 2 Struts 1 플러그인과 Struts 1 액션을 사용 중이고, 해당 값이 사용자에게 표시되는 메시지의 일부인 경우(즉, ActionMessage 클래스의 오류 메시지 일부로 신뢰할 수 없는 입력을 사용하는 경우) 악의적인 필드 값으로 RCE 공격을 수행할 수 있습니다.
아래와 같이 원시 메시지를 ActionMessage에 전달하는 대신 항상 리소스 키를 사용하고, 원시 값을 직접 전달하지 마십시오.
messages.add("msg", new ActionMessage("struts1.gangsterAdded", gform.getName()));
그리고 절대 다음과 같이 하지 마십시오.
messages.add("msg", new ActionMessage("Gangster " + gform.getName() + " was added"));
이전 버전과의 비호환성 문제는 예상되지 않습니다.