DOM Based XSS 공격
-
XSS 취약점 게시판
- 스크립트 작성 확인 <script> alert('xss') </script>
- beef-xss 실행 > 로컬 주소로 접속
ex) 감염된 PC의 쿠키 값 탈취
ex) 리다이렉트로 강제 주소 접속
ex) 페이지 소스로 가짜 홈페이지
beEF 대응방안
- 게시물 페이지의 스크립트 허용하지 않게 해야 함
- 텍스트가 출력되도록
- lucy filter 적용
- JSTL <c:out>을 이용
<a href="view.do?idx=${board.idx}"><c:out value="${board.subject}" /></a></td>
실습
해당 서비스에 취약점 존재 여부를 확인하고, 취약점을 찾는 방법,
취약점 유형 및 판단 근거, 대응 방안(안전한 코드 예시)에 기술해 보세요.
취약점 존재 여부 : XSS(크로스 사이트 스크립트) 취약점 존재
취약점 찾는 방법 : html 태그, script 입력 시 동작
취약점 유형 및 판단 근거:
- 입력 받은 html 문장이 필터링되지 않아 동작하는 것을 확인
html 동작하는 것을 보고 XSS 취약점 판단
**악의적인 스크립트 삽입 가능
대응방안: 이스케이프 함수를 사용합니다. 입력된 데이터는 html, script로 해석되지 않고, 일반 텍스트로 표시됩니다.
echo "Welcome " . htmlspecialchars(xss($firstname)) . " " . htmlspecialchars(xss($lastname));
***functions_externals.php 내장함수 활용
XSS? 스크립트 코드가 개발자가 만든 코드인지, 제 3자가 만든 코드인지 구분되야 함
CSP
- content security policy(컨텐츠 보안 정책)
- 정 유형의 공격, 특히 Cross-Site Scripting (XSS) 공격을 방지하기 위한 보안 기술
SOP
- 다른 출처에서 로드된 문서나 스크립트가 현재 문서의 정보에 접근하는 것을 제한하는 규칙
- 동일 출처 정책
CORS
- SOP의 일부로, 다른 출처의 웹 페이지에서 리소스를 요청할 때 브라우저가 요청을 허용하는 메커니즘을 정의