웹 해킹

모의해킹의 열 번째 XXE 공격

jhyuxxk 2021. 3. 22. 13:54

XXE (XML eXternal Entity, XML 외부 엔티티) 취약점은 XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우 나타날 수 있다.

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

 

XXE 공격 실습

XML External Entity Attacks 메뉴 화면

 

위 버튼을 누르면 사용자의 시크릿이 버튼에 표시된 문자열로 초기화되는 기능이 구현되어 있다.

버튼을 누르고 요청메세지 화면

 

위 그림과 같이 Content-Type 헤더가 text/xml 타입으로 설정되어 있고, XML 데이터가 전송되고 있다.

응답 메세지 화면

 

앞에 bee는 로그인 태그안에 사용된 문자열인 것을 알 수 있다. 

해당 코드를 리피터로 전달해서 login태그 문자열을 바꿔 요청하면 응답도 그에 맞게 바뀐 화면

 

 

<login> 태그의 값으로 외부 엔티티를 참조함으로써, /etc/passwd 파일의 내용을 알아보겠다.

/etc/passwd 파일의 내용 출력 화면

 

XXE 공격 대응

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

혹은 웹 방화벽 등의 장비를 이용하여 차단한다.


위 글은 화이트 해커를 위한 웹 해킹의 기술을 참고했습니다.