HTML 인젝션 - 저장기법(Blog)
저장기법이란?
악의적인 HTML태그를 데이터베이스에 저장하여 저장된 태그 내용을 확인한 사용자의 PC에 HTML 태그가 실행되게 하는 공격이다.
1. low
(1) h1태그를 사용하여 hello문자를 전송해보았다.
- h1태그가 사용되어 출력되는 것을 확인
(2) 앞에서 반사기법의 post 코드를 넣어보았다.
Firstname에 aa를 입력하고 Last name에 bb를 넣어서 Go를 눌러 전송해보았다.
그 결과 반사기법의 POST페이지로 이동후 welcome aa dd가 출력되는 것을 확인할 수 있다.
2. medium
(1) medium으로 바꾸자 HTML태그를 문자열로 출력하는 것을 확인할 수 있다.
(2) 간단히 h1태그만 url인코딩으로 전송해보았다.
그대로 문자열로 출력해주는 것을 확인할 수 있다.
(3) htmli_stored.php의 코드를 살펴보았다.
입력받은 값을 목록에 테이블 형식으로 출력해주는 부분에 소스인 것 같다.
소스를 보니 security_level이 1이나 2는 entry부분이 xss_check_3함수로 필터링 되는 것을 확인할 수 있다.
(security_level이 1은 medium 2는 high단계를 의미한다.)
(4) xss_check_3함수를 보기 위해 functions_external.php 소스를 찾아가 보았다.
함수를 본 결과 htmlspecialchars함수를 이용하여 html태그를 우회해주는 것을 알 수 있다.
"즉, medium과 high단계에서는
htmlspecialchars함수로 입력값을 필터링 해주기 때문에
HTML에서 사용하는 특수문자를 UTF-8로 반환하여
html인젝션 공격을 방어하였다는 것을 알 수 있다."