반사형 XSS 는 공격자가 스크립트를 삽입한 페이지를 클라이언트가 접근했을 경우, 삽입된 스크립트가 클라이언트에서 실행되는 공격 기법이다. 이를 통해 클라이언트의 정보를 획득하거나 악의적인 동작을 발생시킬 수 있다.
bee-box 환경에서 실습해보자!
Level - low, medium
입력폼에 스크립트 태그가 적용이 되는지 입력해보았고, 아무 필터링 없이 잘 동작하는 것을 확인했다.
쿠키 정보도 획득해보자.
위와 같이 입력하여 쿠키 정보를 획득할 수 있었다.
이 외에도 여러 공격을 할 수 있는데 이번 실습에는 스크립트 실행 유무만 확인하고 가겠다.
Level - high
high level 에서는 script 문이 그대로 출력되는 것을 볼 수 있다.
소스코드를 보면 위와 같이 <> 가 < 와 > 로 변환되어 적용되어 있다.
소스코드 분석
level 마다 각각의 함수로 입력값을 체크하고 있었다.
medium level 의 xss_check_4() 에서는 addslashes() 함수를 이용하여 입력값을 체크하고 있다. addslashes() 함수는 따옴표('), 쌍 따옴표("), 역슬래시(\), NULL 문자 앞에 역슬래시(\) 를 붙여 특수 문자가 아닌 일반 문자로 인식되게 하는 역할을 한다. 때문에 스크립트 문을 사용하는 데는 지장이 없던 것이다. addslashes() 함수는 SQL Injection 공격을 방지할 때 많이 사용한다.
high level 의 xss_check_3() 에서는 htmlspecialchars() 함수를 이용하여 입력값을 체크하고 있다. 때문에 <> 가 다른 문자로 변환된 것이었다.
대응 방안
htmlspecialchars() 함수 사용
'웹 취약점(bee-box)' 카테고리의 다른 글
XSS - Reflected(AJAX/JSON) (0) | 2020.04.06 |
---|---|
XSS - Reflected(JSON) (0) | 2020.04.06 |
XML/XPath Injection(Login Form) (0) | 2020.03.26 |
SSI (Server Side Includes) Injection (0) | 2020.03.25 |
PHP Code Injection (0) | 2020.03.25 |