Quest. HTML Injection stored이 무엇인지 간단하게 정리하시오.
공격자가 보안이 취약한 포털 사이트나 블로그에 악의적인 스크립트가 포함된 게시물을 올린 경우 정상적인 사용자가 이 게시물을 클릭하면 해당 스크립트가 실행되는 취약점이다. HTML injection - Reflected와 달리 다수의 사용자가 게시물을 열람하면 모두 공격의 대상이 될 수 있으므로 위험하다.
Quest. 문제 페이지에 코드를 삽입하여 아래와 같이 이전 QUEST인 html injection - reflected (POST)를 해결하세요.
① level low
네모 박스에 내용을 입력하고, Submit 버튼을 누르면 리스트가 하나 추가되면서 Entry에 입력한 내용이 출력된다. HTML Injection - Reflected (POST)의 화면이 HTML Injection - Stored (Blog)에 출력되게 하기 위해서 값을 입력 받는 부분인 form 태그를 복붙해서 Submit 했다. 그랬더니 Entry부분에 HTML Injection - Reflected (POST)의 입력창이 떴고, First name과 Last name에 각각 HTML코드를 작성했다.
그 결과 HTML Injection - Reflected (POST)과 똑같은 결과화면을 출력할 수 있었다.
② level medium
level low와 동일한 방법으로 코드를 복사하면 Entry에 HTML Injection - Reflected (POST) 입력창이 아니라 단순 문자열만 출력되는 것을 볼 수 있었다.
htmli_stored.php 파일을 열어보니 level medium에서는 sqli_check_3 함수를 사용한다. 그러나 나머지 low와 high일 때도 동일한 함수를 사용한다. 이 세 가지의 차이점을 찾지 못해서 주석에 달린 xss_check_4 함수로 과제를 진행했다.
xss_check_4 함수는 addslashes($data)를 반환한다. addslashes 함수는 ', ", \, NULL byte 앞에 백슬래시를 붙여서 다른 문자열들과 구분하게 해준다.(escape) 이처럼 xss_check_4 함수는 $data에 들어있는 일부 문자를 escape시키기 때문에 level medium에서 HTML Injection - Reflected (POST) 실행화면을 출력할 수 없다.
'Study > Web Hacking' 카테고리의 다른 글
[bWAPP] Broken Auth. - Insecure Login Forms/Robots File (0) | 2020.10.31 |
---|---|
[bWAPP] SQL Injection (Login Form/Hero) (0) | 2020.10.04 |
[bWAPP] SQL Injection (GET/Search) (0) | 2020.09.25 |
[bWAPP] HTML Injection - Reflected (POST) (0) | 2020.09.19 |
[bWAPP] HTML Injection – Reflected(GET) (0) | 2020.09.12 |