이번에는 로그인 폼에서의 XSS 공격에 대해서 알아보겠다. 로그인하면 SQL Injection 이 가장 먼저 생각나는데 이를 이용하여 XSS 를 수행할 수 있다.
bee-box 환경에서 실습해보자!
Level - low
로그인 폼에서 ' or 1=1 # 을 통해 조건을 참으로 만들 수 있는 것을 확인하였다. 이를 이용하여 참이 되는 조건에서 스크립트 문을 삽입해보았다.
스크립트 문이 성공적으로 실행되었다.
Level - medium, high
SQL Injection 을 통해 조건을 참으로 만들 수 없었다. 인젝션 필터링이 되어 있다.
소스코드 분석
medium 과 high level 에 각각 SQL 과 관련된 함수로 입력값을 체크하고 있다.
medium level 에서는 addslashes() 함수를 이용하여 ', ", \ 를 필터링하고 있다.
medium level 에서는 mysql_real_escape_string() 함수를 이용하여 ', ", \, \n 등의 특수문자들을 필터링하고 있다.
두 함수로 인해 medium, high level 에서는 SQL Injection 이 불가능하였고 XSS 공격도 수행할 수 없었다.
참고로 addslashes() 와 mysql_real_escape_string() 함수는 멀티바이트를 사용하는 언어로 인코딩하는 경우 우회가 가능하다.
'웹 취약점(bee-box)' 카테고리의 다른 글
XSS - Reflected(User-Agent) (0) | 2020.04.13 |
---|---|
XSS - Reflected(Referer) (0) | 2020.04.10 |
XSS - Reflected(AJAX/XML) (0) | 2020.04.06 |
XSS - Reflected(AJAX/JSON) (0) | 2020.04.06 |
XSS - Reflected(JSON) (0) | 2020.04.06 |