본문 바로가기
프로그래밍/WEB HACKING

[WEB HACKING] 제로보드 설치 / 제로보드 XSS( Cross Site Scripting ) 취약점

by B T Y 2017. 8. 30.
반응형

제로보드 설치 / 제로보드 XSS( Cross Site Scripting ) 취약점에 대해서 정리한다.



제로보드 설치



1. 클라이언트측 언어를 이용한 취약점


2. 서버측 언어를 이용한 취약점


3. SQL을 이용한 취약점




1. 제로보드 다운로드


  #> wget http://192.168.12.186/zboard.tar


    설치 경로: /var/www/html



2. 설치 페이지 접속


  웹 브라우저: http://ip/zboard/install.php



( 제로보드가 옛날에 나온거라서 설치를 진행하기 위해서는 이전에 설정을 해줘야 되는 부분이 여러가지가 존재한다.. )


    * 글자가 깨져서 나오거나 무한 refresh 되는 경우에는 설정을 통해서 수정이 가능하다.

      ( /etc/php.ini 설정파일에서 229 short_open_tag = On으로 변경 해주면

        <?php ?>가 아닌 <? ?> 블럭으로 php 실행 가능 )


      ( 무한 refresh의 경우에는 693 register_globals = On과 703 register_long_arrays = On 설정을 둘다 on 시켜준다 )



      ( 글자가 깨져서 나오는 경우에는 웹 브라우저에서 제공하는 방식과 인코딩 방식이 다른 이유이고 

        크롬의 경우 set character encoding 확장 프로그램을 통해 euc-kr로 변경해 준다 )



( set character encoding은 구글 웹스토어에서 쉽게 받을 수 있다 )



( 이 부분은 설치했던 zboard에 파일 권한을 chmod를 이용해서 707로 변경 시켜주면 된다 )


    * zboard는 파일 권한이 707이 되어야 실행이 가능하다.



( 위에 모든 부분을 진행하게 되면 드디어 설치를 시작 할수 있게 된다... )



3. schema.sql 파일 수정


1). 패스워드 필드의 길이


기존: password varchar(20)

변경: password varchar(50)


  - 3군데 모두 변경( 29, 234, 288 라인 )


    * 예전과는 달리 해쉬된 값의 길이 때문에 20바이트로는 길이가 부족하다.



2). 테이블 생성시 제약조건


기존: no int(11) default '0' not null auto_increment primary key

기존: no int(11) unsigned default '0' not null auto_increment primary key


변경: no int(11) not null auto_increment primary key


      - primary  key 설정과 default 설정을 동시에 할 수 없다.


  * 설정파일의 내용이 모두 정상적으로 수정이 되었다면 관리자 정보 입력 페이지로 넘어가게 된다.


  * zboard에서 게시판을 만들때 많은 취약점을 보기 위해서 HTML 기능과 Uploads 기능을 열어준다.



    * zboard에 관련된 mysql DB를 하나 새로 생성해줘야한다.

      ( 그리고 설정완료를 누르면 zboard가 오래된 버전이라 관리자 테이블 생성 실패가 나오는데 

        이 부분은 설정을 하나씩 해주면서 수정을 해줘야 한다 )



( 관리자 테이블 생성 실패가 뜨므로 schema.sql 파일에 설정을 수정 해준다 )



( schema.sql 파일 수정을 제대로 했다면 위와 같이 관리자 로그인 페이지가 뜨게 된다... )



( 처음에 만들었던 제로보드 관리자 아이디와 비밀번호로 로그인하게 되면 관리자 메인 페이지로 이동한다 )



( new_attack 이라는 그룹을 하나 만들어줬다... )



( 제로보드 게시판 취약점 점검을 위한 attack이라는 이름의 게시판을 하나 만들었다 )



( 여기서 보면 해당 GET 방식으로 데이터를 전송하고 id에는 게시판 이름으로 정했던 attack이 들어가 있는걸 확인 할 수 있다 )


( 게시판에 평범한 글 하나를 남겨본다... ) 




( 평소에 볼수 있는 평범한 게시판이다... 이제 이 게시판을 이용해서 XSS 취약점에 대해서 알아본다.. )






1. 클라이언트측 언어를 이용한 취약점


  - javascript, html


  - 사용자 웹 브라우저에서 실행

  - 불특정 다수를 대상으로 공격하기에 매우 적합


1). XSS( Cross Site Scripting )


  - 공격자가 실행하길 원하는 악의적인 코드를 사용자의 웹 브라우저를 통해서 실행 가능


  - 악성코드 유포, 실행 제어, ...


  - 1995년: 자바 스크립트 도입

  - 2000년: 자바 스크립트를 이용한 공격이 발견

  - 2005년: 악성코드 형태



2). 제로보드의 XSS 취약점


   * 게시글에서 제목, 본문 폼

     답변 게시글에서 제목, 본문 폼

     댓글 작성 폼

     받은쪽지함에서 제목과 본문폼에서 각각 XSS 취약점 발생


  ! 웹 해킹의 기본이자 가장 중요한 사항은 소스보기!!!

  ( 모든 입력에 대해서 취약점을 체크해야 한다 )


  !! 눈에 보이는 입력만이 전부가 아니다!!!




( 우선 게시글 본문에 XSS 취약점이 존재하는지 알아보기 위해서 <script> alert('XSS'); <script>를 이용했다..

이 코드가 실행 된다면 다른 악성 스크립트 실행 또한 가능하기 때문에 취약점이 존재한다고 보면 된다... )



( 들어오자마자 경고창으로 'xss'라는 문구가 뜬다... 게시글 본문에는 XSS 취약점이 존재한다.. )



( <script>는 일반 사용자들에 눈에는 보이지 않고 텍스트로 적은 내용만 보이는걸 확인 할 수 있다 )



( 눈에 보이는 부분 외에도 소스 코드 분석이 취약점을 발견하는데 가장 기본이고 중요하다!!! )



( 위와 같은 취약점은 서버 설정을 통해서 일어나고 서버의 디렉토리 구조나 어떤 파일들이 있는지를 알 수 있어 

서버 설정에 신경써줘야 한다.. )




반응형

댓글