Open/Close Menu Yapı Taahhüt ve İnş. Tic. Ltd. Şti.

Size Özel Tekliflerimiz?
İletişime Geçin! »

Bizi Arayın:
0216 537 19 46/47

XML 입력 파일을 구문 분석할 때 가장 흥미로운 측면은 서버 자체의 파일을 가리키는 코드를 포함할 수 있다는 것입니다. 이는 외부 엔터티의 예입니다. FTP 및 HTTP를 통해 웹에서 호스팅되는 파일을 포함하여 외부 엔터티가 될 수 있는 모든 범위에 대해 살펴보겠습니다. 다음 XXE 예제에서 외부 엔터티는 서버가 조직의 인프라 내의 내부 시스템에 백 엔드 HTTP 요청을 수행하게 됩니다. 포함할 파일입니다. 예를 들어 위의 점을 염두에 두고 공격자는 위의 이론적 CDATA 예제를 사용하여 attacker.com/evil.dtd 호스팅되는 악의적인 DTD를 만들어 작업 공격으로 전환할 수 있습니다. 예를 들어 쇼핑 응용 프로그램이 다음 XML을 서버에 제출하여 제품의 재고 수준을 확인한다고 가정합니다. 응용 프로그램이 PNG 또는 JPEG와 같은 형식을 수신할 것으로 예상하더라도 사용 중인 이미지 처리 라이브러리는 SVG 이미지를 지원할 수 있습니다. SVG 형식은 XML을 사용하기 때문에 공격자는 악의적인 SVG 이미지를 제출하여 XXE 취약점에 대한 숨겨진 공격 표면에 도달할 수 있습니다. XML 엔터티를 사용하면 `SYSTEM` 키워드를 사용하여 XML 파서가 URI에서 데이터를 읽고 문서에서 대체할 수 있습니다. 따라서 공격자는 엔터티를 통해 자신의 값을 보내고 응용 프로그램이 표시되도록 할 수 있습니다. 간단히 말해서 공격자는 XML 파서가 시스템 이나 원격 시스템의 파일일 수 있는 지정된 리소스에 액세스하도록 강제합니다. 예를 들어 아래 코드는 해당 시스템에 있는 폴더/파일을 가져와서 사용자에게 표시합니다.

좋아, 그래서 이론은 중대하다, 그러나 우리가 도구를 사용하여 내려 갈 때, 우리는 (우리가) 몇 가지 문제로 실행됩니다. xml_injectable.php 스크립트로 실행되는 간단한 PHP 서버인 첫 번째 놀이터로 돌아가보겠습니다. 우리는 장고 가 아닌 이 놀이터를 사용할 것입니다, 왜냐하면 우리는 반향되는 것을 더 많이 통제할 수 있기 때문입니다. 우리가 사용한 두 번째 놀이터는 VM 온라인에서 가져온 화재 및 잊어 버린 서버의 좋은 예였으며, 트림을 실행했습니다. 기술적으로 는 Django 코드를 수정할 수 있지만 작은 PHP 스크립트를 수정하는 것이 더 쉽습니다. 참고로, 트림은 또한 우리의 작은 PHP 환경에 대해 동일한 취약점을 집어 들었다. 외부 엔터티 선언에는 엔터티의 시스템 식별자라고 하는 SystemLiteral(SYSTEM)이 포함됩니다. XML 프로세서가 SystemLiteral으로 엔터티를 구문 분석하면 URI 참조(http://www.example.com/test.xml)를 확인하여 XML 프로세서에 대한 입력을 얻어 “외부” 변수 또는 XML 데이터에 정의된 다른 참조에 값을 할당합니다.