※ Stored XSS 개요
게시판, 마이페이지, 닉네임 변경 등 서버에 저장시키는 페이지 내부에 악의적인 스크립트문을 삽입한다.
서버에 스크립트를 저장시키기 때문에 특정 대상이 아닌 해당 페이지를 열람하는 모든 사용자들이 공격 대상이 된다.
이 때, 해당 페이지를 이용하는 사용자들은 로그인을 한 상태이기 때문에 인증과 관련된 쿠키나
세션 토큰값을 탈취당할 수 있다. 사용자들은 페이지를 열람할 때마다 삽입된 스크립트가 실행된다.
1. Reflected XSS보다 Stored XSS가 더 위협적인 이유
1) Reflected XSS는 공격 대상이 링크를 직접 클릭하도록 유도해야하지만(사회공학적 기법),
Stored XSS는 서버 내 페이지에 공격문이 저장되므로 링크를 클릭하도록 유도할 필요가 없다.
2) 공격에 사용되는 취약한 페이지들에 접근하기 위해서는 로그인 등을 통한 인증된 사용자만 접근할 수 있다.
따라서 쿠키나 세션 토큰값 탈취에 용이하다. (Reflected XSS는 인증이 되지 않은 상태로도 페이지에 접근 가능)
3) Reflected XSS는 링크를 클릭하는 특정 대상에게만 공격이 가해진다면, Stored XSS는 서버 내 저장된
취약한 페이지를 열람하는 모든 사용자가 페이지를 호출할 때마다 공격 대상이 된다.
4) Reflected XSS는 url 링크를 검사하여 브라우저 자체에서 차단하는 경우가 많으나, Stored XSS는
서버 내에 저장되기 때문에 브라우저가 취약한 페이지를 차단하지 않는다.
2. Stored XSS 공격(Burp Suite 사용)
1) <'"> 특수문자 사용 가능 여부 확인하기
게시글 내용칸에 작성한 특수문자 <'">가 문제없이 출력된 것을 알 수 있다.
아래 Burp Suite를 통해서도 <'"> 특수문자를 전송하는 것을 볼 수 있다.
' " 특수문자는 그대로 작성되지만, < > 특수문자는 필터링 처리되는 것을 확인할 수 있다.
따라서 게시글의 내용칸에서는 ' " 특수문자만을 공격에 이용할 수 있다.
하지만 < > 특수문자를 사용할 수 없다고 단언하기 전에 제목칸에도 <'"> 특수문자를 입력해본다.
제목 텍스트박스에는 필터링이 적용되지 않아 <'"> 특수문자 모두를 사용할 수 있음을 알아냈다.
따라서 이 텍스트박스를 이용하여 XSS 공격을 시도한다.
2) Script문 삽입
위처럼 제목칸에 스크립트문을 삽입하여 게시글을 생성한 뒤,
해당 페이지로 접속하면 아래와 같이 알림창이 등장하는 것을 확인할 수 있다.
'웹 모의해킹 > XSS' 카테고리의 다른 글
Reflected XSS (0) | 2022.11.26 |
---|---|
XSS(Cross-Site Scripting) (0) | 2022.11.21 |