1. 개요

XXE 공격은 2017 OWASP TOP10에 포함되어 있는 공격이며, 최근 보안기사 시험에 출제되기도 하였다.

 

XXE는 악의적인 XML코드를 삽입하여 실행시키는 공격이다. 일반적으로 응용프로그램에서 취약한 XML Parser를 구성하였을 경우 발생하며 해당 공격을 통해 기밀 데이터의 공개, 서비스 거부, 포트스캔 및 기타시스템 영향으로 이어질 수 있다.

 

XML은 데이터를 저장하고 전달할 목적으로 만들어진 마크업 언어이다. HTML과 유사한 구조로 되어있지만 데이터를 보여주기 위한 언어인 HTML과는 사용하는 목적에 차이가 있다. 또한, HTML태그는 미리 정의되어 있는 반면 XML태그는 사용자가 직접 정의하여 사용한다.

 

여기서는 OWASP TOP10 위협을 기반으로 취약하게 만들어진 웹 응용 프로그램 'WebGoat 8.0'의 문제풀이 방식으로 XXE공격을 실습 및 분석하고자 한다.

 

2. 실습 환경

 

3. 실습 내용

① Let's try

문제 : 게시글에 댓글을 달 것 입니다. 댓글 작성 시 XXE 인젝션을 시도하여 시스템의 최상위 디렉토리에 있는 파일들의 이름을 나열해보십시오.

 

[Step #1] Raw Data 확인 및 분석

- 댓글에 hello작성 시 raw data이다. 헤더의 Content-Type을 통해 XML 통신임을 확인 할 수 있다. 또한 파라미터 값이    XML 문서임을 명시하고 있으며, 작성한 댓글 내용이 XML 요소 값으로 구성되어 있다.

 

- XML문서에서 DTD(Document Type Definition : 문서 타입 정의)를 사용하여 XML문서의 새로운 타입을 만들 수 있다.    DTD의 사용을 통해 XML문서의 구문 및 구조를 정의한다고 할 수 있다.

 

- DTD의 외부엔티티는 SYSTEM 키워드를 사용하여 문서 외부의 파일을 참조할 수 있다. 이를 이용하여 최상위디렉터리    를 외부엔티티로 참조하면 파일들의 이름을 열람할 수 있다.

 

[Step #2] 공격 실행

- 최상위 디렉터리 'file:///'을 SYSTEM 키워드로 설정한 외부엔티티 'root'를 정의한다. 그리고 이 엔티티를 XML문서의 <text>요소에 포함하여 서버에 전달한다

.  

- 최상위 디렉터리의 파일 명들이 댓글에 달린 것을 확인할 수 있다.

 

 

② Blind XXE assignment

문제 : ... DTD를 작성하여 WebGoat서버에 있는 secret.txt 파일의 내용을 Webwolf 랜딩 페이지에 업로드 하십시오. 파일의 내용을 댓글에 작성하세요.(이하생략)

 

[Step #1] Raw Data 확인 및 분석

- ①번문제와 동일한  Raw Data가 확인된다.

 

- 먼저, 외부엔티티를 이용하여 WebGoat서버의 'secret.txt.'파일의 내용을 참조하도록 한다.

- 그리고 참조한 'secret.txt'의 데이터를 파라미터로 하여 WebWolf서버에 전달하는 엔티티를 정의한다.

 

  [Step #2] 공격 실행

공격 XML코드
WebWolf 랜더링 페이지

- uri에 'secret'파일의 정보가 아닌 입력한 '%secret'이 그대로 들어 있으므로 XXE공격이 동작하지 않는 것을 확인

 

- 외부엔티티 'ping'의 값으로 파일 내용을 파라미터로 전달하는 'run'엔티티를 재정의하여 이중으로 구성하도록 한다.

 

엔티티 이중구성

 

결과

- DTD에서 '%secret'이 동작하지 않는 오류 발생

 

- 선언된 엔티티가 DTD내에서 다른 엔티티의 값으로 쓰일 경우, 또는 이중으로 구성된 경우에 공격이 실패하는 것이 확인되었다.

 

- 따라서 XML공격코드가 작성된 파일을 만들고 이 파일을 참조하도록하여 공격을 진행 

XML공격코드가 작성된 파일(attack.dtd) 생성

 

'attack.dtd' 파일을 참조하는 엔티티'read'를 정의하여 업로드

 

WebWolf 랜더링 페이지

- 공격자의 웹서버에 'secret'파일의 데이터가 파리미터로 전달된 것을 확인

 

*참고 사이트 및 도서

1.https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

 

XML External Entity (XXE) Processing | OWASP

XML External Entity (XXE) Processing on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.

owasp.org

2. 장용하, 취미로 해킹#3, 부크크(2019)

복사했습니다!