본문 바로가기

Education/[AWS] Cloud Hacking

[AWS] Chapter4. 서버&서버리스 진단 - 5

6. XXE

01. XXE 개요
- XML 타입의 데이터를 웹 요청을 통해 전송, 서버에서 XML 외부 엔티티 처리가 가능할 때 발생
- 사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드/수정 가능
  -> 파일과 같은 서버 내부의 정보 탈취/SSRF 등 공격 수행
- XML 외부 엔티티 선언 형태

- 사용자가 브라우저를 통해 XML 데이터를 입력 후 서버(lambda)로 전송
- 서버의 함수는 XML 데이터를 파싱하며, XXE 공격 발생
- XML 구문 분석기의 입력 값 검증 누락으로 발생

02. 시나리오

진단방안
- 전제 조건
  -> 서버 요청 시 DTD(Document Type Definiton)를 선언할 수 있어야 함

03. 진단방법

XXE 파서 취약성
- XML 구문 분석에 사용되는 python3 모듈의 취약성


- XML 구문 분석에 사용되는 PHP XML 파서
  -> libxml_entity_loader

04. 실습

입력값 변조를 통한 XXE
- 정상적인 xml 데이터를 파싱하여 출력하는 것을 확인


- 파일을 지정하는 외부 엔티티 선언 후, 태그 값으로 참조하는 페이로드 작성

 

05. 보안대책


DTD(외부 엔티티) 비활성화
- XML 외부 객체 공격은 AWS 자체 취약성이 아닌 애플리케이션 소스코드에 의한 Injection 취약점이므로 자체 수정, 조치해야함
- 외부 엔티티 참조 기능이 필요하지 않은 경우
  -> DTD 관련 설정을 비활성화
  -> DTD를 비활성화할 수 없는 경우 외부 엔티티 및 외부 문서 유형을 각 파서에 고유한 방식으로 비활성화
      => factory.setFeature(http://apache.org/xml/features/disallow-doctype-decl,true);