[CVE-2013-2251] Apache Struts2 RCE Exploit

2013년에 나온 취약점이지만, 최근 이 취약점 관련 이슈로 많이 피곤했기에 정리한다.
CVE-2013-2251은 Struts의 버전 뿐만아니라, JAVA 또는 WAS 등 환경적인 영향이 다소 작용하는 것으로 보인다. (단지, 내 경험에서 우러나온 추측이다.)
따라서, Exploit 재현의 용이성을 위해 Docker Hub에 이미지를 올려두었다.

 
Exploit은 아래 두 가지 조건을 만족하여야 한다.

  1. Redirection
  2. Template Injection

 
showcase 앱에서 테스트를 진행한다. 먼저 아래 그림과 같이 redirect:URL을 넘겨주었을 때 정상적으로 리다이렉션 되어야 한다.

 
그리고, 아래 그림과 같이 Template 인젝션이 가능해야 한다.

 
이 조건만 만족한다면 Exploit은 어렵지 않다.

 
1번 페이로드를 전송하면 화면에 pwn이라는 문자열이 출력될 것이다. 2번 페이로드를 전송하면 파일을 다운로드할 것이다. 다운로드된 파일을 열어보면 passwd 파일을 출력한 결과가 들어있다.