본문 바로가기

모의해킹

[BeeBox]웹해킹 HTML 인젝션 - Stored(POST)

*가상환경 구축 후 실습을 진행할 것을 권고드리며 대외 서버 및 홈페이지에 해킹 시도는 불법입니다.

XSS Reflected GET

- 공격자는 XSS 스크립트를 취약점이 있는 웹 사이트의 게시글에 등재하고 웹 서버 데이터베이스에 악성 스크립트를 삽입한다. 그 후 다른 사용자가 공격자의 게시글에 있는 스크립트를 활성화 시 저장된 악성 스크립트 내용을 확인한 사용자의 PC에 HTML 태그가 실행되는 공격 이다.

 

공격 시나리오.

  1. 공격자가 웹 서버 DB에 악성 스크립트를 삽입한다.
  2. 희생자는 공격자가 악성 스크립트를 삽입한 게시글을 접근한다.
  3. 희생자가 웹 서버에 삽입된 스크립트를 읽고 실행한다.
  4. 희생자는 공격자가 삽입한 악성스크립트의 코드를 실행하여 공격자가에 희생자 정보를 전달한다.

 

cesppa.com

<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>

이름을 기입하여 php 파일에 전송하는 스크립트

악성스크립트 삽입

=> 게시글에 글을 삽입 시 서버에서 입력값 필터링을 사용하여 스크립트가 삽입되어 있어도 실행되지 않게 하여야 하는데 위의 게시글을 스크립트 필터링을 하지 않은 상태로서 스크립트가 실행되어 게시글 본문에 입력값 스크립트가 삽입된것을 확인할 수 있다.

결론: XSS Stored를 방지하기 위해 서버 홈페이지에서 입력값을 검증하는 과정이 중요하며 이에 대한 방법으로는 특수문자 필터링, 보안함수 사용, 화이트/블랙 리스트 사용하여 검증된 스크립트만 허용 등이 있다.