1 분 소요


Cross Site Scriptin (XSS)

웹 사이트 관리자가 아닌 이가 웹 페이지에 악성 크릡트를 삽입하는 취약점.

주로 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어짐.

웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 나타나는데

주로 다른 웹 사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 한다.



Reflected XSS

웹 페이지에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격.

스크립트가 포함된 URL을 메일로 전송하거나 게시물로 등록하여 사용자가 클릭하도록 유도한다.

사용자들이 알아채기 쉽고 일부 브라우저에서 악의적인 스크립트에 대응하고 있기 떄문에 Stored XSS 보다 위협이 적지만

악성 서버로 유도되면 Stored XSS와 위협은 동일하므로 입력 값 검증이 필요하다.



XSS - Reflected (POST) - 난이도 : 하

image-20220321061751817

  • 이름을 입력하는 시나리오인데 POST 메서드로 요청하기 때문에 burpsuite를 이용하거나 텍스트 폼에다가 직접 입력해보자.
<script>alert('Succeed');</script>

image-20220321062444520



XSS - Reflected (POST) - 난이도 : 중

image-20220321062530098

  • 난이도 : 하 와 같은 방식으로 진행해봤지만 스크립트는 실행되지 않고 입력한 텍스트만 출력된것을 확인할 수 있다.
  • 작은따옴표를 우회하는 함수가 적용되어 있을거라 판단하고 다른 스크립트를 삽입해보자.
<script>alert(document.cookie)</script>


image-20220321062739240

  • 성공



대응방안

Linux

image-20220321163004306

  • vi 편집기로 xss_post.php 소스코드를 열어보자


난이도 : 중

image-20220321161425578

  • vi 편집기로 functions_external.php 소스코드를 열어보자.
  • 난이도 중 은 데이터를 xss_check_4로 부터 받아오는데 최종적으로 addslashes를 반환하고 있다.
  • adslashes
    • 특수 문자(‘,”,/) 앞에 역슬래시를 삽입하여 특수문자 기능을 문자로 이스케이프하는 함수


난이도 : 상

image-20220321161652371

  • 난이도 상 에서는 데이터를 xss_check_3 로부터 받아오는데 최종적으로 htmlspecialchars를 반환한다.
  • htmlspecialchars
    • 메타 문자가 html 태그로 사용되지 않도록 방지하여 입력값 그대로 출력하게 함.

업데이트: