Reflected XSS에 대해 알아보기 앞서 XSS(Cross Site Scripting)취약점이 무엇인지 간단하게 알아보도록 하겠습니다.
XSS ( Cross Site Scripting ) ?
웹 사이트 관리자가 아닌 이가 웹 페이지에 클라이언트 측에서 실행될 수 있는 악성 스크립트를 삽입할 수 있는 취약점
Reflected XSS ?

공격자가 악성 스크립트가 담긴 URL을 생성하여 메일 등을 통해 사용자에게 전달한 후 실행하도록 하는 공격으로 사진과 같이 공격자가 악성 스크립트가 담긴 URL을 사용자에게 전달 후 사용자가 실행하면 웹 서버로부터 해당 스크립트에 대한 응답이 즉시 사용자에게 전달되는데 이것이 마치 반사되는 것과 같은 형상을 보이기 때문에 Reflected(반사형) XSS 공격이라 부른다.
보통 사회 공학 기법 중 하나인 '피싱'을 이용하여 악성 스크립트가 담긴 URL을 사용자에게 전달하여 URL을 클릭하도록 유도한다.
DVWA 환경에서 Reflected XSS 실습

우선 본 실습에 앞서 실습 환경의 경우 리눅스 환경에서 DVWA 환경을 구축한 후 가장 취약한 환경인 Low 레벨 환경에서 실습을 진행하였습니다.

Reflected XSS 취약점 실습을 위해 해당 탭으로 들어온 모습이다.
텍스트 입력란에 입력한 값이 URL을 통해 서버로 전송되고 페이지를 구성한다는 것을 알 수 있다.

URL을 통해 입력한 값이 서버로 전송되고 페이지를 구성한다는 점을 기반으로 URL에 지정된 파라미터에 클라이언트 측에서 실행될 수 있는 스크립트(사진은 쿠키에 저장된 값을 알림으로 출력해주는 스크립트)를 입력하여 전송한 결과 쿠키에 저장된 값들이 알림으로 출력되는 모습을 사진과 같이 확인할 수 있다.


일반적으로 Reflected XSS 공격은 위에서 설명했던 것과 같이 사회 공학 기법 중 하나인 '피싱'을 이용하여 사용자에게 전송 후 URL을 클릭하도록 유도하게 되는데 해당 시나리오를 보여주기 위해 직접 피해자(본인)에게 피싱 메일을 전송하는 사진이다.

악성 스크립트가 포함된 URL을 받은 피해자는 해당 메일을 긴급한 메일로 생각하여 해당 URL을 클릭하여 악성 스크립트를 실행하게 된다.

피해자는 악성 스크립트가 담긴 URL 클릭 통해 악성 스크립트 (예시는 쿠키 정보가 출력되는 스크립트)가 실행되어 사진과 같이 쿠키 정보가 출력되게 된다.
XSS 대응 방안

- 태그 사용이 필요 없을 경우 태그 문자(<,>)는 HTML Entity 형태로 치환하여 입력된 태그 문자는 문자열로만 인식되도록 구현한다.

- 부득이하게 태그 사용이 반드시 필요할 경우에는 위 사진과 같이 필요한 태그(예시는 <p>태그)만 사용할 수 있도록 구현한다. => 위 예시는 화이트리스트 방식
- 아래 사진은 블랙리스트 방식으로 <script> 태그가 입력될 경우 공백으로 치환되도록 구현한 것이다.
- 화이트리스트 방식이 좀 더 보안적인 측면에서 우수하지만 블랙리스트 방식에 비해 사용성이 떨어질 수 있기 때문에 다방면으로 고려하여 구현해야 한다.


- XSS 취약점은 <script>alert(1)</script>와 같이 사용하려면 최소 글자 수가 10자 이상을 작성해야 한다. 그렇기 때문에 불필요하게 입력 문자 수가 길 필요가 없는 입력 필드는 위 사진과 같이 입력될 수 있는 길이를 제한하여야 한다.
- 하지만 이때 위 사진과 같이 클라이언트 측에서만 입력 문자 길이를 검증할 경우 maxlength 속성을 삭제하여 글자 수 제한을 우회할 수 있기 때문에 아래 사진과 같이 데이터베이스에서도 길이 제한을 적용해야 한다.

- 보안 라이브러리(AntiXSS, OWASP 등)을 사용하여 개발한다.
'CERT > 웹 모의해킹 실습' 카테고리의 다른 글
| [웹해킹] Brute Force 공격 실습 / DVWA(Medium) 환경 실습 / 대응 방안 (0) | 2023.07.20 |
|---|---|
| [웹 해킹] Stored XSS / DVWA 환경 실습 / 대응 방안 (0) | 2023.07.01 |
| [웹 해킹] DOM Based XSS / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.21 |
| [웹 해킹] Weak Session IDs / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.21 |
| [웹 해킹] Blind SQL Injection / DVWA SQL Injection(Blind) 실습 / 대응 방안 / SQLMAP 사용법 (0) | 2023.06.16 |