xxe 예제

xxe 예제

예를 들어 일반 요청에 다음이 포함된 경우: 스냅숏 5 : 악성 docx 파일을 (예) 응용 프로그램에 업로드하는 경우 예를 들어 응용 프로그램은 사용자가 이미지를 업로드하고 업로드한 후 서버에서 이러한 파일을 처리하거나 유효성을 검사할 수 있습니다. 응용 프로그램이 PNG 또는 JPEG와 같은 형식을 수신할 것으로 예상하더라도 사용 중인 이미지 처리 라이브러리는 SVG 이미지를 지원할 수 있습니다. SVG 형식은 XML을 사용하기 때문에 공격자는 악의적인 SVG 이미지를 제출하여 XXE 취약점에 대한 숨겨진 공격 표면에 도달할 수 있습니다. XML 입력 파일을 구문 분석할 때 가장 흥미로운 측면은 서버 자체의 파일을 가리키는 코드를 포함할 수 있다는 것입니다. 이는 외부 엔터티의 예입니다. FTP 및 HTTP를 통해 웹에서 호스팅되는 파일을 포함하여 외부 엔터티가 될 수 있는 모든 범위에 대해 살펴보겠습니다. 일부 응용 프로그램은 클라이언트가 제출한 데이터를 수신하여 서버 측에 XML 문서에 포함한 다음 문서를 구문 분석합니다. 클라이언트가 제출한 데이터를 백 엔드 SOAP 요청에 배치한 다음 백 엔드 SOAP 서비스에서 처리되는 경우 이러한 예가 발생합니다. 다음 XXE 예제에서 외부 엔터티는 서버가 조직의 인프라 내의 내부 시스템에 백 엔드 HTTP 요청을 수행하게 됩니다. 입력으로. 그러나 경우에 따라 XML을 허용하는 끝점이 명확하지 않을 수 있습니다(예: 클라이언트가 JSON만 사용하여 서비스에 액세스하는 경우). 이러한 경우 펜 테스터는 HTTP 메서드, 콘텐츠 유형 등을 수정하여 응용 프로그램이 어떻게 응답하는지 확인하는 등 다양한 작업을 시도해야 합니다. 응용 프로그램이 콘텐츠를 구문 분석하는 경우 XXE에 대한 범위가 있습니다.

이 섹션에서는 XML 외부 엔터티 주입이 무엇인지 설명하고, 몇 가지 일반적인 예제를 설명하고, 다양한 종류의 XXE 주입을 찾고 악용하는 방법을 설명하고, XXE 주입 공격을 방지하는 방법을 요약합니다. XML 표준에 따라 내부 엔터티는 값이 문자열 리터럴로 정의되는 엔터티입니다. 예를 들어 문자열 값을 가리키는 엔터티를 내부 엔터티라고 할 수 있습니다. 위의 점을 염두에 두고 공격자는 위의 이론적 CDATA 예제를 사용하여 attacker.com/evil.dtd 호스팅되는 악의적인 DTD를 만들어 작업 공격으로 전환할 수 있습니다. 다음은 XML 입력을 받아들이고 구문 분석하여 결과를 출력하는 간단한 웹 응용 프로그램의 예제 출력입니다.