XML External Entitiy Attack (XEE) 은 취약하게 설정된 XML parser에 의해 공격자가 XML 문서에서 외부 엔티티를 이용하여 공격자가 의도하는 외부 URL 을 실행시킨 뒤, 서버의 로컬파일 정보 등을 출력하거나 DOS 공격을 수행할 수 있는 취약점이다.
bee-box 환경에서 실습해보자!
Level - low
Any bugs? 버튼 요청을 burf suite 로 잡아보면 위와 같다. 이 body 부분에 XXE 스크립트를 작성해보자.
위의 빨간 네모 부분처럼 xxe 라는 외부 엔티티를 선언한다. 선언된 외부 엔티티는 &엔티티이름; 형식으로 사용하면 된다.
burf suite 의 Repeater 기능을 통해 response 를 보면 위와 같이 etc/passwd 파일의 내용을 출력해주는 것을 볼 수 있다.
Level - medium, high
medium, high level 에서는 response 로 고정된 메시지만 출력해주고 있다.
소스코드 분석
low level 에서는 아이디, 패스워드를 xml 코드를 통해 전달받고 있다. 때문에 외부 엔티티를 통해 악의적인 요청이 가능했던 것이다.
medium, high level 에서는 위와 같이 id 를 미리 저장한 세션에서 가져오기 때문에 xml 에서 외부 엔티티를 사용한다 해도 response 로는 세션에 저장된 id 만 출력이 된다.
대응 방안
외부 엔티티 기능이 필요하지 않다면 관련 설정(DTD, 외부 엔티티)을 비활성화
'웹 취약점(bee-box)' 카테고리의 다른 글
CSRF (Transfer Amount) (0) | 2020.05.11 |
---|---|
CSRF (Change Secret) (0) | 2020.05.11 |
CSRF (Change Password) (0) | 2020.05.11 |
Broken Authentication - Password Attack (0) | 2020.04.16 |
Broken Authentication - Forgotten Function (0) | 2020.04.14 |