XXE 취약점
XXE(XML eXternal Entity) 취약점은 XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우 나타날 수 있다.
사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드하거나 수정할 수 있는 경우, 공격자는 외부 엔티티를 참조하는 XML 데이터를 전송하여 파일과 같은 서버 내부의 정보를 탈취하거나 서비스 거부 공격, SSRF 등의 공격을 수행할 수 있다.
실습 페이지에 Any bug?라는 버튼이 존재한다. 이 버튼을 누르면 secert이 버튼에 표시된 문자열로 초기화 된다.
Content-type 헤더가 text/xml로 설정되어있고 바디에서 XML 형태의 데이터가 전송되고 있다.
XXE 취약점 공격은 이와같이 XML이 전송되는 부분을 통해 이루어진다.
요청 메시지에 XML 데이터에서 <login></login> 사이에 전송된 bee 문자열이 bee`s secret has been reset! 형태로 나타났다.
bee 대신 다른 문자열로 변경을 하면 응답 값이 바뀌는지 변경을 해보겠다.
<login></login> 사이에 전송된 bee 문자열을 hello 문자열으로 변경하였다.
응답 메시지를 확인해 보면 요청을 보낸 hello 문자열이 다시 되돌아 오는것을 확인할 수 있다.
만일 웹 애플리케이션이 외부 엔티티 사용을 허용하도록 설정되어 있다면, 우리는 다음과 같이 웹 서버 내부의 /etc/passwd 파일을 지정하는 외부 엔티티를 선언하고 <login> 태그의 갑승로 해당 외부 엔티티를 참조함으로써, /etc/passwd 파일의 내용을 알아낼 수 있다.
<!DOCTYPE XXE [<!ENTITY XXE SYSTEM "file:///etc/passwd">]>
<reset><login>$XXE;</login><secret>Any bugs?</secret></reset>
SYSTEM 키워드를 이용하여 /etc/passwd 파일을 읽어온다.
/etc/passwd 파일의 내용이 응답이 되었다.
XXE 공격 대응 방안
XXE 공격의 대응방법은 외부 엔티티 참조 기능이 필요하지 않은 경우 DTDs나 외부 엔티티 관련 설정을 비활성화 한다.
'WEB hacking > 비박스(bWAPP)' 카테고리의 다른 글
[비박스(bWAPP)] - 쉘쇼크 취약점 (1) | 2022.11.13 |
---|---|
[비박스(bWAPP)] - 하트블리드 취약점 (0) | 2022.11.12 |
[비박스(bWAPP)] - Directory Traversal - Files (0) | 2022.11.04 |
[비박스(bWAPP)] - 관리자 페이지 인증 우회 (1) | 2022.11.03 |
[비박스(bWAPP)] - Insecure DOR (Order Tickets) (0) | 2022.11.02 |