네트워크 구성
- Attacker (Kali Linux 192.168.1.10/24)
- Victim (Window_A 192.168.1.1/24)
- WebServer (Window_Server 192.168.2.2/24)
공격 과정
- Attacker(Kail)에 웹 서비스 기능을 활성화한 후 Victim(희생자)의 Cookie값을 수신하기 위한 목적의 페이지를 생성한다.
- Attacker는 XSS 공격이 가능한 사이트(WebServer)에 악의적인 목적의 Script가 숨어있는 게시물을 작성한다.
(해당 게시물을 읽는 다른 사용자의 쿠키값이 공격자의 웹 페이지로 전송될 수 있는 Script)
- Victim이 게시물을 클릭할 경우 Attacker에게 Victim의 쿠키값이 전송된다.
Reflective XSS (non-persistent )
- 공격자는 이메일, 메신저, 웹 게시판 등을 이용하여 악성 스크립트를 포함한 URL을 Victim에게 노출시킨다.
- 악성 스크립트는 서버에 저장되지 않는다.
Stored XSS ( persistent )
- 공격자는 웹 게시판, 방명록 등에 악성 스크립트를 XSS에 취약한 웹 서버에 저장한다.
- 공격자는 해당 게시물을 Victim에게 노출시킴
XSS에 취약한 페이지 유형
- HTML을 지원하는 게시판
- Search Page
- Personalize Page
- Join Form Page
- Referer를 이용하는 Page
- 그 외 사용자로부터 입력받아 화면에 출력하는 모든 페이지에서 발생 가능
XSS 공격이 가능한 페이지인지 확인
- Kali Linux에서 웹서버의 페이지에 들어간 후 방명록에 script 구문을 삽입한 후 저장한다.
- Window_A(Victim)이 Kail Linux(Attacker)의 게시글을 클릭하면 script구문이 실행되는 것을 확인할 수 있다.
- Script 구문 안에 document.cookie를 입력하면 사용자의 쿠키값을 알아오는 것도 가능하다.
Attacker PC 웹 서비스 기능 활성화
- Kail Linux에서 Victim의 Coookie값을 저장할 수 있는 Web Page를 만들려고 한다.
- apache2를 실행시키고 정상적으로 접속이 되는지 확인한다.
getcookie.php 파일 생성
- WebServer에서 Cookie값을 받아올 getcookie라는 이름의 php 파일을 생성한다.
- getcookie.php 파일의 권한을 777로 부여한다.
Web Server에서 XSS 공격 코드 작성
- Web 사이트에서 Victim이 게시물을 클릭할 경우 Victim의 Cookie값이 Attacker에게 전송되는 코드를 작성한다.
- img 태그에 가로, 세로 길이를 0으로 설정하여 Script구문이 보이지 않도록 설정한다.
Window_A에서 접속
- Victim에서 접속해보면 기본 text파일만 보이고 Script구문이 보이지 않는 것을 확인할 수 있다.
WireShark 패킷 확인
- Window_A에서 나가는 패킷을 확인하려고 한다.
- 사용자가 게시물을 클릭할 경우 192.168.1.10(Kali_Linux)에게 Cookie값이 전송되는 것을 확인할 수 있다.
Kali Linux에서 Cookie값 확인
- tmp/cookie.data 파일을 확인해보면 Victim의 Cookie값이 저장돼있는 것을 확인할 수 있다.
XSS 공격 대응방법
- WebServer에서 /script라는 문자가 들어있는 경우 공백으로 변경시켜서 Script 구문이 실행이 되지 않도록 변경시킨다.
- 작성한 후 Attacker PC에서 Script문을 재작성한다.
- 게시글을 클릭해보면 알림 창이 뜨지 않고 script문자가 공백으로 변한 것을 확인할 수 있다.
- 위 방법은 기초적인 방법이고 보안 가이드를 참고하여 XSS 공격 방어방법을 적용해야 한다.
'Hacking & Security > Web Hacking & Security' 카테고리의 다른 글
[Web Hacking & Security] SQL Injection을 통한 Database Schema 파악 (0) | 2020.01.06 |
---|---|
[Web Hacking & Security] SQL Injection 공격 (0) | 2020.01.06 |
[Web Hacking & Security] CSRF (Cross Site Request Forgery) 공격 (0) | 2020.01.03 |
[Web Security & Hacking] XSF(Cross Site Flash) 공격 (0) | 2020.01.02 |
[Web Hacking & Security] NC(Netcat) 사용방법 (0) | 2020.01.02 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊