클라이언트 사이드 취약점들은 웹 서비스를 이용하는 사용자를 대상으로 하는 취약점들을 일컫습니다.
이번 강의에서는 클라이언트 사이드 취약점들이 발생하는 원인과 공격의 원리에 대해 다룹니다.
Description
Objectives
클라이언트 사이드에서 발생하는 웹 취약점들의 기초를 학습합니다.
Questions related to this course.
27 questions
내용 질문
https://learn.dreamhack.io/7#2 페이지에서
Introduction
이 강의는 Client-side(클라이언트 사이드) 취약점의 대표적인 공격 방법과 방어법을 다룹니다.
"Introduction of Webhacking" 강의에서 HTTP는 Connectionless와 Stateless한 특성을 가지고 있기 때문에 웹 서버가 사용자를 식별하기 위해 보편적으로 쿠키와 세션을 사용한다고 했습니다. 공격자는 사용자로부터 본인을 식별하기 위한 사용자 정보, 즉 쿠키나 세션에 저장된 세션 아이디를 탈취해 사용자 권한을 얻거나, 사용자의 브라우저에서 자바스크립트를 실행하는 등의 특별한 행위를 수행해 사용자가 요청을 보낸 것처럼 하는 것이 클라이언트 사이드 취약점의 주 목적입니다.
위와 같은 클라이언트 사이드 취약점이 발생할 수 있는 이유는 웹 브라우저는 Stateful한 상태를 유지하기 위해 모든 HTTP 요청에 쿠키를 함께 보냅니다. 아래는 웹 브라우저가 리소스를 요청할 때 보내는 HTTP 패킷입니다.
GET /resource1 HTTP/1.1
Host: dreamhack.io
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://dreamhack.io/sandbox
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: cookie=choco_poco; user_id=admin
GET /resource1 HTTP/1.1
Host: dreamhack.io
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://theori.io
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: cookie=choco_poco; user_id=admin
서로 다른 사이트인 dreamhack.io 와 theori.io에서 dreamhack.io/resource1 에 요청을 보내지만, 동일한 쿠키(cookie=choco_poco; user_id=admin)가 함께 전송되는 것을 확인할 수 있습니다.
이런 내용이 나오는데 밑에서 9번째 줄 Host가 dreamhack.io 가 아니라 theori.io 라고 되어야 하는거 아닌가요.?
내용 질문
https://learn.dreamhack.io/7#2 페이지에서
Introduction
이 강의는 Client-side(클라이언트 사이드) 취약점의 대표적인 공격 방법과 방어법을 다룹니다.
"Introduction of Webhacking" 강의에서 HTTP는 Connectionless와 Stateless한 특성을 가지고 있기 때문에 웹 서버가 사용자를 식별하기 위해 보편적으로 쿠키와 세션을 사용한다고 했습니다. 공격자는 사용자로부터 본인을 식별하기 위한 사용자 정보, 즉 쿠키나 세션에 저장된 세션 아이디를 탈취해 사용자 권한을 얻거나, 사용자의 브라우저에서 자바스크립트를 실행하는 등의 특별한 행위를 수행해 사용자가 요청을 보낸 것처럼 하는 것이 클라이언트 사이드 취약점의 주 목적입니다.
위와 같은 클라이언트 사이드 취약점이 발생할 수 있는 이유는 웹 브라우저는 Stateful한 상태를 유지하기 위해 모든 HTTP 요청에 쿠키를 함께 보냅니다. 아래는 웹 브라우저가 리소스를 요청할 때 보내는 HTTP 패킷입니다.
GET /resource1 HTTP/1.1
Host: dreamhack.io
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://dreamhack.io/sandbox
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: cookie=choco_poco; user_id=admin
GET /resource1 HTTP/1.1
Host: dreamhack.io
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://theori.io
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: cookie=choco_poco; user_id=admin
서로 다른 사이트인 dreamhack.io 와 theori.io에서 dreamhack.io/resource1 에 요청을 보내지만, 동일한 쿠키(cookie=choco_poco; user_id=admin)가 함께 전송되는 것을 확인할 수 있습니다.
이런 내용이 나오는데 밑에서 9번째 줄 Host가 dreamhack.io 가 아니라 theori.io 라고 되어야 하는거 아닌가요.?
crsf실습
<img src='d' onerror="<script>location.href='/sendmoney?to=dreamhack&amount=1000000'</script>">
이건 안되는 이유가 뭘까요
까막눈 구조 요청
예시 소스 코드들을 대충은 이해하겠는데 제가 직접 쓰지는 못하겠어요...
혹시 여기에 쓰이는, 그리고 앞으로 필요한 언어들을 알려주실 수 있으신가요???
CORS 헤더 관련하여 질문이 있습니다.
Access-Control-Allow-Origin 헤더와 X-Frame-Options 헤더의 차이점이 무엇인지 궁금합니다.
두 헤더가 중복되는 기능처럼 보여져서요!
asd
asdasd
초보자의 고뇌
let secretValue = myFrame.contentWindow.document.getElementById('secret-element').innerText;
이 문장이 해석이 안되요;; 도와주세용
Store XSS 관련해서 질문있습니다!<script>alert("냠냠이");</script>
여기 있는 예제(게시글 작성)에서는 본문에 <script> 태그를 넣으면 감지가 안되고 제목에 <script>태그를 넣어야하던데, 본문에 <script>를 넣으면 XSS가 안되나요?
이 형태로 작성해도 스크립트 inject 된게 맞지 않을까요?
```html
<div>
<h3 class="title"><script>alert(document.domain);<!--</h3>
<p class="content">-->asdf</script></h3><p></p>
</div>
```
예시로 나와 있는 내용은 어느 프로그래밍 언어인가요?
예시로 나와 있는 아래 내용은 어느 언어로 작성을 한 건가요? 언어가 아닌가요?@@
```
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/redirect')
def index():
return redirect(request.args.get('url'))
```
대상 호스트 쿠키가 삽입되는 부분이 헷갈립니다. ㅠ
시작주소(Referer)와 상관없이 대상 호스트가 발급한 쿠키를 가져온다고 되어있는데 naver.com 과 daum.net 에서 gmail.com 에 HTTP 요청을 보내면 naver.com 과 daum.net 의 HTTP 쿠키에 Cookie : user_id:admin 이런 식으로 동일한 쿠키 이름이 삽입되는 게 맞나요?
자바스크립트
코드 이해가 잘 안되는데 자바스크립트같은걸 배워야하나요?
SOP의 제약을 받지 않는??
html element의 경우에는 SOP의 제약을 받지 않는다고 되어 있는데 그럼 어떤 경우에 SOP의 제약을 받는 것인가요?
해당 사이트의 일부가 되어 SOP의 제약을 받지 않는다.. 이런 설명이 잘 이해가 되지 않습니다! ㅠㅜ
그리고 simple request는 SOP 제약을 받지 않는데 그 기준은 무엇인지.. 궁금합니다
same site란
같은 사이트라 함이 같은 origin이라고 생각했는데 path까지 같은 것을 의미하는 걸까요??
SOP 의 port에 관한 질문
프로토콜의 모든 구성요소가 일치 해야만 동일한 오리진으로 이라고 할 수 있다는데 어째서 path값이 달라도 same origin으로 인식이 되는지 궁금합니다. 또한 same origin으로 인식이 되닌까 동일한 오리진으로 인식이 되어 해당 사용자의 정보를 넘볼 가능성 또한 존재하는지도 궁금합니다.
이제 보니 path값은 오리진의 구성요소에 속하지 않다는 점을 발견했네요.
CSRF 드림은행 실습
잘 작동되는 건가요..?
Les't start 부분
"웹을 사용하는 사용자를 대상으로 공격을 하는 클라이언트 사이드 취약점들은 본인을 식별하기 위한 사용자 정보, 즉 쿠키에 저장된 세션 아이디 탈취해 사용자 권한을 얻거나 사용자의 브라우저에서 자바스크립트를 실행하여 사용자가 보낸 것처럼 요청을 전송하는 것을 주 목적으로 합니다." 에서 "쿠키에 저장된 세션 아이디" 뒤에 '를'을 추가하는 것이 더 매끄러워 보입니다..
Slide 7
IP 주소 대신 국가로 판별하는경우도 있다고 하셨는데 VPN을 써버리게 된다고 하면 더 나아가 어떠한 방어책이 있나요?
CSRF 드림은행 실습에서 질문
게시판에 img태그를 삽입해서 누군가 로드할때 해당 경로로 요청이 보내지는 공격방법이잖아요.
근데, 이게 Stored XSS랑 무슨 차이가 있나요?
아니면, CSRF라는 목적을 위해서 Stored XSS가 수단으로 쓰이는 건가요?
근데 애초에 CSRF는 외부 도메인으로 요청을 보내야 정의에 맞지 않나요?
오타제보
오 리뷰에 퀴즈에서 HTTPOnly Flag에서 자바스크립트가 자바크스립트로 되어있음
문제의 원리에대한 질문
<img src="/sendmoney?to=dreamhack&amount=1337">의 코드의 경우
이미지 URL을 불러오는 코드인데 위의 URL은 이미지가 아닙니다. 그렇다고 저 경로로 이동하는 것도 아닌데
어떤식으로 victim이 저 URL을 실행하게 되는건가요?
stored XSS 실습에서 왜 내용 부분에는 script가 작동하지 않나요?
stored XSS 실습에서 왜 내용 부분에는 script가 작동하지 않나요?
드림은행 해킹 실습 오류인가요??
드림은행 해킹 실습에서 100만원이상이라고 해서 100만원 이상 했는 데 100만원에 미치지 못 했다고 하네요...
XSS 게시글 작성 부분
<img src="123" onerror="alert('xss');"> 을 해봤는데 탐지가 안되었다고 뜹니다.
HTTPOnly Flag
자바스크립트 오타났습니다!
리뷰퀴즈는 뭔가요?
리뷰퀴즈는 뭔가요?
test
[XSS](�javascript:alert(document.cookie))
Recommend for you
Related courses

Client-side Basic

Free
Detail
2 hours read
Easy
HTTP, 웹 브라우저, 웹 어플리케이션에 대한 이해