728x90


KMU-KISIA 정보보안 아카데미 재직자교육 -웹해킹방어를 위한 자바시큐어코딩 실무 교육을 듣고..

 1. 보안 약점과 보안 취약점의 차이는?  << 클릭


CH2 . 개발 보안 방법론

#시큐어 코딩

- "소스코드"의 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거

- 방법 : 코드검사 혹은 보안 솔루션도입.

# 소프트웨어 개발 보안

- "소프트웨어 개발 과정"에서 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거 하는 일련의 보안 활동

- 요구사항 분석

C(기밀성 1~3점) x I (무결성 1~3점) x A(가용성 1~3)  =1~27점 으로 등급별 관리

- 설계 

로그인 : 중요정보

관리자 페이지 : 중요정보, 별도 포트, 외부망

급여 : 경우에 따라. 공무원의 경우 이미 공개정보이기에 중요하지 않음  

- 구현

- 테스트


시큐어코딩 설명 쉬운 사이트 : http://blog.naver.com/acornzone/220689199858


#위협모델링

4단계 위협에 대한 우선순위결정

1. 예상피해

2. 재연확률 : 공격이 성공할 확률?

3. 공격 용이도 : 공격을 위해 얼마나 많은 노력이 필요한가

4. 영향을 받는 사용자

5. 발견 용이성 : 얼마나 쉽게 취약성 발견되는가?


CH3 . 웹 어플리케이션 보안을 위한 기본지식


실습 환경 구축

http://openeg.co.kr/672

접속 및 다운로드

1. SecureCoding.zip

C:\ 폴더에 압축해제

2. WindowXP_client ZIp

3. VMWareWorkstation download 설치

mySQL 이미 설치된 컴퓨터는 3306 port kill(http://blog.naver.com/ooa1769/220557706943)


파로스를 이용한 예제 실행

사용자 컴퓨터 <---> 파로스 <--->웹서버


#HTTP 와 웹 구조 이해

- HTTP(HyperText Transfer Protocol)

서버 컴퓨터와 요청(request)/응답(response) 프로토콜

- HTML head ; body 설명

- HTML body ; 실제 데이터

응답(response)은 바디부분만 준다. 


인코딩

# 인코딩 스키마

- 웹어플리케이션은 인코딩 스키마로 데이터를 안전하게 사용

- URL 인코딩: url에 글자들이 안전하게 서버 컴퓨터에 전달되도록 인코딩

                  , AJAX의 경우 내부에서 자동실행 

ex) < (url 인코딩값 : %3C)

- HTML 인코딩: HTML 문서에서 특별한 기능을 수행하는 문자들을 안전하게 브라우저에 출력

           ex) < (HTML인코딩값 : &lt;)

- BASE64 인코딩: a-z,A-Z,0-9  알파뉴메릭 64개의 문자로 안전하게 인코딩

자세한설명 : http://cocomo.tistory.com/290


크로스 사이트 스크립트

- 유일하게 클라이언트 페이지 공격함 (대부분 서버 공격)

- 사회 공학적 기법 : 사용자가 요청을 보내야 공격이 성립됨, 클라이언트 에게 응답이 되지않으면.. 공격이 성립되지 않는다. 


기법 1 : Reflective XSS  반사

클라이언트 입력 : ID "####"     <=====> 서버 출력 :  "####" 님 환영합니다. 

악성코드 받을수 있는 유알엘을 삽입하여 메일로 보냄. 서버는 (악성코드 포함한)"####" 님 환영합니다. 를 출력


기법2 : Stored XSS

id=1에 DB에 저장. DB저장된 정보가 조회 되어 실행


기법3: DOM XSS 개요

클라이언트 입력 파라메터 1: "####"     <=====>  다른 시첨에서 주어진 값을 실행할 때 문제 발생


해결방안

기법1 ==> 입력값.출력값 필터링으로 해결 (ex, SpringMVC 이용하는 경우)

==> 입력시 Fillter 에 XSS 설치시 기법1은 방어가능하나. 기법 2는 방어 한것이 아님.

==> 임의로 만든 로그인페이지 연결해서 아이디 패스워드를 얻을 수 있음


출력값

어디? Controller  (실습 fillter)

        View (실습  encoder)

어떻게? htmlEncoding

           XSSFilter를 적용  

어떤 방법? 화이트리스트 필터

            블랙리스트 필터

입력값 어디? Filter 컴포넌트, (실습 XSS Filter)

인터셉터 컴포넌트(용도가 다름... 어떤값이 들어왔을 때 계속할지 차단할지)

어떻게?  htmlEncoding

           XSSFilter를 적용  

 - 어떤 ? 화이트리스트 필

            블랙리스트 필터


칼리리눅스 ...악성코드 배포.... 공격서버 커넥션




el문 ${}


<p>${board.content}</p>

html 인코딩... p테크의 텍스트로 변경

lucy xss 는 화이트 xss

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet


크로스 사이트 필터를 또 뚫는...   <IMG SRC="javascript:alert('XSS');"> <LINK REL="stylesheet" HREF="javascript:alert('XSS');">  ....브라우저마다 다르다. 


필터는 실제로 체이닝 기능밖에 없음

Spring MVC ; HttpServletRequestWraper   ;실제데이터를 싸는 기능  head, body 값을 확인


http://openeg.co.kr/383

filter 웹 컨테이너


디스페쳐 서블릿 스프링 컨테이너

web.xml 설명

->인코딩필터 -> 멀티파트 필터 -> 크로스 사이트 필터 

멀티파트 필터 : 멀티파트 리졸빙... 


a=10&b=10,20,30 -> wraper

http://openeg.co.kr/383




# 정규식

- 자바의 정규표현식은 특정한 규칙을 가지는 문자를 표현하는데 사용하는 형식 언어이다.

- java의 기본 API

ex) 이메일 정규식 [A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}



# 캡슐화의 위배

- OOP의 특징 !! : 상속 다형성 캡슐화

- 캡슐화 : data가 외부에서 직접적으로 접근못함... public, private 의도가 깨질때

- 싱글톤일 때 배열, 콜렉션의 데이터 관리에 유의할 것!!

   :heap 에서 저장된 전역으로 사용되는 변수 값이 바뀌어 다른 쓰레드 영향받음

public class RoleTest {

public static void main(String[] args) {

Role r = Role.getInstance();

System.out.println(r.adminLists());

String[] a = r.getAdminRoles();

a[0]="홍길동";

System.out.println(r.adminLists());

}

}

해결방안 : get, set 메서드 구현시 복사하여 사용

public class Role {

    private String[] adminRoles = {"admin","root","manager"};

    private static Role role;

    private Role() {}

    

    public static Role getInstance() {

     if ( role == null ) {

     role=new Role();

     }

     return role;

    }    

public String[] getAdminRoles() {

String[] n = new String[adminRoles.length];

System.arraycopy(adminRoles,0,n,0,adminRoles.length);

return n;

}

생략


# 파인드시큐리티 버그 간단한 보안 툴 이용

- 일반 보안툴 :800개 ~1200개

- 파인드 시큐리티 버그 : 30개

정탐 , 오탐

- 보안 취약점과 보안약점은 검사하는 방법이 다름 , 최근 인공지능을 로깅으로 이용하려는 추세

- 오탐이 많아도 미탐이 적으면 사용. 미탐률이 적은게 가장중요.

findsecuritybugs

http://find-sec-bugs.github.io/download.htm

이클립스 플러그인에 저장


+ Recent posts