혜랑's STORY

[2020-2학기 웹] : HTML Injection - Stored (Blog) 본문

2020 SISS 21기 활동/2학기 WEB

[2020-2학기 웹] : HTML Injection - Stored (Blog)

hyerang0125 2020. 9. 20. 22:34

# HTML Injection - stored (Blog)란?

 공격자가 서버(게시판)에 태그/스크립트를 저장시켜, 클라이언트가 게시판을 읽을 경우 태그/스크립트가 싱행되는 방식으로 게시판을 읽을 경우, 예를 들어 쿠키 정보 갈취, 악성코드 유입, 랜섬웨어, 피싱 사이트 접속, 불필요한 프로그램 설치 등의 공격을 실행한다.

#실습

- 참고(form 작성 코드)

<form action="/bWAPP/htmli_post.php" method="POST">
 	<p><label for="firstname">First name:</label><br />
 	<input type="text" id="firstname" name="firstname"></p>
 	<p><label for="lastname">Last name:</label><br />
 	<input type="text" id="lastname" name="lastname"></p>
 	<button type="submit" name="form" value="submit">Go</button>
 </form>

-> 실행 화면 

폼 실행화면

 

- low level

First name에 <h1>SUCCESS<h1> 값을 입력하고 Last name에 <img src=http://172.16.3.49/bWAPP/images/bee_1.png>값을 넣어주면 아래 화면처럼 출력된다는 것을 알 수 있다.

low level 실행결과

 

- medium level

 medium level은 입력 폼을 만들기 위하여 참고에 있는 코드를 작성해주었더니 아래 사진과 같이 폼이 만들어지지 않고 코드가 그대로 출력된다는 것을 알 수 있었다.

medium level에서 폼 코드 삽입

이유를 찾기 위하여 htmli_php 코드를 살펴보니 medium level에서는 xss_check_4() 함수가 사용된다는 사실을 알 수 있었다.

htmli_php 파일의 코드 중 일부

 xss_check_4() 함수는 addslashes($data)를 반환하고 있다. 잘 살펴보니 "Do NOT use this for XSS or HTML validations!!"라고 적혀있고 이 주석을 통하여 addslashes($data)값을 반환받으면 xss와 HTML에서 인젝션 공격을 하지 못한다는 것을 알 수 있었다.

xss_check_4() 함수 코드