본문 바로가기
about Security/웹보안과 해킹

# XXE

by saniii 2020. 11. 29.

 

# XXE 외부 엔티티 공격

 

+ XML : 기존에 없던 새로운 마크업 언어를 개발하기 위한 수단으로 사용되는 언어로

데이터 전달에 유리하다.

- XML작성시 반드시 DTD가 명시되어 있어야 한다.

 

+ DTD: Document Type Definition// XML문서의 구조 및 해당 문서에서 사용할 요소와 속성을 정의

 - DTD에서의 entity

   : 특정 문자열을 손쉽게 사용할 수 있는 상용구와 같은 역할을 한다.

   : 엔티티의 이름과 확장할 문자열을 미리 정의하면 XML문서나 DTD에 사용되는 entity

이름이 모두 미리 정의된 문자열로 대체된다.

   : 선언된 엔티티는 XML 문서에서 & + 엔티티 이름 + ; 의 형식으로 사용한다.

 

+ XXE 공격

: 사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드하거나 수정할 수 있는

경우, 공격자는 외부 entity를 참조하는 XML데이터를 전송하여 파일과 같은 서버 내부의 정보를

탈취하거나 서비스 거부 공격, SSRF 등의 공격을 수행할 수 있다.

 

+ XXE 공격 개요

: XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 entity를 처리할 수

있도록 설정된 경우 발생할 수 있다.

 

+ XXE 외부 엔티티 공격 대응

- 외부 엔티티 참조 기능이 필요하지 않은 경우 DTDs나 외부 엔티티 관련 설정을 비활성화한다.

-- 비활성화 방법은 프로그래밍 언어나 XML 파서의 종류에 따라 다르다.

 

- 시스템 운영자나 보안 관리자는 ENTITY 태그가 요청 메시지를 통해 전달되는 것이 확인되면

주의를 기울여야 한다.

-- 원래 의도했던 요청인지 여부를 확인할 필요가 있다.

 

- 서비스 중인 웹 애플리케이션에서 XML 외부 엔티티 기능이 필요하지 않다면 웹 방화벽 등

장비를 이용하여 해당 메시지를 차단한다.

 

댓글