yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

XXE 외부 엔티티 공격 본문

웹/웹 해킹

XXE 외부 엔티티 공격

yehey 2020. 11. 26. 00:38

XML (extensible markup language)

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

 

마크업 언어: 문서에 마크업을 붙여서 추가적인 정보를 표시하는 언어

XML은 데이터 전달에 유리한 마크업 언어

XML을 작성할 때는 반드시 DTD가 명시되어 있어야 함

DTD

:데이터 작성 방법을 정의한 문서 형식 정의
<!DOCTYPE> 태그를 통해 선언할 수 있으며 외부에서 파일을 읽어올 수도 있다.

DTD의 엔티티(entity)

  • 특정 문자열을 손쉽게 사용할 수 있는 사용구 같은 역할을 함
  • 데이터 항목을 참조하기 위한 XML의 방법
  • 보통 텍스트 (이진 데이터로도 구성 가능)
  • 엔티티의 이름과 확장할 문자열을 미리 정의해 놓으면 XML문서나 DTD에서 사용되는 엔티티 이름은 모두 미리 정의한 문자열로 대체됨
  • 선언된 엔티티는 XML문서에서 &엔티티 이름; 형식으로 사용한다. (ex. &amp;)
  • 엔티티가 문서 내부에서 선언되고 사용되면 내부 엔티티라고 하고, 문서 외부에 있는 내용을 참조해 불러오면 외부 엔티티라고 한다.

XXE 공격

:XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우 발생한다.

 

사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드하거나 수정할 수 있는 경우, 공격자는 외부 엔티티를 참조하는 XML 데이터를 전송하여 파일과 같은 서버 내부의 정보를 탈취하거나 서비스 거부 공격, SSRF 등의 공격을 할 수 있다.

 

XXE 공격 대응

  • 외부 엔티티 참조 기능이 필요하지 않은 경우 DTDs나 외부 엔티티 관련 설정을 비활성화한다.
  • 시스템 운영자나 보안 관리자는 ENTITY 태그가 요청 메시지를 통해 전달되는 것이 확인되면 주의를 기울여야 한다.
    (원래 의도했던 요청인지 여부를 확인할 필요가 있다.)
  • 서비스 중인 웹 애플리케이션에서 XML 외부 엔티티 기능이 필요하지 않다면 웹 방화벽 등 장비를 이용하여 해당 메시지를 차단한다.

 

 

' > 웹 해킹' 카테고리의 다른 글

접근 통제 취약점  (0) 2020.11.18
민감한 데이터 노출  (0) 2020.11.17
파일 업로드 공격 및 실습  (0) 2020.11.12
파일 인클루전 (File inclusion)  (0) 2020.11.11
Stored XSS 공격 실습  (0) 2020.10.08
Comments